HelloWorld

1.SpringMVC概述
      • Spring现层提供的基于MVC设计理念秀的Web框架,是目前最主流MVC框架之一
      • Spring3.0后全面超越Struts2,成秀的MVC框架
      • Spring MVC一套MVC注解POJO为处求的控制器,而无须实现任何接口。
      • 支持RESTURL
      • 采用了松散合可插拔结构,比其他MVC框架更具展性和活性

2.HelloWorld
   
      –  
加入
 
jar
 
       –  
 
web.xml
 
中配置
 
DispatcherServlet
       –  
加入
 
Spring 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中配置DispatcherServlet
      DispatcherServlet/WEB-INF/<servletName-servlet>.xmlSpring配置文件,启动WEBSpring容器。可以通contextConfigLocation初始化参数自定配置文件的位置和名称
[java] view plain copy
  1. <!-- 配置 DispatcherServlet -->  
  2.     <servlet>  
  3.         <servlet-name>helloworld</servlet-name>  
  4.         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
  5.         <!-- 配置DispatcherServlet初始化参数:配置springmvc配置文件的位置和名称 -->  
  6.         <!--   
  7.             实际上也可以不通过 contextConfigLocation 来配置 SpringMVC 的配置文件, 而使用默认的.  
  8.             默认的配置文件为: /WEB-INF/<servlet-name>-servlet.xml  
  9.             这样配置文件就不是放在src下了,而是放在WEB-INF下,此时名字叫做helloworld-servlet.xml  
  10.         -->  
  11.         <init-param>  
  12.             <param-name>contextConfigLocation</param-name>  
  13.             <param-value>classpath:springmvc.xml</param-value>  
  14.         </init-param>  
  15.         <load-on-startup>1</load-on-startup>  
  16.     </servlet>  
  17.   
  18.     <servlet-mapping>  
  19.         <servlet-name>helloworld</servlet-name>  
  20.         <url-pattern>/</url-pattern>  
  21.     </servlet-mapping>  

 ❤  创建Spring MVC配置文件
       –配置自动扫描的包
       –配置视图解析器视图名称解析器:将视图逻辑名解析: /WEB-INF/pages/<viewName>.jsp
[java] view plain copy
  1. <!-- 配置自动扫描的包 -->  
  2.     <context:component-scan base-package="com.starfish.springmvc"></context:component-scan>  
  3.   
  4.     <!-- 配置视图解析器: 如何把 handler 方法返回值解析为实际的物理视图 -->  
  5.     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
  6.         <property name="prefix" value="/WEB-INF/views/"></property>  
  7.         <property name="suffix" value=".jsp"></property>  
  8.     </bean>  

 ❤  创建请求处理器类
[java] view plain copy
  1. @Controller  
  2. public class HelloWorld {  
  3.     /** 
  4.      * 1. 使用 @RequestMapping  注解来映射请求的 URL(这里的请求就是:href="helloWorld") 
  5.      * 2. 返回值会通过视图解析器解析为实际的物理视图, 对于 InternalResourceViewResolver 视图解析器, 会做如下的解析: 
  6.      * 通过 prefix + returnVal + 后缀 这样的方式得到实际的物理视图, 然会做转发操作 
  7.      *  
  8.      * /WEB-INF/views/success.jsp 
  9.      */  
  10.     @RequestMapping("/helloWorld")  
  11.     public String helloWorld(){  
  12.         System.out.println("springMVC HelloWorld!");  
  13.         return "success";  
  14.     }  
  15. }  

3.使用@RequestMapping映射请求

      • Spring MVC 使用@RequestMapping注解为控制器指定可以处理哪些URL 请求

     • 在控制器的类定义及方法定义处都可标注@RequestMapping

        – 类定义处:提供初步的请求映射信息。相对于WEB 应用的根目录

         – 方法处:提供进一步的细分映射信息。相对于类定义处的URL。若类定义处未标注@RequestMapping,则方法处标记的URL 相对于WEB 应用的根目录

     • DispatcherServlet截获请求后,就通过控制器上@RequestMapping提供的映射信息确定请求所对应的处理方法。


 ❤  使用@RequestMapping映射请求示例

        HelloWorld
 ❤  映射请求参数、请求方法或请求头
     • 标准的HTTP请求报头
         HelloWorld

     • @RequestMapping除了可以使用请求URL映射请求外,还可以使用请求方法、请求参数及请求头映射请求

     • @RequestMappingvaluemethodparamsheads 分别表示请求URL请求方法请求参数及请求头的映射条件,他们之间是的关系,联合使用多个条件可让请求映射更加精确化

     • paramsheaders支持简单的表达式:

         – param1: 表示请求必须包含名为param1 的请求参数

         – !param1: 表示请求不能包含名为param1 的请求参数

         – param1 != value1: 表示请求包含名为param1 的请求参数,但其值不能为value1

          {“param1=value1”, “param2”}: 请求必须包含名为param1 param2 的两个请求参数,且param1 参数的值必须为value1   



[java] view plain copy
  1. @Controller  
  2. @RequestMapping("springmvc")  
  3. public class SpringMVCTest {  
  4.     private static final String SUCCESS = "success";  
  5. //了解:不常用, 可以使用params和header来更加精确的映射请求,他两支持简单的表达式  
  6.     @RequestMapping(value="testParamsAndHeader",params={"username","age!=24"},headers={"Accept-Language=zh-CN,zh;q=0.8"})  
  7.     public String testParamsAndHeader(){  
  8.         System.out.println("testParamsAndHeader...");  
  9.         return SUCCESS;  
  10.     }}