spring+mvc+3.0实战指南

上传人:j7****6 文档编号:61789601 上传时间:2018-12-12 格式:PPT 页数:74 大小:2.61MB
返回 下载 相关 举报
spring+mvc+3.0实战指南_第1页
第1页 / 共74页
spring+mvc+3.0实战指南_第2页
第2页 / 共74页
spring+mvc+3.0实战指南_第3页
第3页 / 共74页
spring+mvc+3.0实战指南_第4页
第4页 / 共74页
spring+mvc+3.0实战指南_第5页
第5页 / 共74页
点击查看更多>>
资源描述

《spring+mvc+3.0实战指南》由会员分享,可在线阅读,更多相关《spring+mvc+3.0实战指南(74页珍藏版)》请在金锄头文库上搜索。

1、Spring MVC 3.0实战指南,参考Spring 3.x企业应用开发实战,目录,Spring MVC框架简介,1,Spring MVC 3.0新特性,支持REST风格的URL 添加更多注解,可完全注解驱动 引入HTTP输入输出转换器(HttpMessageConverter) 和数据转换、格式化、验证框架无缝集成 对静态资源处理提供特殊支持 更加灵活的控制器方法签名,可完全独立于Servlet API,参考Spring 3.x企业应用开发实战,Spring MVC框架结构,DispatcherServlet,HandlerMapping,HandlerAdapter,Handler,Vi

2、ew (JSP/XML/PDF,.),2,3,4,ViewResolver,6,8,1,参考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

3、“user/register”; 返回逻辑视图名 ,参考Spring 3.x企业应用开发实战,框架的实现者,DispatcherServlet,DefaultAnnotation HandlerMapping,AnnotationMethod HandlerAdapter,UserController,register.jsp,2,3,4,InternalResource ViewResolver,6,8,1,参考Spring 3.x企业应用开发实战,目录,Spring MVC框架简介,1,HTTP请求映射原理,HTTP请求报文,Handler 处理方法,Spring MVC 框架,WEB容器

4、,参考Spring 3.x企业应用开发实战,Spring MVC进行映射的依据,参考Spring 3.x企业应用开发实战,通过URL限定:URL表达式,RequestMapping不但支持标准的URL,还支持Ant风格(即?、*和*的字符,参见3.3.2节的内容)的和带xxx占位符的URL。以下URL都是合法的: /user/*/createUser 匹配/user/aaa/createUser、/user/bbb/createUser等URL。 /user/*/createUser 匹配/user/createUser、/user/aaa/bbb/createUser等URL。 /user/

5、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。,参考Spring 3.x企业应用开发实战,通过URL限定:绑定xxx中的值,RequestMapping(“/userId“) public ModelAndV

6、iew showDetail(PathVariable(“userId“) String userId) ModelAndView mav = new ModelAndView(); mav.setViewName(“user/showDetail“); mav.addObject(“user“, userService.getUserById(userId); return mav; ,Controller RequestMapping(“/owners/ownerId“) public class RelativePathUriTemplateController RequestMappi

7、ng(“/pets/petId“) public void findPet(PathVariable String ownerId, PathVariable String petId, Model model) ,URL中的xxx占位符可以通过PathVariable(“xxx“)绑定到操作方法的入参中。,如果PathVariable不指定参数名,只有在编译时打开debug开关(javac -debug=no)时才可行!(不建议),参考Spring 3.x企业应用开发实战,通过请求方法限定:请求方法,请求方法,在HTTP中这被叫做动词(verb),除了两个大家熟知的(GET和POST)之外,

8、标准方法集合中还包含PUT、DELETE、HEAD和OPTIONS。这些方法的含义连同行为许诺都一起定义在HTTP规范之中。一般浏览器只支持GET和POST方法。,参考Spring 3.x企业应用开发实战,通过请求方法限定:代码示例,示例1: RequestMapping(value=“/delete”) public String test1(RequestParam(“userId“) String userId) return “user/test1“; 所有URL为/delete的请求由test1处理(任何请求方法) 示例2: RequestMapping(value=“/delete

9、“,method=RequestMethod.POST) public String test1(RequestParam(“userId“) String userId) return “user/test1“; 所有URL为/delete 且请求方法为POST 的请求由test1处理,参考Spring 3.x企业应用开发实战,通过请求方法限定:模拟请求方法,通过在web.xml中配置一个org.springframework.web.filter.HiddenHttpMethodFilter 通过POST请求的_method参数指定请求方法,HiddenHttpMethodFilter动态

10、更改HTTP头信息。,HiddenHttpMethodFilter,POST HTTP请求,method=PUT&.,Spring MVC,PUT HTTP请求,参考Spring 3.x企业应用开发实战,通过请求/请求头参数限定:示例,RequestMapping(value=“/delete“, params=“userId“) public String test1(RequestParam(“userId“) String userId) . ,RequestMapping(value=“/show“,headers=“content-type=text/*“) public Strin

11、g test2(RequestParam(“userId“) String userId) . ,通过请求参数限定:,通过请求头参数限定:,参考Spring 3.x企业应用开发实战,通过请求/请求头参数限定:更多,params和headers分别通过请求参数及报文头属性进行映射,它们支持简单的表达式,下面以params表达式为例说明,headers可以参照params进行理解之。 “param1“:表示请求必须包含名为param1的请求参数。 “!param1“:表示请求不能包含名为param1的请求参数。 “param1!=value1“:表示请求包含名为param1的请求参数,但其值不能为

12、value1。 “param1=value1“,“param2“:请求必须包含名为param1和param2的两个请求参数,且param1参数的值必须为value1。,参考Spring 3.x企业应用开发实战,目录,Spring MVC框架简介,1,通过注解绑定:示意图,public String handle1(.),RequestParam绑定请求参数,RequestHeader绑定请求头参数,CookieValue绑定Cookie的值,PathVariable绑定URL中的变量,参考Spring 3.x企业应用开发实战,通过注解绑定:示例,RequestMapping(value=“/h

13、andle1“) public String handle1(RequestParam(“userName“) String userName, RequestParam(“password“) String password, RequestParam(“realName“) String realName) . ,RequestMapping(value=“/handle2“) public String handle2(CookieValue(“JSESSIONID“) String sessionId, RequestHeader(“Accept-Language“) String a

14、ccpetLanguage) . ,参考Spring 3.x企业应用开发实战,通过注解绑定:小心抛出异常,RequestParam有以下三个参数。 value:参数名。 required:是否必需,默认为true,表示请求中必须包含对应的参数名,如果不存在将抛出异常。 defaultValue:默认参数名,设置该参数时,自动将required设为false。极少情况需要使用该参数,也不推荐使用该参数。,RequestMapping(value=“/handle1“) public String handle1(RequestParam(“userName“) String userName,)

15、 . ,上面的处理方法 ,如果HTTP请求不包含“userName”参数时,将产生异常! 因此,如果不能保证存在”userName”的参数,必须使用: RequestParam(value = “userName“, required = false),参考Spring 3.x企业应用开发实战,使用命令/表单对象绑定,所谓命令/表单对象并不需要实现任何接口,仅是一个拥有若干属性的POJO。Spring MVC按: “HTTP请求参数名 = 命令/表单对象的属性名” 的规则,自动绑定请求数据,支持“级联属性名”,自动进行基本类型数据转换。,RequestMapping(value = “/handle14“) public String handle14(User user) ,userName=xxx&password=yyy,class User private String userName; private String password; ,参考Spring 3.x企业应用开发实战,使用Servlet API对象作为入参,在Spring MVC中,控制器类可以不依赖任何Servlet API对象,但是Spring MVC并不阻止我们使用Servlet API的类作为处理方法的入参。值得注意的是,如果处理方法自行使用HttpServletResponse返回响应,则处理方

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号