1.实体类
package com.hwy.entity;
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 + '\'' +
'}';
}
}
package com.hwy.entity;
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> relative; //亲属
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> getRelative() {
return relative;
}
public void setRelative(Map<String, String> relative) {
this.relative = relative;
}
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 +
", relative=" + relative +
", role=" + role +
", friends=" + friends +
'}';
}
}
复杂参数DTO类
package com.hwy.entity;
public class UserDTO {
private User user;
private Role role;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public Role getRole() {
return role;
}
public void setRole(Role role) {
this.role = role;
}
@Override
public String toString() {
return "UserDTO{" +
"user=" + user +
", role=" + role +
'}';
}
}
2.控制类
package com.hwy.controller;
import com.hwy.entity.UserDTO;
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中只需要在处理方法中声明对应的参数可以自动接收请求的参数并且还可以自动转换类型,如果没匹配到则报400错误,
匹配规则:请求的参数必须跟处理方法的参数名一致,不一致可以用@RequestParam
required:默认必须传参数 false可以不用传值,注意不要用基础数据类型
defaultValue:默认值,当参数为null的时候自动设置一个默认值
GET:直接设置tomcat中conf/server.xml 添加URIEncoding="utf-8"
POST:在servlet时期,设置request.setCharacterEncoding("utf-8") 现在使用过滤器CharacterEncodingFilter 在web.xml中配置
*/
@RequestMapping("/params01")
public String param01(@RequestParam(value="username",required=false,defaultValue="婉婉") String name){
System.out.println(name);
return "index.jsp";
}
/*
* 复杂数据参数类型-对象:不用加上参数的名字,直接传入该对象对应的属性名
1.如果是包装类型的简单变量 输入属性的名字=表单元素的name
2.数组 这一组表单元素都是相同的name
3.List:必须加上索引
4.Map:必须加上key
5.实体类:只能给某个属性赋值
6.如果出现多个对象参数的情况 建议封装一层bean(DTO)*/
@RequestMapping("/params02")
public String param02(UserDTO userDTO){
System.out.println(userDTO);
return "index.jsp";
}
/*
*获取请求头
* 里面也有required,defaultValue 用法一样
* */
@RequestMapping("/header")
public String header(@RequestHeader("Host") String host){
System.out.println(host);
return "index.jsp";
}
/*
* 获取cookie
* */
@RequestMapping("/cookie")
public String cookie(@CookieValue ("JSESSIONID")String jsSessionId ){
System.out.println(jsSessionId);
return "index.jsp";
}
/*
* 获取servlet中的api
* HttpServletRequest request,HttpServletResponse response
* HttpSession
* Principal获取安全协议相关
* Local获取当前语言
* ServletInputStream OutputStream
*可以结合SpringMVC和servlet api一起用
* */
@RequestMapping("/servlet")
public String servlet(String username,HttpServletRequest request, HttpServletResponse response){
System.out.println(username);
String name = request.getParameter("name");
System.out.println(name);
request.setAttribute("name",name);
return "index.jsp";
}
}
3.JSP 类
<%--
Created by IntelliJ IDEA.
User: MSI-NB
Date: 2021/12/7
Time: 17:50
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h2>不要放弃</h2>
<form action="${pageContext.request.contextPath}/params01" method="post">
姓名:<input name="username" type="text"><p></p>
<input type="submit" value="提交">
</form>
<form action="${pageContext.request.contextPath}/params02" method="post">
id: <input name="user.id" type="text"><p></p>
姓名:<input name="user.name" type="text"><p></p>
外号:<input name="user.alias" type="checkbox" value="婉婉" checked>婉婉
<input name="user.alias" type="checkbox" value="何何" checked>何何<p></p>
爱好:<input name="user.hobbies[0]" type="checkbox" value="音乐" checked>音乐
<input name="user.hobbies[1]" type="checkbox" value="跳舞" checked>跳舞<p></p>
亲属:<input name="user.relative['father']" type="checkbox" value="爸爸" checked>爸爸
<input name="user.relative['mother']" type="checkbox" value="妈妈" checked>妈妈<p></p>
角色:<input name="user.role.id" type="text" ><p></p>
朋友:<input name="user.friends[0].name" type="text" value="朋友1"><br>
<input name="user.friends[1].name" type="text" value="朋友2"><br>
<h2>角色</h2>
id:<input name="role.id" type="text" ><p></p>
姓名:<input name="role.name" type="text"><p></p>
<input type="submit" value="提交">
</form>
</body>
</html>