1 添加Spring MVC所需的jar包.

2 创建一个以下项目结构的springmvc项目

3 web.xml的配置如下:

<?xmlversion="1.0"encoding="UTF-8"?>

<web-appversion="3.0"

xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

   http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

<servlet>

<servlet-name>springmvc</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>springmvc</servlet-name>

<!--structs用/*,springmvc不能是/*类型,要是*.xxx类型
-->

<url-pattern>*.do</url-pattern>

</servlet-mapping>

</web-app>

4 springmvc-servlet.xml的配置,这里的springmvc-servlet.xml名字默认是web.xml文件中的“映射名称”+“-”+“servlet”+”.xml”文件。

<?xmlversion="1.0"encoding="UTF-8"?>

<beansxmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:mvc="http://www.springframework.org/schema/mvc"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"

xsi:schemaLocation="http://www.springframework.org/schema/beans

       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

      
http://www.springframework.org/schema/mvc

       http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd

       http://www.springframework.org/schema/context

       http://www.springframework.org/schema/context/spring-context-3.0.xsd

       http://www.springframework.org/schema/aop

       http://www.springframework.org/schema/aop/spring-aop-3.0.xsd

       http://www.springframework.org/schema/tx

       http://www.springframework.org/schema/tx/spring-tx-3.0.xsd ">

<!--

如果不配置映射处理器会采用默认的映射处理器BeanNameHandlerMapping

下面可以通过:http://localhost:8080/springmvc/hello.do来访问

-->

<beanid="testController"name="/hello.do"class="com.rl.controller.TestController"/>

<!--定义视图解析器
-->

<bean

class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<propertyname="prefix"value="/WEB-INF/jsp/"></property>

<propertyname="suffix"value=".jsp"></property>

</bean>

<beanclass="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

<propertyname="mappings">

<props>

<!--通过:http://localhost:8080/springmvc/hello1.do可以访问
-->

<propkey="/hello1.do">testController</prop>

<!--通过:http://localhost:8080/springmvc/toIndexBean.do可以访问
-->

<propkey="/toIndexBean.do">toIndexBean</prop>

</props>

</property>

</bean>

<bean

class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>

<!--使用Controller的类名的首字符小写加.do
-->

<bean

class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"></bean>

<beanid="toIndexBean"name="/toIndex.do"

class="org.springframework.web.servlet.mvc.ParameterizableViewController">

<!--也需要使用视图解析器来解析
-->

<propertyname="viewName"value="jsp1/index"></property>

</bean>

<!--通过:http://localhost:8080/springmvc/toIndex1.do访问
-->

<beanname="/toIndex1.do"

class="org.springframework.web.servlet.mvc.ParameterizableViewController">

<!--

也需要使用视图解析器来解析,下面的实际访问的是地址是:

上面的prefix
+下面的value +上面的suffix

-->

<propertyname="viewName"value="jsp1/index"></property>

</bean>

<!--

访问方式是:http://localhost:8080/springmvc/comm.do?id=2&name=toto&XXXXX=方式

在控制台可以看到输出结果

-->

<beanname="/comm.do"class="com.rl.controller.CommController">

<!--指定Controller中的object类型的参数上的数据类型
-->

<propertyname="commandClass"value="com.rl.model.Person"></property>

</bean>

<!--

这种可以做简单的类型转换,如果数据类型不一致,它会返回到页面中

访问路径是:http://localhost:8080/springmvc/form.do-->

<beanname="/form.do"class="com.rl.controller.FormController">

<!--指定Controller中Object类型的参数上的数据类型
-->

<propertyname="commandClass"value="com.rl.model.Person"></property>

<propertyname="formView"value="form"></property>

<propertyname="successView"value="success"></property>

</bean>

</beans>

5 TestController的代码如下:

package com.rl.controller;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;

import org.springframework.web.servlet.mvc.AbstractController;

/**

* @brief TestController.java springmvc中Controller层

* @attention

* @author toto

* @date 2014-12-28

* @note begin modify by涂作权

*/

public class TestController extends AbstractController {

@Override

protected ModelAndView handleRequestInternal(HttpServletRequest arg0,

HttpServletResponse arg1) throws Exception {

System.out.println("hello springmvc");

//视图解析器在解析ModelAndView的时候会自动追加前缀和后缀,

//如果视图解析器的前缀下依然有目录结构,在ModelAndView中

//来指定前缀和后缀直接的一段路径

return new ModelAndView("jsp1/index");

}

}

浏览器访问地址:http://localhost:8080/springmvc/hello.do结果如下:

浏览器访问地址:http://localhost:8080/springmvc/hello1.do结果如下:

浏览器访问地址:http://localhost:8080/springmvc/toIndexBean.do结果如下:

6 Person的javaBean代码如下:

package com.rl.model;

import java.sql.Date;

/**

*@brief
Person.java person对应的JavaBean

*@attention

*@authortoto-pc

*@date
2014-12-28

*@note
begin modify by涂作权

*/

publicclass
Person {

Integer
id;

String
name;

Integer
age;

String
address;

/**

*
修改所有同名的变量Shift +Alt + R

*/

Date
birthday;

/**

*
@return the id

*/

public
Integer getId() {

returnid;

}

/**

*
@param id the id to set

*/

publicvoid
setId(Integer id) {

this.id
= id;

}

/**

*
@return the name

*/

public
String getName() {

returnname;

}

/**

*
@param name the name to set

*/

publicvoid
setName(String name) {

this.name
= name;

}

/**

*
@return the age

*/

public
Integer getAge() {

returnage;

}

/**

*
@param age the age to set

*/

publicvoid
setAge(Integer age) {

this.age
= age;

}

/**

*
@return the address

*/

public
String getAddress() {

returnaddress;

}

/**

*
@param address the address to set

*/

publicvoid
setAddress(String address) {

this.address
= address;

}

/**

*
@return the birthday

*/

public
Date getBirthday() {

returnbirthday;

}

/**

*
@param birthday the birthday to set

*/

publicvoid
setBirthday(Date birthday) {

this.birthday
= birthday;

}

}

7 CommController的代码如下:

package com.rl.controller;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.springframework.validation.BindException;

import org.springframework.web.servlet.ModelAndView;

import org.springframework.web.servlet.mvc.AbstractCommandController;

import com.rl.model.Person;

/**

* @brief CommController.java

* @attention

* @author toto

* @date 2014-12-28

* @note begin modify by涂作权

*/

@SuppressWarnings("deprecation")

public class CommController extends AbstractCommandController {

/**

* Object的参数用来接受实体参数,Person中的属性的接收传

*
递参数的名字一定要和Person中的set方法后名的字符串匹配,

*
大小写不区分

*/

@Override

protected ModelAndView handle(HttpServletRequest arg0,

HttpServletResponse arg1, Object obj, BindException arg3)

throws Exception {

Person p = (Person) obj;

System.out.println("id:" + p.getId() + " name:" + p.getName());

return new ModelAndView("index");

}

}

浏览器中的地址:http://localhost:8080/springmvc/comm.do?id=2&name=toto结果如下:

控制台中的内容如下:

8 FormController的代码如下:

package com.rl.controller;

import java.sql.Date;

import java.text.SimpleDateFormat;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.propertyeditors.CustomDateEditor;

import org.springframework.web.bind.ServletRequestDataBinder;

import org.springframework.web.servlet.mvc.SimpleFormController;

@SuppressWarnings("deprecation")

public class FormController extends SimpleFormController {

@Override

protected void doSubmitAction(Object command) throws Exception {

System.out.println(command);

}

/**

*
注册时间类型的属性转换器

*/

@Override

protected void initBinder(HttpServletRequest request,

ServletRequestDataBinder binder) throws Exception {

binder.registerCustomEditor(Date.class,

new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true));

}

}

浏览器中的地址:http://localhost:8080/springmvc/form.do结果如下:

01基于配置文件方式的SpringMVC,三种HandlerMapping,三种控制器的更多相关文章

  1. 04springMVC结构,mvc模式,spring-mvc流程,spring-mvc的第一个例子,三种handlerMapping,几种控制器,springmvc基于注解的开发,文件上传,拦截器,s

     1. Spring-mvc介绍 1.1市面上流行的框架 Struts2(比较多) Springmvc(比较多而且属于上升的趋势) Struts1(即将被淘汰) 其他 1.2  spring-mv ...

  2. SpringMVC入门(基于XML方式实现)

    ----------------------siwuxie095 SpringMVC 入门(基于 XML 方式实现) (一)搭建 SpringMVC 环境 1.先下载相关库文件,下载链接: (1)ht ...

  3. SpringMVC入门(基于注解方式实现)

    ---------------------siwuxie095                             SpringMVC 入门(基于注解方式实现)         SpringMVC ...

  4. SpringMVC详解(三)------基于注解的入门实例

    前两篇博客我们讲解了基于XML 的入门实例,以及SpringMVC运行的详细流程.但是我们发现基于 XML 的配置还是比较麻烦的,而且,每个 Handler 类只能有一个方法,在实际开发中肯定是不可能 ...

  5. 转载 SpringMVC详解(三)------基于注解的入门实例

    目录 1.在 web.xml 文件中配置前端处理器 2.在 springmvc.xml 文件中配置处理器映射器,处理器适配器,视图解析器 3.编写 Handler 4.编写 视图 index.jsp ...

  6. SpringMVC 返回json的两种方式

    前后台数据交互使用json是一种很重要的方式.本文主要探讨SpringMVC框架使用json传输的技术. 请注意,本文所提到的项目使用Spring 版本是4.1.7,其他版本在具体使用上可能有不一样的 ...

  7. Spring(二十):Spring AOP(四):基于配置文件的方式来配置 AOP

    基于配置文件的方式来配置 AOP 前边三个章节<Spring(十七):Spring AOP(一):简介>.<Spring(十八):Spring AOP(二):通知(前置.后置.返回. ...

  8. springMVC返回数据的四种方式

    转自:https://blog.csdn.net/itcats_cn/article/details/82119673 springMVC返回数据的四种方式:第一种,通过request.setAttr ...

  9. 转-springAOP基于XML配置文件方式

    springAOP基于XML配置文件方式 时间 2014-03-28 20:11:12  CSDN博客 原文  http://blog.csdn.net/yantingmei/article/deta ...

随机推荐

  1. ●HDU 6021 MG loves string

    题链: http://acm.hdu.edu.cn/showproblem.php?pid=6021 题解: 题意:对于一个长度为 N的由小写英文字母构成的随机字符串,当它进行一次变换,所有字符 i ...

  2. bzoj 4025: 二分图

    Description 神犇有一个n个节点的图.因为神犇是神犇,所以在T时间内一些边会出现后消失.神犇要求出每一时间段内这个图是否是二分图.这么简单的问题神犇当然会做了,于是他想考考你. 解题报告: ...

  3. EtherChannel(PAgP、LACP)基本配置--端口聚合--(转)

    转自 http://blog.sina.com.cn/s/blog_635e1a9e01017msv.html EtherChannel EtherChannel(以太通道)也叫端口聚合或链路聚合,特 ...

  4. Linux学习之CentOS(二十)------vi/vim 按键说明

    vi/vim 按键说明 除了上面简易范例的 i, Esc, :wq 之外,其实 vim 还有非常多的按键可以使用. 第一部份:一般模式可用的光标移动.复制粘贴.搜索替换等 移动光标的方法 h 或 向左 ...

  5. Eclipse插件安装4种方法

    第一种:直接复制法 假设Eclipse的安装目录在C:\eclipse,解压下载的eclipse 插件或者安装eclipse 插件到指定目录AA(如:c:\AA)文件夹,打开AA 文件夹,在AA文件夹 ...

  6. idea-JSP out.println报错问题

    <%! out.println("xxxx");%> 上面是错误的,<%!%>是声明变量是使用,而不是进行逻辑输出! <% out.println(x ...

  7. TCP/IP学习笔记__mbuf

    Socket发送和接收数据都是写入和读取mbuf(存储器缓存)来完成的.下面着重介绍下Sendto函数与mbuf的关系: 以UDP协议为例: 1.UDP的输出执行过程: UDP的输出执行过程 2.协议 ...

  8. 如何用cmd通过sublime打开文件?

    sublime 提供了专门的命令工具subl.exe,就在它的安装目录之下,讲安装目录配置到系统环境变量中就OK了.具体如下: 1.找到sublime安装路径 如我的默认路径:C:\Program F ...

  9. MySQL数据库优化的八种方式

    引言: 关于数据库优化,网上有不少资料和方法,但是不少质量参差不齐,有些总结的不够到位,内容冗杂 偶尔发现了这篇文章,总结得很经典,文章流量也很大,所以拿到自己的总结文集中,积累优质文章,提升个人能力 ...

  10. hiredis的各种windows版本

    hiredis的各种windows版本(金庆的专栏 2016.12)hiredis 是内存数据库 redis 的客户端C库, 不支持Windows.hiredis的Windows移植版本有许多:des ...