1. 程式人生 > >SpringMVC --04.SpringMVC註解接收引數

SpringMVC --04.SpringMVC註解接收引數

學習目標

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