zoukankan      html  css  js  c++  java
  • 处理请求数据

    请求数据 :  请求参数  cookie信息  请求头信息…..


    JavaWEB  :  HttpServletRequest
                 Request.getParameter(参数名);  Request.getParameterMap();
            Request.getCookies();
            Request.getHeader(); 


    Spring
    1、请求处理方法签名
      1) Spring MVC 通过分析处理方法的签名(方法名+ 参数列表),HTTP请 求信息绑定到处理方法的相应形参中。
      2) Spring MVC 对控制器处理方法签名的限制是很宽松的,几乎可以按喜欢的任何方式对方法进行签名。
      3) 必要时可以对方法及方法入参标注相应的注解( @PathVariable@RequestParam、@RequestHeader 等)、
      4) Spring MVC 框架会将 HTTP 请求的信息绑定到相应的方法形参中,并根据方法的返回值类型做出相应的后续处理。
    2、@RequestParam注解

      在处理请求的方法中,加入相对应的形参,保证形参参数名和传递的数据的参数名保持一致,就可以自动赋值。当需要变动变量名或者设置默认值时,采用@RequestParam
      1)在处理方法入参处使用 @RequestParam 可以把请求参数传递给请求方法
      2)value:参数名。当不满足赋值条件时,可以使用value属性,指定映射关系
      3)required:设置形参是否必须被赋值,默认为true,必须赋值,若设置为false,则不必须赋值,因此形参的值为null
      4)defaultValue: 默认值,若形参所获得的值为null,则设置一个默认值,用在分页和模糊查询中

    @RequestMapping(value="/param", method=RequestMethod.POST)
        public String param(@RequestParam(value="username", required=false, defaultValue="1")String name, String password, String age) {
            System.out.println("username="+name+",password="+password+",age="+age);
            return "success";
        }
    <!--测试 请求参数 @RequestParam 注解使用 -->
    <a href="springmvc/testRequestParam?username=kkzhang&password=123456&age=10">testRequestParam</a>

    3、 @RequestHeader 注解
      1) 使用 @RequestHeader 绑定请求报头的属性值
      2) 请求头包含了若干个属性,服务器可据此获知客户端的信息,通过 @RequestHeader 即可将请求头中的属性值绑定到处理方法的入参中 

        /**
         * @RequestHeader:在处理请求的方法上,获取请求头信息,用法和@RequestParam一致
         */
        @RequestMapping(value="/param", method=RequestMethod.POST)
        public String param(@RequestHeader("Accept-Language")String AcceptLanguage) {
            System.out.println("AcceptLanguage="+AcceptLanguage);
            return "success";
        }

    4、 @CookieValue 注解

      1) 使用 @CookieValue 绑定请求中的 Cookie 值
      2) @CookieValue 可让处理方法入参绑定某个 Cookie 值

        /**
         * @CookieValue:在处理请求的方法上,获取cookie信息,用法和@RequestParam一致
         */
        @RequestMapping(value="/param", method=RequestMethod.POST)
        public String param(@CookieValue(value="JSESSIONID")String JSESSIONID) {
            System.out.println("JSESSIONID="+JSESSIONID);
            return "success";
        }

    5、使用POJO作为参数
    1) 使用 POJO 对象绑定请求参数值
    2) Spring MVC 会按请求参数名和 POJO 属性名进行自动匹配,自动为该对象填充属性值。支持级联属性。如:dept.deptId、dept.address.tel 等

        /**
         * 可以使用POJO获取客户端数据,要求实体类对象中的属性名一定要和页面中表单元素的name属性值一致,且支持级联关系
         * 
         */
        @RequestMapping(value="/param", method=RequestMethod.POST)
        public String param(User user) {
            String username = request.getParameter("username");
            System.out.println(user);
            return "success";
        }
        <form action="param" method="post">
            username:<input type="text" name="username" /><br />
            password:<input type="text" name="password" /><br />
            age:<input type="text" name="age" /><br />
            province:<input type="text" name="address.province" /><br />
            city:<input type="text" name="address.city" /><br />
            country:<input type="text" name="address.country" /><br />
            <input type="submit" value="添加" />
        </form>
    package com.atguigu.bean;
    
    public class User {
    
        private Integer id;
        
        private String username;
        
        private String password;
        
        private Integer age;
        
        private Address address;
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    
        public Address getAddress() {
            return address;
        }
    
        public void setAddress(Address address) {
            this.address = address;
        }
    
        @Override
        public String toString() {
            return "User [id=" + id + ", username=" + username + ", password=" + password + ", age=" + age + ", address="
                    + address + "]";
        }
        
    }
    User
    package com.atguigu.bean;
    
    public class Address {
    
        private String province;
        
        private String city;
        
        private String country;
    
        @Override
        public String toString() {
            return "Address [province=" + province + ", city=" + city + ", country=" + country + "]";
        }
    
        public String getProvince() {
            return province;
        }
    
        public void setProvince(String province) {
            this.province = province;
        }
    
        public String getCity() {
            return city;
        }
    
        public void setCity(String city) {
            this.city = city;
        }
    
        public String getCountry() {
            return country;
        }
    
        public void setCountry(String country) {
            this.country = country;
        }
        
    }
    Address

    6、 使用Servlet原生API作为参数
     MVC 的 Handler 方法可以接受哪些 ServletAPI 类型的参数
      1) HttpServletRequest
      2) HttpServletResponse
      3) HttpSession
      4) java.security.Principal
      5) Locale
      6) InputStream
      7) OutputStream
      8) Reader
      9) Writer

        /**
         * 可以通过设置形参的方式,获取servletAPI
         */
        @RequestMapping(value="/param", method=RequestMethod.POST)
        public String param(HttpServletRequest request, HttpServletResponse response) {
            String username = request.getParameter("username");
            System.out.println(username);
            return "success";
        }
    
  • 相关阅读:
    如何查看操作系统的具体版本号
    Review of Image Super-resolution Reconstruction Based on Deep Learning
    opencv imshow图片显示不全
    Javaweb文件下载异常
    Microsoft Edge出现错误代码:STATUS_INVALID_IMAGE_HASH
    Javaweb导入excel数据
    Java读取execl数据
    浏览器网页左上角小图标实现方式
    Java LDAP验证
    Java JPA新增数据生成UUID
  • 原文地址:https://www.cnblogs.com/lemonzhang/p/12929530.html
Copyright © 2011-2022 走看看