zoukankan      html  css  js  c++  java
  • Spring MVC 中些注入标签

    1、@Controller 
    @Controller 负责注册一个bean 到spring 上下文中,bean 的ID 默认为类名称开头字母小写,你也可以自己指定,如下 :
    方法一: 
    @Controller 
    public class TestController {} 
     
    方法二:            
    @Controller("tmpController") 
    public class TestController {} 
     
    2、@RequestMapping 

        使用 @RequestMapping 注释对函数进行注释,该函数处理某些 HTTP 方法、URI 或 HTTP 头。此注释是 Spring REST 支持的关键。可以更改 method 参数以处理其他 HTTP 方法。 
        例如: 
        @RequestMapping(method=RequestMethod.GET, value="/emps",  headers="Accept=application/xml, application/json")  

        headers 限定 只有请求头中 Accept 有 application/xml, application/json这样匹配的字符串才受理

     以下是一次请求的报文头 headers 类容

      1. Accept:
        text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
      2. Accept-Charset:
        GBK,utf-8;q=0.7,*;q=0.3
      3. Accept-Encoding:
        gzip,deflate,sdch
      4. Accept-Language:
        zh-CN,zh;q=0.8
      5. Cache-Control:
        max-age=0
      6. Connection:
        keep-alive
      7. Host:
        127.0.0.1:8080
      8. User-Agent:
        Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.152 Safari/537.22

    @RequestMapping 新增参数Consumes 和Produces 

    前面介绍过@RequestMapping的参数中有一个header的参数,来指定handler method能接受的http request 请求的header内容。 
    而consumes和produces则更进一步,直接指定所能接受或产生的request请求的content type。 
    例如

    Java代码  
    1. @RequestMapping(value="/testMsgConverter",consumes="text/plain",produces="application/json")  
    表示handlermethod接受的请求的header中的 Content-Type为text/plain; 
    Accept为application/json 
     
    3、Validation For @RequestBody

    @RequestBody现在直接支持@valid标注了,如果validation失败,将抛出 
    RequestBodyNotValidException。 
    具体处理逻辑可见 spring 中的RequestResponseBodyMethodProcessor中的以下代码。 

    Java代码        
    public Object resolveArgument(MethodParameter parameter,  ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {  
            Object arg = readWithMessageConverters(webRequest, parameter, parameter.getParameterType());  
            if (shouldValidate(parameter, arg)) {  
                String argName = Conventions.getVariableNameForParameter(parameter);  
                WebDataBinder binder = binderFactory.createBinder(webRequest, arg, argName);  
                binder.validate();  
                Errors errors = binder.getBindingResult();  
                if (errors.hasErrors()) {  
                    throw new RequestBodyNotValidException(errors);  
                }  
            }  
            return arg;  
        }  
     

    4、@PathVariable 

        使用 @PathVariable 注释可将 URI 中的路径变量作为参数插入。 
        例如: 
        @RequestMapping(method=RequestMethod.GET, value="/emp/{id}") 
        public ModelAndView getEmployee(@PathVariable String id) { … } 
                            
    其他有用的注释 
        使用 @RequestParam 将 URL 参数插入方法中。 
        使用 @RequestHeader 将某一 HTTP 头插入方法中。 
        使用 @RequestBody 将 HTTP 请求正文插入方法中。 
        使用 @ResponseBody 将内容或对象作为 HTTP 响应正文返回。 
        使用 HttpEntity<T> 将它自动插入方法中,如果将它作为参数提供。 
        使用 ResponseEntity<T> 返回具有自定义状态或头的 HTTP 响应。 
        例如: 
        public @ResponseBody Employee getEmployeeBy(@RequestParam("name") 
        String name, @RequestHeader("Accept") String accept, @RequestBody String body) {…} 
        public ResponseEntity<String> method(HttpEntity<String> entity) {…}
  • 相关阅读:
    conrtex 和 ARM 的关系
    C语言中的内存分配深入
    钳位电路
    向量中断与非向量中断的区别
    Freescale PowerPC处理器优势
    路由器端口映射,远程桌面连接端口映射+花生壳=让人访问你个人服务器或WEB站点
    linux 下用G++编译C++
    Javascript基础知识篇(1): 初识Javascript
    Javascript实战应用篇(3):动态加载JS和CSS文件
    Javascript高级技术篇(1):搭建JS框架类库
  • 原文地址:https://www.cnblogs.com/duojia/p/4552453.html
Copyright © 2011-2022 走看看