内容大纲
SpringMVC 概述
- Spring 为展现层提供的基于 MVC 设计理念的优秀的Web 框架,是目前最主流的 MVC 框架之一
- Spring3.0 后全面超越 Struts2,成为最优秀的 MVC 框架
- Spring MVC 通过一套 MVC 注解,让 POJO 成为处理请
- 求的控制器,而无须实现任何接口。
- 支持 REST 风格的 URL 请求
- 采用了松散耦合可插拔组件结构,比其他 MVC 框架更具扩展性和灵活性
需要的jar包
- – commons-logging-1.1.3.jar
- – spring-aop-4.0.0.RELEASE.jar
- – spring-beans-4.0.0.RELEASE.jar
- – spring-context-4.0.0.RELEASE.jar
- – spring-core-4.0.0.RELEASE.jar
- – spring-expression-4.0.0.RELEASE.jar
- – spring-web-4.0.0.RELEASE.jar
- – spring-webmvc-4.0.0.RELEASE.jar
配置 web.xml (SSM时代是要这样的)
配置 DispatcherServlet :DispatcherServlet 默认加载 /WEB-INF/<servletName-servlet>.xml 的 Spring 配置文件, 启动 WEB 层
的 Spring 容器(表明可以有多个Spring容器,但是我的问题是这些Spring容器之间如何交互呢)。可以通过 contextConfigLocation 初始化参数自定义配置文件的位置和名称
创建 Spring MVC 配置文件
配置自动扫描的包
使用 @RequestMapping 映射请求
在控制器的类定义及方法定义处都可标注
@RequestMapping
– 类定义处:提供初步的请求映射信息。相对于 WEB 应用的根目录
– 方法处:提供进一步的细分映射信息。相对于类定义处的 URL。若类定义处未标注 @RequestMapping,则方法处标记的 URL 相对于WEB 应用的根目录
DispatcherServlet 截获请求后,就通过控制器上@RequestMapping 提供的映射信息确定请求所对应的处理方法。
@RequestMapping 除了可以使用请求 URL 映射请求外,还可以使用请求方法、请求参数及请求头映射请求
@RequestMapping 的 value、method、params 及 heads(这几个是RequestMapping注解的属性)分别表示请求 URL、请求方法、请求参数及请求头的映射条件,他们之间是与的关系,联合使用多个条件可让请求映射更加精确化。
例子:
Ant 风格资源地址支持 3 种匹配符:
?:匹配文件名中的一个字符
*:匹配文件名中的任意字符
**:** 匹配多层路径
@RequestMapping 还支持 Ant 风格的 URL:
/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
@PathVariable 绑定 URL 占位符到入参
带占位符的 URL 是 Spring3.0 新增的功能,该功能在SpringMVC 向 REST 目标挺进发展过程中具有里程碑的意义
通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过
@PathVariable("xxx") 绑定到操作方法的入参中。
映射请求参数 & 请求参数
请求处理方法签名:
Spring MVC 通过分析处理方法的签名,将 HTTP 请求信息绑定到处理方法的相应入参中。
Spring MVC 对控制器处理方法签名的限制是很宽松的,几乎可以按喜欢的任何方式对方法进行签名。
必要时可以对方法及方法入参标注相应的注解(@PathVariable、@RequestParam、@RequestHeader 等),SpringMVC 框架会将 HTTP 请求的信息绑定到相应的方法入参中,并根据方法的返回值类型做出相应的后续处理。
使用 @RequestParam 绑定请求参数值:
在处理方法入参处使用 @RequestParam 可以把请求参数传递给请求方法
– value:参数名
– required:是否必须。默认为 true, 表示请求参数中必须包含对应的参数,若不存在,将抛出异常
使用 @RequestHeader 绑定请求报头的属性值:
请求头包含了若干个属性,服务器可据此获知客户端的信息,通过 @RequestHeader 即可将请求头中的属性值绑定到处理方法的入参中。
使用 @CookieValue 绑定请求中的 Cookie 值:
@CookieValue 可让处理方法入参绑定某个 Cookie 值
使用 POJO 对象绑定请求参数值:
Spring MVC 会按请求参数名和 POJO 属性名进行自动匹配,自动为该对象填充属性值。支持级联属性。如:dept.deptId、dept.address.tel 等
使用 Servlet 原生API 作为入参 :
SpringMVC只支持HttpServletRequest、HttpServletResponse和HttpSession这三个原生Servlet类型。
未完待续。。。