Spring_MVC_3.0实战指南
Spring_FrameWork3.0开发教程

Spring FrameWork3.0开发教程目录第1章 SPRING FRAMEWORK概述 (4)1-1节介绍S PRING F RAMEWORK (4)1-1-1节依赖注入与控制反转 (4)1-1-2节模块组成 (5)1-1-3节 Spring的应用场景 (7)第2章 SPRING FRAMEWORK新特性与改进 (20)2-1节J A V A 5 (20)2-2节经过完善的文档 (20)2-3节新的文章和样例 (20)2-4节新的模块组织与项目组件 (20)2-5节新特性 (21)2-5-1节为Java 5更新的API (21)2-5-2节 Spring表达式 (22)2-5-3节控制反转容器 (23)2-5-4节通用的类型转换和数据格式化系统 (23)2-5-5节数据层 (23)2-5-6节 Web层 (23)2-5-7节声明校验模型 (23)2-5-8节对J2EE 6的支持 (23)2-5-9节对嵌入式数据库的支持 (23)第3章核心技术 (23)3-1节I O C容器 (24)3-1-1节关于spring IoC容器与组件 (24)3-1-2节容器概述 (24)3-1-3节 Bean概述 (30)3-1-4节依赖性 (35)3-1-5节 Bean范围 (41)3-1-6节自定义bean的状态 (42)3-1-7节 Bean定义依赖性 (43)3-1-8节容器的扩展点 (43)3-1-9节基于注释的元数据配置 (43)3-1-10节类路径查找和可管理bean (43)3-1-11节基于java的容器配置 (44)3-1-12节注册LoadTimeWeaver (45)3-1-13节 ApplicationContext更多功能 (46)3-1-14节 BeanFactory (46)3-2节资源 (46)3-2-1节介绍 (46)3-2-2节 Resource接口 (46)3-2-3节内置的Resource应用 (46)3-2-4节 ResourceLoader (47)3-2-5节 ResourceLoaderAware接口 (47)3-2-6节 Resources依赖 (47)3-2-7节 Application contexts和资源路径 (47)3-3节校验,数据绑定和类型转换 (47)3-3-1节介绍 (47)3-3-2节使用Validator接口 (48)3-3-3节分析代码 (48)3-3-4节 BeanWrapper和bean处理 (48)3-3-5节 Setting and getting (48)3-3-6节 PropertyEditor (48)3-4节S PRING 表达式(S P EL) (48)3-4-1节介绍 (48)3-4-2节特性说明 (48)3-4-3节使用Expression接口 (48)3-4-4节定义bean的表达式支持 (48)3-4-5节语言参考 (48)3-4-6节相关例子 (50)3-5节AOP编程 (50)3-6节S PRING AOP API S (50)3-7节测试 (50)第4章数据访问 (50)4-1节事务管理 (50)4-2节DAO支持 (50)4-3节使用JDBC进行数据访问 (50)4-4节ORM数据访问 (50)4-5节O/X M APPERS (50)第5章 WEB (50)5-1节W EB MVC FRAMEWORK (51)5-2节V IEW TECHNOLOGIES (51)5-3节与其他的WEB框架进行整合 (51)5-4节P ORTLET MVC框架 (51)第6章整合 (51)6-1节远程访问与WEB服务 (51)6-2节EJB整合 (51)6-3节JMS整合 (51)6-4节JMX (51)6-5节JCA CCI (51)6-6节E MAIL (51)6-7节T ASK E XECUTION AND S CHEDULING (51)6-8节动态语言支持 (51)第1章Spring Framework概述Spring Framework是一个轻量级的解决方案,可以让你很容易的建立自己的应用程序。
SpringMVC详细示例实战教程(较全开发教程)

SpringMVC详细⽰例实战教程(较全开发教程)SpringMVC学习笔记----⼀、SpringMVC基础⼊门,创建⼀个HelloWorld程序1.⾸先,导⼊SpringMVC需要的jar包。
2.添加Web.xml配置⽂件中关于SpringMVC的配置<!--configure the setting of springmvcDispatcherServlet and configure the mapping--><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc-servlet.xml</param-value></init-param><!-- <load-on-startup>1</load-on-startup> --></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>/</url-pattern></servlet-mapping>3.在src下添加springmvc-servlet.xml配置⽂件<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:context="/schema/context"xmlns:mvc="/schema/mvc"xsi:schemaLocation="/schema/beans /schema/beans/spring-beans.xsd /schema/context /schema/context/spring-context-4.1.xsd/schema/mvc /schema/mvc/spring-mvc-4.1.xsd"><!-- scan the package and the sub package --><context:component-scan base-package="test.SpringMVC"/><!-- don't handle the static resource --><mvc:default-servlet-handler /><!-- if you use annotation you must configure following setting --><mvc:annotation-driven /><!-- configure the InternalResourceViewResolver --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"id="internalResourceViewResolver"><!-- 前缀 --><property name="prefix" value="/WEB-INF/jsp/" /><!-- 后缀 --><property name="suffix" value=".jsp" /></bean></beans>4.在WEB-INF⽂件夹下创建名为jsp的⽂件夹,⽤来存放jsp视图。
springMVC整合DWR配置与简单实例

SpringMVC整合DWR3.0 与实例从网上找了好多资料,都不完整,花了好长时间才弄好,现在整理一下,给朋友们分享一下,也希望能提出问题,完善项目。
1、首先要下载DWR3.0 JAR包(这个是必须的,不多解释哈)DWR3.0下载地址/detail/qfq1990/78668072、配置项目web.xml文件<servlet><servlet-name>springMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>springMVC</servlet-name><url-pattern>/</url-pattern></servlet-mapping><servlet-mapping><servlet-name>springMVC</servlet-name><url-pattern>/dwr/*</url-pattern></servlet-mapping>3、配置springMVC-servlet.xml文件<beans xmlns="/schema/beans"xmlns:context="/schema/context"xmlns:p="/schema/p"xmlns:mvc="/schema/mvc"xmlns:xsi="/2001/XMLSchema-instance"xmlns:dwr="/schema/spring-dwr"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans-3.2.xsd/schema/context/schema/context/spring-context.xsd/schema/spring-dwr/schema/spring-dwr-3.0.xsd/schema/mvc/schema/mvc/spring-mvc-3.2.xsd"><bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"> <property name="mediaTypes"><map><entry key="json" value="application/json"></entry><entry key="xml" value="text/xml"></entry><entry key="htm" value="text/html"></entry></map></property></bean><context:component-scan base-package="com.pfxt.controller" /><mvc:annotation-driven /><mvc:resources mapping="/resources/**" location="/WEB-INF/resources/" /><!-- 对模型视图名称的解析,在请求时模型视图名称添加前后缀--><beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="viewClass"value="org.springframework.web.servlet.view.JstlView" /><property name="prefix" value="/WEB-INF/jsp/" /><property name="suffix" value=".jsp" /></bean><!-- DWR配置--><bean id="simpleUrlHandlerMapping" class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" /><!-- 要求dwr在spring容器中检查拥有@RemoteProxy 和@RemoteMethod注解的类。
springMVC

பைடு நூலகம்
"param1":表示请求必须包含名为param1的请求参数。 "!param1":表示请求不能包含名为param1的请求参数。 "param1!=value1":表示请求包含名为param1的请求参数,但其值 不能为 value1。{"param1=value1","param2"}:请求必须包含名为param1 和 param2的两个请求参数,且param1参数的值必须为value1。
GET
说明
使用GET方法检索一个表述(representation)——也 就是对资源的描述。多次执行同一GET请求,不会对系 统造成影响,GET方法具有幂等性[指多个相同请求返回 相同的结果]。GET请求可以充分使用客户端的缓存。 POST方法,通常表示“创建一个新资源”,但它既不 安全也不具有幂等性(多次操作会产生多个新资源)。 DELETE,表示删除一个资源,你也可以一遍又一遍地 操作它,直到得出结果:删除不存在的东西没有任何问 题 幂等性同样适用于PUT(基本的含义是“更新资源数据, 如果资源不存在的话,则根据此URI创建一个新的资 源”)
@RequestMapping(value="/handle1") public String handle1(@RequestParam("userName") String userName, @RequestParam("password") String password, @RequestParam("realName") String realName){ ... }
Spring3MVC搭建全过程

用了大半年的Spring MVC3.0,用着感觉不错。
简单写一个搭建Spring MVC3.0的流程(以Spring3.0.5为列),数据库交互使用spring JDBC Template,附件有项目(没有jar包)。
整个项目架构如下图所示:1、去官网下载3.0.5所有jar包,所需jar包,见附件图片,每个jar包得用处如下:org.springframework.aop- 3.0.0.RELEASE--------------------Spring的面向切面编程,提供AOP(面向切面编程)实现org.springframework.asm- 3.0.0.RELEASE--------------------Spring独立的asm程序,相遇Spring2.5.6的时候需要asmJar 包.3.0开始提供他自己独立的asmJarorg.springframework.aspects- 3.0.0.RELEASE----------------Spring提供对AspectJ框架的整合\org.springframework.beans- 3.0.0.RELEASE------------------SpringIoC(依赖注入)的基础实现org.springframework.context.support- 3.0.0.RELEASE--------Spring-context的扩展支持,用于MVC方面org.springframework.context- 3.0.0.RELEASE----------------Spring提供在基础IoC功能上的扩展服务,此外还提供许多企业级服务的支持,如服务、任务调度、JNDI定位、EJB集成、远程访问、缓存以及各种视图层框架的封装等org.springframework.core- 3.0.0.RELEASE-------------------Spring3.0的核心工具包org.springframework.expression- 3.0.0.RELEASE-------------Spring表达式语言org.springframework.instrument.tomcat- 3.0.0.RELEASE------Spring3.0对Tomcat的连接池的集成org.springframework.instrument- 3.0.0.RELEASE-------------Spring3.0对服务器的代理接口org.springframework.jdbc- 3.0.0.RELEASE-------------------对JDBC的简单封装org.springframework.jms- 3.0.0.RELEASE--------------------为简化JMS API的使用而作的简单封装org.springframework.orm- 3.0.0.RELEASE--------------------整合第三方的ORM框架,如hibernate,ibatis,jdo,以及spring的JPA实现org.springframework.oxm-3.0.0.RELEASE--------------------Spring 对Object/XMl的映射支持,可以让Java与XML之间来回切换org.springframework.test- 3.0.0.RELEASE--------------------对Junit等测试框架的简单封装org.springframework.transaction- 3.0.0.RELEASE-------------为JDBC、Hibernate、JDO、JPA等提供的一致的声明式和编程式事务管理org.springframework.web.portlet- 3.0.0.RELEASE-------------SpringMVC的增强org.springframework.web.servlet- 3.0.0.RELEASE-------------对JEE6.0 Servlet3.0的支持org.springframework.web.struts- 3.0.0.RELEASE--------------整合Struts的时候的支持org.springframework.web- 3.0.0.RELEASE--------------------SpringWeb下的工具包2、借鉴spring官网写法,建立一个src-resources Source Folder,再新建目录META-INF,存放springmvc-servlet.xml和jdbc-context.xml文件(事务和数据库连接池的管理);以及database.properties和log4j.properties。
Spring MVC3注解学习之简单入门范例

Spring MVC3注解学习之简单入门范例文章均为原创,转载请注明出处。
本文地址:/post/430.html之前做Web应用都是在用Struts2,觉得功能强大,效率也能提升很多,所以一直都很喜欢Struts。
虽然也曾经在接手前人遗留的项目时遭遇过Spring MVC,不过不知道是前人用的不好,还是自己水平差,亦或者是Spring MVC(那个时候还是2)本身的问题,让Spring MVC给自己留下了很不好的印象:配置文件繁琐、功能一般甚至简陋、不能够在开发效率上与Struts2媲美等等问题,致使自己一直以来都是带着偏见看待Spring MVC的,也因此一直都没有再去尝试过。
最近是一次偶然的机会,再次正面遭遇Spring MVC,不过这次它改头换面,由2升级到3了,看到别人基于Spring MVC注解方式写出来的简洁流畅的代码后,惊叹于Spring MVC3的注解驱动能力之强大,代码之简洁,觉得自己以前的偏见简直就是愚昧至极,不由地暗自对Spring MVC有了好感,打算实实在在尝试一把。
不过自己之前对Spring MVC确实不熟,加之这次升级的内容有点多,所以我找来了一份很好的入门文档《Spring3_MVC注解教程》作为自己的领路人。
这份PPT做的很好,本文也是在此基础上有感而发的,在此感谢作者陈雄华先生的辛勤劳动和无私奉献!本文所示代码均基于最新版SpringFrameword3.2.3,请知悉。
Spring MVC框架简介∙支持REST风格的URL∙添加更多注解,可完全注解驱动∙引入HTTP输入输出转换器(HttpMessageConverter)∙和数据转换、格式化、验证框架无缝集成∙对静态资源处理提供特殊支持∙更加灵活的控制器方法签名,可完全独立于Servlet API Spring MVC框架结构框架的实现者如何在应用中使用Spring-MVC?1.在应用中添加Spring框架支持;2.在web.xml中配置Spring-MVC的请求转发器(前端控制器)3.编写Spring-MVC的配置文件4.将任意JavaBean通过注解配置成Controller(控制器)并注解其中的方法5.完成步骤简单明了,接下来我们一步一步详细说明:在应用中加入Spring支持:因为Spring-MVC是属于SpringFramework的一部分,因此要在应用中使用Spring-MVC,就必须以引入Spring基础框架为前提,另外还包括beans、context、aop、web组件,将上述组件的jar及其依赖添加到buildpath下,就算完成了为应用添加Spring框架支持的工作,然后在web.xml中配置Spring的监听器,代码如下:另外,因为是在web应用中使用Spring,因此建议配置一个名为org.springframework.web.util.IntrospectorCleanupListener的监听器来处理资源回收的工作:再配置一个编码过滤器在web.xml中配置Spring-MVC的请求转发器(前端控制器)在应用中使用Spring-MVC比较简单,除了需要引入相关依赖库外,还需要在web.xml配置Spring-MVC的请求转发器,代码如下:编写Spring-MVC的配置文件在上述代码中,我们告知Spring-MVC的请求转发器我们的mvc配置在classpath:mvc-config.xml中,因此我们需要在该文件中正确描述我们的mvc配置信息,配置代码如下:将任意JavaBean通过注解配置成Controller(控制器)并注解其中的方法本文主要示范如何使用注解为应用添加Spring-MVC支持,因此本文中的所有MVC映射配置都采用注解方式,范例Controller如下所示:为了是上面的Controller能够正常使用,我们还需要在WebRoot下创建Controller 中使用的逻辑视图对应的视图文件,以上例中create为例,我们在WEB-INF/jsp/目录下新建jsp文件,内容如下:完成上述四个步骤后,将工程部署到任意web容器(本文采用tomcat6.0),然后启动,即可在浏览器中浏览映射出来的地址,如果需要在记录详细的Spring调试信息,则可以通过配置log4j来实现(这里多说一句,Spring的调试信息真的很详细很丰富,通过分析日志,将有助于我们快速理解和掌握Spring-MVC的工作原理)。
Spring3.0 MVC 中文教程

Spring3 MVC - 3到Spring MVC框架简介Spring3 MVC框架简介Spring MVC是Spring的框架的Web组件。
它提供了丰富的功能,为建设强大的Web应用程序。
Spring MVC框架的架构,并在这样的高度可配置的方式,每一块的逻辑和功能设计。
此外Spring可以毫不费力地与其他流行的Web框架,如Struts,WebWork的,的Java Server Faces和Tapestry集成。
这意味着,你甚至可以告诉Spring使用Web框架中的任何一个。
比Spring更不紧耦合的servlet或JSP 向客户端呈现视图。
喜欢速度与其他视图技术集成,Freemarker的,Excel或PDF现在也有可能。
Spring3.0 MVC系列∙第1部分:到Spring 3.0 MVC框架简介∙第2部分:在Spring 3.0 MVC创建Hello World应用程序∙第3部分:在Spring 3.0 MVC的形式处理∙第4部分:Spring3 MVC的Tiles Support与Eclipse中的例子插件教程∙第5部分:Spring3 MVC的国际化及本地化教程与范例在Eclipse∙第6部分:Spring3 MVC示例教程Spring主题∙第7部分:创建Spring3 MVC Hibernate 3的示例在Eclipse中使用Maven的在Spring Web MVC,你可以使用任何对象作为命令或表单支持对象,你不需要实现框架特定的接口或基类。
Spring的数据绑定是高度灵活的:例如,将验证错误类型不作为应用系统错误,可以通过评估的不匹配。
因此,你不必重复你的业务对象的属性,简单的无类型的字符串,在表单对象仅仅是为了处理无效的意见,或正确转换的字符串。
相反,它往往是最好直接绑定到业务对象。
请求处理生命周期Spring的Web MVC框架是,像许多其他Web MVC框架,要求为导向,围绕一个中心的servlet,它把请求分派给控制器,提供其他功能,有利于开发Web应用而设计的。
Spring3-MVC搭建全过程

用了大半年的Spring MVC3.0,用着感觉不错。
简单写一个搭建Spring MVC3.0的流程(以Spring3.0.5为列),数据库交互使用spring JDBC Template,附件有项目(没有jar包)。
整个项目架构如下图所示:1、去官网下载3.0.5所有jar包,所需jar包,见附件图片,每个jar包得用处如下:org.springframework.aop- 3.0.0.RELEASE--------------------Spring的面向切面编程,提供AOP(面向切面编程)实现org.springframework.asm- 3.0.0.RELEASE--------------------Spring独立的asm程序,相遇Spring2.5.6的时候需要asmJar 包.3.0开始提供他自己独立的asmJarorg.springframework.aspects- 3.0.0.RELEASE----------------Spring提供对AspectJ 框架的整合\org.springframework.beans- 3.0.0.RELEASE------------------SpringIoC(依赖注入)的基础实现org.springframework.context.support- 3.0.0.RELEASE--------Spring-context的扩展支持,用于MVC方面org.springframework.context- 3.0.0.RELEASE----------------Spring提供在基础IoC 功能上的扩展服务,此外还提供许多企业级服务的支持,如邮件服务、任务调度、JNDI定位、EJB集成、远程访问、缓存以及各种视图层框架的封装等org.springframework.core- 3.0.0.RELEASE-------------------Spring3.0的核心工具包org.springframework.expression- 3.0.0.RELEASE-------------Spring表达式语言org.springframework.instrument.tomcat- 3.0.0.RELEASE------Spring3.0对Tomcat的连接池的集成org.springframework.instrument- 3.0.0.RELEASE-------------Spring3.0对服务器的代理接口org.springframework.jdbc- 3.0.0.RELEASE-------------------对JDBC的简单封装org.springframework.jms- 3.0.0.RELEASE--------------------为简化JMS API的使用而作的简单封装org.springframework.orm- 3.0.0.RELEASE--------------------整合第三方的ORM框架,如hibernate,ibatis,jdo,以及spring的JPA实现org.springframework.oxm-3.0.0.RELEASE--------------------Spring 对Object/XMl的映射支持,可以让Java与XML之间来回切换org.springframework.test- 3.0.0.RELEASE--------------------对Junit等测试框架的简单封装org.springframework.transaction- 3.0.0.RELEASE-------------为JDBC、Hibernate、JDO、JPA等提供的一致的声明式和编程式事务管理org.springframework.web.portlet- 3.0.0.RELEASE-------------SpringMVC的增强org.springframework.web.servlet- 3.0.0.RELEASE-------------对JEE6.0 Servlet3.0的支持org.springframework.web.struts- 3.0.0.RELEASE--------------整合Struts的时候的支持org.springframework.web- 3.0.0.RELEASE--------------------SpringWeb下的工具包2、借鉴spring官网写法,建立一个src-resources Source Folder,再新建目录META-INF,存放springmvc-servlet.xml和jdbc-context.xml文件(事务和数据库连接池的管理);以及database.properties和log4j.properties。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
参考《Spring 3.x企业应用开发实战》
通过请求/请求头参数限定:示例
通过请求参数限定: @RequestMapping(value="/delete", params="userId") public String test1(@RequestParam("userId") String userId){ ... }
/user/*/createUser 匹配/user/aaa/createUser、/user/bbb/createUser等URL。 /user/**/createUser 匹配/user/createUser、/user/aaa/bbb/createUser等URL。 /user/createUser?? 匹配/user/createUseraa、/user/createUserbb等URL。 /user/{userId} 匹配user/123、user/abc等URL。 /user/**/{userId} 匹配user/aaa/bbb/123、user/aaa/456等URL。 company/{companyId}/user/{userId}/detail 匹配company/123/user/456/detail等的URL。
通过请求头参数限定:
@RequestMapping(value="/show",headers="content-type=text/*")② public String test2(@RequestParam("userId") String userId){ ... }
参考《Spring 3.x企业应用开发实战》
参考《Spring 3.x企业应用开发实战》
通过URL限定:绑定{xxx}中的值
@RequestMapping("/{userId}") public ModelAndView showDetail(@PathVariable("userId") String userId){ ModelAndView mav = new ModelAndView(); mav.setViewName("user/showDetail"); URL中的{xxx}占位符可以通过 mav.addObject("user", userService.getUserById(userId)); @PathVariable("xxx")绑定到操 return mav; 作方法的入参中。 }
示例2: @RequestMapping(value="/delete",method=RequestMethod.POST) public String test1(@RequestParam("userId") String userId){ return "user/test1"; } 所有URL为<controllerURI>/delete 且请求方法为POST 的请求由test1处理
参考《Spring 3.x企业应用开发实战》
Spring MVC框架结构
HandlerMapping
<servletName>-servlet.xml
2 DispatcherServlet 1 7 6 3
ModelAndView
5
HandlerAdapter 4
Model
8
(JSP/XML/PDF,...)
@Controller @RequestMapping("/owners/{ownerId}") public class RelativePathUriTemplateController {
如果@PathVariable不指定参数名, 只有在编译时打开debug开关 (javac -debug=no)时才可 行!!(不建议)
@RequestMapping("/pets/{petId}") public void findPet(@PathVariable String ownerId, @PathVariable String petId, Model model) { … } } 参考《Spring 3.x企业应用开发实战》
Spring T5750,内存:DDR2-667 2G,Web容器:Tomcat6.0,最大线 程数设置为1000,操作系统:WinXP-sp3
测试步骤: 搭建6个Web工程,如下: 1.纯JSP:不包含任何MVC框架,只有一个测试用的JSP页面。 2.struts1:包含一个Action,不做任何逻辑处理,直接转发到一个JSP页面 3.struts2 JSP:不包含Action,只包含测试JSP页面,直接访问该页面。 4.struts2 单例Action:采用Spring来管理Struts2的Action实例,并配置成单例 模式。 5.struts2 多例Action:采用Spring来管理Struts2的Action实例,并配置成单例 模式。 6.SpringMVC3:采用Spring来管理Controller实例,包含一个Controller,不做 逻辑处理,收到请求后,直接返回到一个JSP页面。
2
POST
3
4
DELETE
PUT
DELETE,表示删除一个资源,你也可以一遍又一遍地 操作它,直到得出结果:删除不存在的东西没有任何问 题
幂等性同样适用于PUT(基本的含义是“更新资源数据, 如果资源不存在的话,则根据此URI创建一个新的资 源”)
参考《Spring 3.x企业应用开发实战》
通过请求方法限定:代码示例
示例1: @RequestMapping(value=“/delete”) public String test1(@RequestParam("userId") String userId){ return "user/test1"; } 所有URL为<controllerURI>/delete的请求由test1处理(任何请求方法)
ViewResolver
Handler
View
参考《Spring 3.x企业应用开发实战》
Spring MVC框架结构
package com.baobaotao.web; ... @Controller ① 将UserController变成一个Handler @RequestMapping(“/user”) ②指定控制器映射的URL public class UserController { @RequestMapping(value = “/register”) ③处理方法对应的URL,相对于 ②处的URL public String register() { return “user/register”; ④返回逻辑视图名 } }
使用GET方法检索一个表述(representation)——也 就是对资源的描述。多次执行同一GET请求,不会对系 统造成影响,GET方法具有幂等性[指多个相同请求返回 相同的结果]。GET请求可以充分使用客户端的缓存。 POST方法,通常表示“创建一个新资源”,但它既不 安全也不具有幂等性(多次操作会产生多个新资源)。
通过请求方法限定:请求方法
请求方法,在HTTP中这被叫做动词(verb),除了两个大家熟知的 (GET和POST)之外,标准方法集合中还包含PUT、DELETE、HEAD 和OPTIONS。这些方法的含义连同行为许诺都一起定义在HTTP规范之 中。一般浏览器只支持GET和POST方法。
序号 1 请求方法 GET 说明
通过请求/请求头参数限定:更多
params和headers分别通过请求参数及报文头属性进行映射,它们 支持简单的表达式,下面以params表达式为例说明,headers可以参照 params进行理解之。
"param1":表示请求必须包含名为param1的请求参数。 "!param1":表示请求不能包含名为param1的请求参数。 "param1!=value1":表示请求包含名为param1的请求参数,但 其值不能为value1。 {"param1=value1","param2"}:请求必须包含名为param1和 param2的两个请求参数,且param1参数的值必须为value1。
Handler 处理方法
参考《Spring 3.x企业应用开发实战》
Spring MVC进行映射的依据
①请求方法 ②请求URL ③HTTP协议及版本
④ 报 文 头
⑤ 报 文 体
参考《Spring 3.x企业应用开发实战》
通过URL限定:URL表达式
@RequestMapping不但支持标准的URL,还支持Ant风格(即?、*和 **的字符,参见3.3.2节的内容)的和带{xxx}占位符的URL。以下URL都 是合法的:
LOGO
Spring MVC 3.0实战指南
PCCW 王炜
目录
1 2 3 4 5 6 7 Spring MVC框架简介 HTTP请求地址映射 HTTP请求数据的绑定 数据转换、格式化、校验 数据模型控制 视图及解析器 其它
Spring MVC 3.0新特性
• 支持REST风格的URL • 添加更多注解,可完全注解驱动 • 引入HTTP输入输出转换器 (HttpMessageConverter) • 和数据转换、格式化、验证框架无缝集成 • 对静态资源处理提供特殊支持 • 更加灵活的控制器方法签名,可完全独立于 Servlet API
参考《Spring 3.x企业应用开发实战》
框架的实现者
DefaultAnnotation HandlerMapping