01基于配置文件方式的SpringMVC,三种HandlerMapping,三种控制器
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/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 --> <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 *@attention *@authortoto-pc *@date *@note */ publicclass Integer String Integer String /** * */ Date /** * */ public returnid; } /** * */ publicvoid this.id } /** * */ public returnname; } /** * */ publicvoid this.name } /** * */ public returnage; } /** * */ publicvoid this.age } /** * */ public returnaddress; } /** * */ publicvoid this.address } /** * */ public returnbirthday; } /** * */ publicvoid this.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中的属性的接收传 * * */ @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,三种控制器的更多相关文章
- 04springMVC结构,mvc模式,spring-mvc流程,spring-mvc的第一个例子,三种handlerMapping,几种控制器,springmvc基于注解的开发,文件上传,拦截器,s
1. Spring-mvc介绍 1.1市面上流行的框架 Struts2(比较多) Springmvc(比较多而且属于上升的趋势) Struts1(即将被淘汰) 其他 1.2 spring-mv ...
- SpringMVC入门(基于XML方式实现)
----------------------siwuxie095 SpringMVC 入门(基于 XML 方式实现) (一)搭建 SpringMVC 环境 1.先下载相关库文件,下载链接: (1)ht ...
- SpringMVC入门(基于注解方式实现)
---------------------siwuxie095 SpringMVC 入门(基于注解方式实现) SpringMVC ...
- SpringMVC详解(三)------基于注解的入门实例
前两篇博客我们讲解了基于XML 的入门实例,以及SpringMVC运行的详细流程.但是我们发现基于 XML 的配置还是比较麻烦的,而且,每个 Handler 类只能有一个方法,在实际开发中肯定是不可能 ...
- 转载 SpringMVC详解(三)------基于注解的入门实例
目录 1.在 web.xml 文件中配置前端处理器 2.在 springmvc.xml 文件中配置处理器映射器,处理器适配器,视图解析器 3.编写 Handler 4.编写 视图 index.jsp ...
- SpringMVC 返回json的两种方式
前后台数据交互使用json是一种很重要的方式.本文主要探讨SpringMVC框架使用json传输的技术. 请注意,本文所提到的项目使用Spring 版本是4.1.7,其他版本在具体使用上可能有不一样的 ...
- Spring(二十):Spring AOP(四):基于配置文件的方式来配置 AOP
基于配置文件的方式来配置 AOP 前边三个章节<Spring(十七):Spring AOP(一):简介>.<Spring(十八):Spring AOP(二):通知(前置.后置.返回. ...
- springMVC返回数据的四种方式
转自:https://blog.csdn.net/itcats_cn/article/details/82119673 springMVC返回数据的四种方式:第一种,通过request.setAttr ...
- 转-springAOP基于XML配置文件方式
springAOP基于XML配置文件方式 时间 2014-03-28 20:11:12 CSDN博客 原文 http://blog.csdn.net/yantingmei/article/deta ...
随机推荐
- 2015 多校联赛 ——HDU5303(贪心)
Delicious Apples Time Limit: 5000/3000 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Other ...
- 对于DFT频谱泄漏问题的研究
问题简介: 对于频率为fs的正弦序列,它的频谱应该只是在fs处有离散谱.但是,在实际利用DFT求它的频谱时,对时域做了截断,结果使信号的频谱不只是在fs处有离散谱,而是在以fs为中心的频带范围内都有谱 ...
- node安装教程
推荐安装教程博客: https://www.cnblogs.com/zhouyu2017/p/6485265.html
- Go 语言结构体
Go 语言中数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型. 结构体是由一系列具有相同类型或不同类型的数据构成的数据集合. 结构体表示一项记录,比如保存图书馆的书籍记录,每 ...
- PHP 是什么
PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言. PHP(外文名:PHP: Hypertext Preprocessor,中文名:"超文本预处理器")是一种通用开源脚本 ...
- 六星经典CSAPP-笔记(7)加载与链接(上)
六星经典CSAPP-笔记(7)加载与链接 1.对象文件(Object File) 1.1 文件类型 对象文件有三种形式: 可重定位对象文件(Relocatable object file):包含二进制 ...
- Android简易实战教程--第三十九话《Chronometer实现倒计时》
Android提供了实现按照秒计时的API,今天就是用这个API实现简单的倒计时. 来个布局: <?xml version="1.0" encoding="utf- ...
- LAB颜色空间各通道的取值范围
简介 LAB颜色空间在计算机视觉中经常被使用,知道L,A,B三个通道的取值范围有一定的意义. OpenCV获取LAB取值范围 下面是一段实验代码,用于获取LAB的取值范围. 基本思路是,排列组合所有R ...
- [OpenCV]拓展图像边界
图像处理中经常遇到使用当前像素邻的像素来计算当前像素位置的某些属性值,这样就会导致边界像素处越界访问,一般有两种方法解决这种问题:只对不越界的像素进行处理:对图像边界进行拓展,本文主要介绍如何使用Op ...
- Android TV开发总结(五)TV上屏幕适配总结
前言:前面几篇总结一些TV上的小Sample,开源到GitHub:https://github.com/hejunlin2013/TVSample, 点击链接,可以持续关注.今天总结下TV上屏幕适配. ...