zoukankan      html  css  js  c++  java
  • 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);//将图片写入输出流中
    }
  • 相关阅读:
    如何使用 vimdiff 来 git diff /svn diff
    nginx https ssl 设置受信任证书[原创]
    Nginx配置proxy_pass转发的/路径问题
    116、Android获取Manifest中<meta-data>元素的值
    Android Studio系列教程四--Gradle基础(转载)
    Android Studio系列教程六--Gradle多渠道打包(转载)
    1、Android Studio集成极光推送(Jpush) 报错 java.lang.UnsatisfiedLinkError: cn.jpush.android.service.PushProtoco
    Java数组转成list,list转数组
    115、定时器(TimerTask+Timer+Handler)
    114、Android禁止ViewPager的左右滑动
  • 原文地址:https://www.cnblogs.com/wq123/p/3595198.html
Copyright © 2011-2022 走看看