1.SpringMVC概述
• Spring为展现层提供的基于MVC设计理念的优秀的Web框架,是
目前
最主流
的
MVC
框架
之一
• Spring3.0后全面超越Struts2,成为最优秀的MVC框架
• Spring MVC通过一套MVC注解,让POJO成为处理请求的控制器,而无须实现任何接口。
• 支持REST风格的URL请求
• 采用了松散耦合可插拔组件结构,比其他MVC框架更具扩展性和灵活性
2.HelloWorld
❤ 步
骤
:
–
在
web.xml
中配置
DispatcherServlet
–
编
写
处
理
请
求的
处
理器,并
标识为处
理器
❤ 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中配置DispatcherServlet
DispatcherServlet默认加载/WEB-INF/<servletName-servlet>.xml的Spring
配置文件
,
启动
WEB
层
的
Spring
容器
。可以通
过
contextConfigLocation
初始化参数自定
义
配置文件的
位置
和名称
- <!-- 配置 DispatcherServlet -->
- <servlet>
- <servlet-name>helloworld</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <!-- 配置DispatcherServlet初始化参数:配置springmvc配置文件的位置和名称 -->
- <!--
- 实际上也可以不通过 contextConfigLocation 来配置 SpringMVC 的配置文件, 而使用默认的.
- 默认的配置文件为: /WEB-INF/<servlet-name>-servlet.xml
- 这样配置文件就不是放在src下了,而是放在WEB-INF下,此时名字叫做helloworld-servlet.xml
- -->
- <init-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:springmvc.xml</param-value>
- </init-param>
- <load-on-startup>1</load-on-startup>
- </servlet>
-
- <servlet-mapping>
- <servlet-name>helloworld</servlet-name>
- <url-pattern>/</url-pattern>
- </servlet-mapping>
❤ 创建Spring MVC配置文件
–配置视图解析器:视图名称解析器:将视图逻辑名解析为: /WEB-INF/pages/<viewName>.jsp
- <!-- 配置自动扫描的包 -->
- <context:component-scan base-package="com.starfish.springmvc"></context:component-scan>
-
- <!-- 配置视图解析器: 如何把 handler 方法返回值解析为实际的物理视图 -->
- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- <property name="prefix" value="/WEB-INF/views/"></property>
- <property name="suffix" value=".jsp"></property>
- </bean>
❤ 创建请求处理器类
- @Controller
- public class HelloWorld {
-
-
-
-
-
-
-
- @RequestMapping("/helloWorld")
- public String helloWorld(){
- System.out.println("springMVC HelloWorld!");
- return "success";
- }
- }
3.使用@RequestMapping映射请求
• Spring MVC 使用@RequestMapping注解为控制器指定可以处理哪些URL 请求
• 在控制器的类定义及方法定义处都可标注@RequestMapping
– 类定义处:提供初步的请求映射信息。相对于WEB 应用的根目录
– 方法处:提供进一步的细分映射信息。相对于类定义处的URL。若类定义处未标注@RequestMapping,则方法处标记的URL 相对于WEB 应用的根目录
• DispatcherServlet截获请求后,就通过控制器上@RequestMapping提供的映射信息确定请求所对应的处理方法。
❤ 使用@RequestMapping映射请求示例
❤ 映射请求参数、请求方法或请求头
• 标准的HTTP请求报头
• @RequestMapping除了可以使用请求URL映射请求外,还可以使用请求方法、请求参数及请求头映射请求
• @RequestMapping的value、method、params及heads 分别表示请求URL、请求方法、请求参数及请求头的映射条件,他们之间是与的关系,联合使用多个条件可让请求映射更加精确化。
• params和headers支持简单的表达式:
– param1: 表示请求必须包含名为param1 的请求参数
– !param1: 表示请求不能包含名为param1 的请求参数
– param1 != value1: 表示请求包含名为param1 的请求参数,但其值不能为value1
– {“param1=value1”, “param2”}: 请求必须包含名为param1 和param2 的两个请求参数,且param1 参数的值必须为value1
- @Controller
- @RequestMapping("springmvc")
- public class SpringMVCTest {
- private static final String SUCCESS = "success";
-
- @RequestMapping(value="testParamsAndHeader",params={"username","age!=24"},headers={"Accept-Language=zh-CN,zh;q=0.8"})
- public String testParamsAndHeader(){
- System.out.println("testParamsAndHeader...");
- return SUCCESS;
- }}