SpringMVC --04.SpringMVC注解接收参数

版权声明:转载请注明原始链接 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

猜你喜欢

转载自blog.csdn.net/sswqzx/article/details/84194491