1.请求参数处理

数组接收参数
List集合接收参数

1.1 SpringMVC对请求参数的处理

  1. 在之前的servlet中我们可以通过request.getParameter()来获取请求中的参数,但是在我们编写的SpringMVC的应用程序中,在具体请求的方法中并不包含request参数,那么我们应该如何获取请求中的参数呢?<br /> 需要使用以下几个注解:<br /> @RequestParam:获取请求的参数<br /> @RequestHeader:获取请求头信息<br /> @CookieValue:获取cookie中的值

1.1.1 @RequestParam的基本使用

package com.xixi.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;


@Controller
public class ParamsController {
    /**
       * 如何获取SpringMVC中请求中的信息
       * 默认情况下,可以直接在方法的参数中填写跟请求一样的名称,此时会默认接受参数
       *   如果有值,直接赋值,如果没有,那么直接给空值
       *
       * @RequestParam:获取请求中的参数值,使用此注解之后,参数的名称不需要跟请求的名称一致,但是必须要写
       *   public String request(@RequestParam("user") String username){
       *
       *   此注解还包含三个参数:
       *   value:表示要获取的参数值
       *   required:表示此参数是否必须,默认是true,如果不写参数那么会报错,如果值为false,那么不写参数不会有任何错误
       *   defaultValue:如果在使用的时候没有传递参数,那么定义默认值即可
       *
       *
       * @param 
       * @return
       */
    @RequestMapping("/param01")
    public String param01(@RequestParam(value = "userName",required = false,defaultValue = "nihao") String name){
        System.out.println("name:"+name);
        return "/index.jsp";
    }


}

2.代码演示

2.1 Controller类

package com.xixi.controller;

import com.xixi.pojo.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


@Controller
public class ParamsController {
    /**
       * 如何获取SpringMVC中请求中的信息
       * 默认情况下,可以直接在方法的参数中填写跟请求一样的名称,此时会默认接受参数
       *   如果有值,直接赋值,如果没有,那么直接给空值
       *
       * @RequestParam:获取请求中的参数值,使用此注解之后,参数的名称不需要跟请求的名称一致,但是必须要写
       *   public String request(@RequestParam("user") String username){
       *
       *   此注解还包含三个参数:
       *   value:表示要获取的参数值
       *   required:表示此参数是否必须,默认是true,如果不写参数那么会报错,如果值为false,那么不写参数不会有任何错误
       *   defaultValue:如果在使用的时候没有传递参数,那么定义默认值即可
       * @param
       * @return
       */
    @RequestMapping("/param01")
    public String param01(@RequestParam(value = "userName",required = false,defaultValue = "nihao") String name){
        System.out.println("name:"+name);
        return "/index.jsp";
    }




    /**
     **乱码问题的解决
     *         我们在表单或者发送请求的时候,经常会遇到中文乱码的问题,那么如何解决乱码问题呢?
     *         GET请求:在server.xml文件中,添加URIEncoding=“UTF-8”
     *         POST请求:编写过滤器进行实现
     * */
    @RequestMapping("/param02")
    public String param02(User user){
        System.out.println("user:"+user);
        return "/index.jsp";
    }

    /**
     * 获取请求头的值
     **/
    @RequestMapping("/header")
    public String header(@RequestHeader("Host") String host){
        System.out.println("Host:"+host);
        return "/index.jsp";
    }


    /**
     * 获取Cookie的值
     **/
    @RequestMapping("/cookie")
    public String cookie(@CookieValue("JSESSIONID") String jessionId){
        System.out.println("jessionId:"+jessionId);
        return "/index.jsp";
    }


    /**
     * 支持原生API
     * 获取servletAPI 除了request,response,HttpSession
     * PrincImpl 获取安全协议相关          request.getUserPrincipal()
     * Local 当前语言
     * ServletInputStream
     * ....
     **/
    @RequestMapping("/servlet")
    public String servlet(HttpServletRequest request, HttpServletResponse response){
        String name = request.getParameter("name");
        System.out.println(name);
        request.setAttribute("name",name);
        return "/index.jsp";
    }



}

2.2 POJO类

package com.xixi.pojo;

import java.util.Arrays;
import java.util.List;
import java.util.Map;

public class User {

    private Integer id;

    private String name;

    private String[] alias;//外号

    private List<String> hobbies;//爱好

    private Map<String,String> relatives;//亲属们

    private Role role;

    private List<User> friends;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String[] getAlias() {
        return alias;
    }

    public void setAlias(String[] alias) {
        this.alias = alias;
    }

    public List<String> getHobbies() {
        return hobbies;
    }

    public void setHobbies(List<String> hobbies) {
        this.hobbies = hobbies;
    }

    public Map<String, String> getRelatives() {
        return relatives;
    }

    public void setRelatives(Map<String, String> relatives) {
        this.relatives = relatives;
    }

    public Role getRole() {
        return role;
    }

    public void setRole(Role role) {
        this.role = role;
    }

    public List<User> getFriends() {
        return friends;
    }

    public void setFriends(List<User> friends) {
        this.friends = friends;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", alias=" + Arrays.toString(alias) +
                ", hobbies=" + hobbies +
                ", relatives=" + relatives +
                ", role=" + role +
                ", friends=" + friends +
                '}';
    }
}
package com.xixi.pojo;

public class Role {


    private Integer id;

    private String name;


    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Role{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}

3.jsp页面

package com.xixi.pojo;

public class Role {


    private Integer id;

    private String name;


    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Role{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}