1.请求参数处理
数组接收参数
List集合接收参数
1.1 SpringMVC对请求参数的处理
在之前的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 + '\'' +
'}';
}
}