SpringMVC系列笔记(三)

1. Spring2.5中引入注解对处理器(headler)支持

@Controller:用于标识是处理器类;
@RequestMapping:请求到处理器功能方法的映射规则;
@RequestParam:请求参数到处理器功能处理方法的方法参数上的绑定;

@ModelAttribute:请求参数到命令对象的绑定;                                                                                                       @InitBinder:自定义数据绑定注册支持,用于将请求参数转换到命令对象属性的对应类型;                       @SessionAttributes:用于声明session 级别存储的属性,放置在处理器类上,通常列出模型属性(如@ModelAttribute)对应的名 称,则这些属性会透明的保存到session 中


2. Spring3引入了更多的注解,其中包含了对RESTful架构风格的支持

     @CookieValue:  cookie数据到处理器功能处理方法的方法参数上的绑定;
     @RequestHeader:  请求头数据到处理器功能处理方法的方法参数上的绑定;
     @RequestBody:  请求的body体的绑定
     @ResponseBody:  处理器功能处理方法的返回值作为响应体
     @ResponseStatus: 定义处理器功能处理方法/异常处理器返回的状态码和原因;
     @ExceptionHandler: 注解式声明异常处理器;
    @PathVariable:  请求URI 中的模板变量部分到处理器功能处理方法的方法参数上的绑定,从而支持RESTful架构风格的URI;

3. Spring3中引入的mvc命名空间

    mvc这个命名空间是在Spring3中引入的,其作用是用来支持mvc的配置。需要在<bean>中声明出这个命名空间及其对应的schemaLocation中的值。<mvc:annotation-driven>
  自动注册基于注解风格的处理器和适配器:
        在spring2.5中是 DefaultAnnotationHandlerMappingAnnotationMethodHandlerAdapter
        在spring3中是 RequestMappingHandlerMappingRequestMappingHandlerAdapter.
    同时还支持各种数据的转换器.

    < mvc:interceptors>标签,配置自定义的处理器拦截器,例如: 
<mvc:interceptors>
    <mvc:interceptor>
        <mvc:mapping path="/**"/>
        <ref bean="handlerInterceptor1"/>
    </mvc:interceptor>
</mvc:interceptors>
    <mvc:view-controller>标签,可以配置在收到相应请求后直接选择相应的视图,不需要写控制器的代码了,例如:
<mvc:view-controller path="/hello" view-name="test">
</mvc:view-controller>
    <mvc:resources>标签,逻辑静态资源路径到物理静态资源路径的对应.例如:     
<mvc:resources mapping="/images/**" location="/images/"/>  
<mvc:resources mapping="/js/**" location="/js/"/>  
<mvc:resources mapping="/css/**" location="/css/"/> 
    <mvc:default-servlet-handler>

        当在web.xml中DispatcherServlet使用<url-pattern>/</url-pattern> 映射的时候,会静态资源也映射了,如果配置了这个mvc标签,那么再访问静态资源的时候就转交给默认的Servlet来响应静态文件,否则报404 找不到静态资源错误。

4.  @Controller和@RequestMapping注解

    4.1 声明处理器  
 @Controller
 public class HelloWorldController {
        //代码。。。。
 }
    4.2 映射处理器中的【功能处理方法】
 @Controller
    public class HelloWorldController {
        @RequestMapping("/home")
        public ModelAndView home(){
            ModelAndView mv = new ModelAndView("index");
            return mv;
        }
    }         // 表明该方法映射的url路径为/home
    4.3  @RequestMapping也可以写在处理器类上   
@RequestMapping("/test")
@Controller
public class HomeController {
    @RequestMapping("/home")
    public ModelAndView home(){
        ModelAndView mv = new ModelAndView("index");
        return mv;
    }
}            //表明该方法映射的url路径为/test/home
    注意:功能处理方法的方法可以是String类型,表示逻辑视图的名字,可以不用返回ModelAndView对象, 例如:
@Controller
 public class HelloWorldController {
      @RequestMapping("/home")
      public String home(){
          return "index";
      }
  }

5.  请求映射

    假设浏览器发送了一个请求如下:
-------------------------------
    POST /login    HTTP1.1   (请求方式   URL   协议版本号)
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8   (请求头信息)
    Accept-Encoding: gzip, deflate
    Accept-Language: zh-CN,en;q=0.8,zh;q=0.5,en-US;q=0.3
    Connection: keep-alive
    Cookie: JSESSIONID=DBC6367DEB1C024A836F3EA35FCFD5A2
    Host: 127.0.0.1:8989
    Upgrade-Insecure-Requests: 1
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0
 (回车换行。。。)
    username=tom&password=123   (请求正文)
 --------------------------------
    http协议的请求格式如下:
    ---------------------------------
    请求方法 URL 协议版本号
    请求头信息
    请求头信息
    请求头信息
    ..
    回车换行
    请求正文
    ---------------------------------
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值