版权声明:转载请注明原始链接 https://blog.csdn.net/sswqzx/article/details/84194491
学习目标
1.接收请求路径中占位符的值、
2.接收普通的请求参数、
3.基本数据类型的接收、
4.对象的接收、
5.集合的接收、
6.获取Servlet API、
7.获取Cookie
开发环境:
环境:jdk1.8 Tomcat8.5 idea2018 manven父工程子模块
步骤:
1、创建web工程、引入依赖
2、配置SpringMvc入口文件 --DispatcherServlet--为总调度、web.xml里配置
3、创建Springmvc.xml文件--理解为:适配器(这里不需要自已指定适配、springmvc会自动指定)--视图解析器
4、创建 业务处理器 Controller类
5、测试
1、2、3参考:https://blog.csdn.net/sswqzx/article/details/84171999
工程结构:
1、接收请求路径中占位符的值
@PathVariable注解使用 https://blog.csdn.net/sswqzx/article/details/84194979
2、接收普通的请求参数
@RequestParam注解使用 https://blog.csdn.net/sswqzx/article/details/84195043
3、基本数据类型的接收
src/man/webapp下创建user.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="hello/show19.do" method="post">
用户名:<input type="text" name="username"><br>
年龄:<input type="text" name="age"><br>
婚否:<input type="radio" name="isMarry" value="1" checked="checked">已婚<input type="radio" name="isMarry"
value="0">未婚<br>
收入:<input type="text" name="income"><br>
爱好:<input type="checkbox" name="hobby" value="football">足球
<input type="checkbox" name="hobby" value="basketball">篮球
<input type="checkbox" name="hobby" value="yuball">羽毛球
<br>
<input type="submit" value="提交">
</form>
</body>
</html>
业务处理器:HelloController.java
package com.day01springmvc.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
/**
* @ Author :ShaoWei Sun.
* @ Date :Created in 20:58 2018/11/16
*/
@Controller
@RequestMapping("hello")
public class HelloController2 {
@RequestMapping("show19")
public ModelAndView test19(
@RequestParam("username")String username,
@RequestParam("age")Integer age,
@RequestParam("isMarry")Boolean isMarry,
@RequestParam("income")Double income,
@RequestParam(value = "hobby",required = false) String[] hobby){
ModelAndView mv = new ModelAndView();
StringBuffer sb = new StringBuffer();
sb.append(username+","+age+","+isMarry+","+income);
if (hobby !=null){
for (String s : hobby) {
sb.append(","+s);
}
}
mv.addObject("msg","基本数据类型的接收:"+sb.toString());
mv.setViewName("hello2");
return mv;
}
}
4、对象的接收
domain/User.java
package com.day01springmvc.domain;
import java.io.Serializable;
import java.util.Arrays;
/**
* @ Author :ShaoWei Sun.
* @ Date :Created in 9:58 2018/11/18
*/
public class User implements Serializable {
private String username;
private Integer age;
private Boolean isMarry;
private Double income;
private String[] hobby;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Boolean getIsMarry() {
return isMarry;
}
public void setIsMarry(Boolean isMarry) {
this.isMarry = isMarry;
}
public Double getIncome() {
return income;
}
public void setIncome(Double income) {
this.income = income;
}
public String[] getHobby() {
return hobby;
}
public void setHobby(String[] hobby) {
this.hobby = hobby;
}
@Override
public String toString() {
return "User [username=" + username + ", age=" + age + ", isMarry=" + isMarry + ", income=" + income
+ ", hobby=" + Arrays.toString(hobby) + "]";
}
}
/webapp/user.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="hello/show20.do" method="post">
用户名:<input type="text" name="username"><br>
年龄:<input type="text" name="age"><br>
婚否:<input type="radio" name="isMarry" value="1" checked="checked">已婚<input type="radio" name="isMarry"
value="0">未婚<br>
收入:<input type="text" name="income"><br>
爱好:<input type="checkbox" name="hobby" value="football">足球
<input type="checkbox" name="hobby" value="basketball">篮球
<input type="checkbox" name="hobby" value="yuball">羽毛球
<br>
<input type="submit" value="提交">
</form>
</body>
</html>
注意:User.java属性名要和user.html里表单name名字一样、否则获取不到值
HelloController.java
package com.day01springmvc.controller;
import com.day01springmvc.domain.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
/**
* @ Author :ShaoWei Sun.
* @ Date :Created in 20:58 2018/11/16
*/
@Controller
@RequestMapping("hello")
public class HelloController2 {
@RequestMapping("show20")
public ModelAndView test20(User user){
ModelAndView mv = new ModelAndView();
mv.setViewName("hello2");
mv.addObject("msg", "对象数据的接收:" + user);
return mv;
}
}
5、集合的接收
domain/UserVO.java
package com.day01springmvc.domain;
import java.io.Serializable;
import java.util.List;
/**
* @ Author :ShaoWei Sun.
* @ Date :Created in 10:47 2018/11/18
*/
public class UserVO implements Serializable {
private static final long serialVersionUID = 1L;
private List<User> users;
public List<User> getUsers() {
return users;
}
public void setUsers(List<User> users) {
this.users = users;
}
@Override
public String toString() {
return "UserVO [users=" + users + "]";
}
}
HelloController.java
package com.day01springmvc.controller;
import com.day01springmvc.domain.User;
import com.day01springmvc.domain.UserVO;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
/**
* @ Author :ShaoWei Sun.
* @ Date :Created in 20:58 2018/11/16
*/
@Controller
@RequestMapping("hello")
public class HelloController2 {
/**
* 接收集合参数
* @param userVO
* @return
*/
@RequestMapping("show21")
public ModelAndView test21(UserVO userVO){
ModelAndView mv = new ModelAndView();
mv.setViewName("hello2");
mv.addObject("msg", "集合类型的接收:" + userVO);
return mv;
}
}
user.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="hello/show21.do" method="post">
用户名:<input type="text" name="users[0].username"><br>
年龄:<input type="text" name="users[0].age"><br>
婚否:<input type="radio" name="users[0].isMarry" value="1" checked="checked">已婚<input type="radio" name="users[0].isMarry"
value="0">未婚<br>
收入:<input type="text" name="users[0].income"><br>
爱好:<input type="checkbox" name="users[0].hobby" value="football">足球
<input type="checkbox" name="users[0].hobby" value="basketball">篮球
<input type="checkbox" name="users[0].hobby" value="yuball">羽毛球
<br>
<input type="submit" value="提交">
</form>
</body>
</html>
6、获取Servlet API
在业务处理器Controller中获取HttpServletRequest、HttpServletResponse及HttpSession
有三种方式获取:
@RequestMapping("show22")
public ModelAndView test22(HttpServletRequest request, HttpServletResponse response, HttpSession session){
ModelAndView mv = new ModelAndView();
mv.setViewName("hello2");
StringBuffer sb = new StringBuffer();
sb.append(request.toString()+"<br>");
sb.append(response.toString()+"<br>");
sb.append(session.toString()+"<br>");
mv.addObject("msg","访问Servlet API:<br>"+sb.toString());
return mv;
}
//Model为内部对象
@RequestMapping("show23")
public String test23(Model model,HttpServletRequest request,HttpServletResponse response,HttpSession session){
StringBuffer sb = new StringBuffer();
sb.append(request.toString() + "<br>");
sb.append(response.toString() + "<br>");
sb.append(session.toString() + "<br>");
model.addAttribute("msg", "访问Servlet API:" + sb.toString());
//返回视图名称
return "hello2";
}
//ModelMap为内置对象
@RequestMapping("show24")
public String test23(ModelMap map, HttpServletRequest request, HttpServletResponse response, HttpSession session){
StringBuffer sb = new StringBuffer();
sb.append(request.toString() + "<br>");
sb.append(response.toString() + "<br>");
sb.append(session.toString() + "<br>");
map.addAttribute("msg", "访问Servlet API2:" + sb.toString());
//返回视图名称
return "hello2";
}
7、获取Cookie
@CookieValue注解使用 https://blog.csdn.net/sswqzx/article/details/84195158