spring mvc 学习笔记2

 

  使用@RequestMapping映射请求

  在POJO类定义处标@Controller,再通过<context:component-scan/>扫描相应的类包就可以使POJO成为一个能处理Http请求的控制器,一个业务可以安排一个控制器处理,比如LogonController UserController等。

  在控制器的类定义及方法定义处都可以标注@ReqestMapping,类定义处的该标注提供初步的请求映射信息,方法处的则提供进一步的细分映信息。

  将请求映射到控制器处理方法的工作包含一系列的映射规则,这些规则是根据请求中的各种信息定制的,具体包括请求URL,请求参数,请求方法,请求头这四个方面的信息项。


@Controller  
@RequestMapping("index")  
public class IndexController {  
//使用请求方法及请求参数映射
    @RequestMapping(value="helloWorld",method=RequestMethod.POST,params="userId")  
    public String helloworld() {  
        // return "success"; //跳转到success页面  
        return "index";  
    }  
  //使用报文头映射
    @RequestMapping(value="helloWorld",headers="content-type=text/*")  
    public String helloworld() {  
        // return "success"; //跳转到success页面  
        return "index";  
    }  
  

 

}  

这里就是简单的接收url为index的请求,然后处理。这里说明的是@RequestMapping不但支持标准的URL,还支持Ant风格(即?,*和**字符和带{}占位符的RUL)下面例子:
/user/*/createUser  :匹配/user/aaa/creatUser等

/user/**/createUser :匹配/user/createUser  /user/aaa/bbb/creatUser

/user/createUser??: 匹配/user/createUseraa /user/creatUserbb

/user/{userId}:匹配 user/aaa等

总之可以用你自己的想象各种偷懒。

@RequestMapping除了可以使用请求URL映射外,还可以使用请求方法,请求头及参数(报文体和URL包含的参数)上面代码已经写好说明。

请求处理的方法签名有如下:

  1使用@RequestParam绑定请求参数值

  

@RequestMapping(value="/handlle11")
public String handle11(@RequestParam(value="userName",required=false)String userName,@RequestParam("age") int age)
{
}

  2使用@CookieValue 绑定请求中的Cookie值,可以让入参绑定某Cookie的 值

@RequestMapping(value="/handle12")
public String handle12(@CookieValue(value="sessionId",required=false)String sessionId,@RequestParam("age") int age){}

   3使用@RequestHeader 绑定请求报文头的属性值
  

@RequestMapping(value="/handle13")
public String handle13(@RequestHeader("Accept-Encoding")String encoding,@RequestHeader("Keep-Alive") long keepAlive){}

   4使用命令/表单对象绑定请求参数值(这个最常用,他还支持级联的属性名。。)
 

@RequestMapping(value="/handle14")
public String handle14(User user){}

   5使用Servlet Api对象作为入参

@Controller  
@RequestMapping("index")  
public class IndexController {  
//使用请求方法及请求参数映射
    @RequestMapping("/user")  
    public String handle21(HttpServletRequest request,HttpServletResponse response) {  
        String userName=WebUtils.findParameterValue(request,"userName");
       response.addCookie(new Cookie("userName"),userName);
    }  
  //使用报文头映射
    @RequestMapping("/user2")    public String handle22(HttpSession session) {  
               session.setAttribute("sessionId",1234)
              return "index";  
    }  

    6使用IO对象作为入参
   

@RequestMapping(value="/handle31")
public String handle31(OutputStream os) throws IOException{

   Resource res=new ClassPathResource("/image.jpg");
   FileCopyUtile.copy(res.getInputStream(),os);//将图片写入输出流中
}

 

posted @ 2014-03-11 22:23  塔塔兔  阅读(229)  评论(0编辑  收藏  举报