SpringMVC --04.SpringMVC註解接收引數
阿新 • • 發佈:2018-11-19
學習目標
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