SpringMVC总结三:请求Controller返回视图类型以及请求方式、参数介绍

SpringMVC总结三:请求Controller返回视图类型以及请求方式、参数介绍

视图解析,请求Controller返回的视图类型:

@Controller
@RequestMapping("/test")
public class TestController {
    //正常返回ModelAndView
    @RequestMapping("/modelAndView")
    public ModelAndView retModelAndView(){
        ModelAndView mv = new ModelAndView("hello");
        mv.addObject("msg","正常ModelAndView的返回");
        return mv;
    }

    //返回json视图(json格式的数据)
    @RequestMapping("/jsonView")
    @ResponseBody //通过这个注解声明 返回json格式数据
    public List<Book> returnJsonView() {
        List<Book> list = new ArrayList<>();
        Book book1 = new Book();
        book1.setId(1);
        book1.setName("降龙十八掌");
        book1.setDesc("最难是亢龙有悔");
        list.add(book1);
        Book book2 = new Book();
        book2.setId(2);
        book2.setName("凌波微步");
        book2.setDesc("走为上");
        list.add(book2);
        return list;
    }

    //不做任何操作直接返回视图名称(jsp页面) 前提是要有这个jsp页面
    @RequestMapping("/viewName")
    public String returnViewName() {
        String viewName = "index";
        return viewName;
    }

    //重定向
    @RequestMapping("/redirect")
    public String returnRedirect(){
        //返回值以 redirect: 开头后面跟上url
        return "redirect:/test/jsonView.do";
    }

    //请求转发
    @RequestMapping("/forward")
    public String returnForward(){
        //返回值以 forward: 开头后面跟上url
        return "forward:/test/jsonView.do";
    }

    //不返回视图,只返回状态码
    @RequestMapping("/noView")
    @ResponseStatus(HttpStatus.OK)
    public void returnNoView(){

    }
}

返回json视图需要的jar包:jackson-databind

 

请求方式限定:

    // 请求方式限定 限定post请求方式
    @RequestMapping(value = "/requestMethodPost", method = RequestMethod.POST)
    public ModelAndView requestMethodPost() {
        ModelAndView mv = new ModelAndView();
        mv.setViewName("index");//设置视图名字(jsp页面)
        mv.addObject("msg", "requestMethod  method=post");
        return mv;
    }

    //请求方式限定 限定多种请求方式
    @RequestMapping(value = "/requestMethod", method = {RequestMethod.POST, RequestMethod.GET})
    public ModelAndView requestMethod() {
        ModelAndView mv = new ModelAndView();
        mv.setViewName("index");//设置视图名字
        mv.addObject("msg", "requestMethod  method=post and get");
        return mv;
    }

 

请求参数获取:

1,获取servlet内置对象(不推荐使用)

    //获取servlet内置对象 不推荐使用
    @RequestMapping("/servletObj")
    public ModelAndView getServletObj(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
        ModelAndView mv = new ModelAndView("servlet_test");// WEB-INF/views/servlet_test.jsp页面
        mv.addObject("request", "我是request===" + request);
        mv.addObject("response", "我是response===" + response);
        mv.addObject("session", "我是session===" + session);
        return mv;
    }
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <h1>${request}</h1>
    <h1>${response}</h1>
    <h1>${session}</h1>
</body>
</html>

 

2,获取PathVariable(占位符)参数

    //获取PathVariable(占位符)参数
    @RequestMapping("/pathVariable/{name}/{code}")
    public ModelAndView getPathVariable(@PathVariable("name") String name, @PathVariable("code") String code) {
        ModelAndView mv = new ModelAndView("index");
        mv.addObject("msg", "占位符映射参数,name=" + name + ",code=" + code);
        return mv;
    }

 

3,获取基本类型数据的请求参数

表单信息:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<form action="/test/baseDataTypeParams.do" method="post">
    <table>
        <tr>
            <td>姓名:</td>
            <td><input name="name" value="zhangsan"/></td>
        </tr>
        <tr>
            <td>年龄:</td>
            <td><input name="age" value="20"/></td>
        </tr>
        <tr>
            <td>收入:</td>
            <td><input name="income" value="99999"/></td>
        </tr>
        <tr>
            <td colspan="2"><input type="submit" value="提交表单"/></td>
        </tr>
    </table>
</form>
</body>
</html>

controller:

    //获取基本数据类型的请求参数
    @RequestMapping("baseDataTypeParams")
    public ModelAndView getBaseDataTypeParams(@RequestParam("name") String name, @RequestParam("age") int age,
                                              @RequestParam("income") double income) {
        ModelAndView mv = new ModelAndView("index");
        mv.addObject("msg", "name=" + name + ",age=" + age + ",income=" + income);
        return mv;
    }

 

4,获取请求参数并封装成pojo对象

写一个user类:

package zy.com.domain;

public class User {
    private String name;
    private int age;
    private double income;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public double getIncome() {
        return income;
    }

    public void setIncome(double income) {
        this.income = income;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", income=" + income +
                '}';
    }
}
View Code
    //获取请求参数并封装成pojo对象
    @RequestMapping("/pojo")
    public ModelAndView getPojo(User user) {
        ModelAndView mv = new ModelAndView("index");
        mv.addObject("msg", "接收的对象参数 user:" + user);
        return mv;
    }

把上面的表单请求的action改成

<form action="/test/pojo.do" method="post">

 

5,限制并获取参数信息

    //获取并限制表单参数信息 requird必传参数  defaultvalue默认值...
    @RequestMapping("/param")
    public ModelAndView getParam(@RequestParam(value = "name", required = true, defaultValue = "zhangsan") String name) {
        ModelAndView mv = new ModelAndView("index");
        mv.addObject("msg", "接收的参数 name:" + name);
        return mv;
    }

 

6,获取cookie参数信息

    //获取cookie信息
    @RequestMapping("/cookieInfo")
    public ModelAndView getCookieInfo(@CookieValue("JSESSIONID")String jsessionid){
        ModelAndView mv = new ModelAndView("index");
        mv.addObject("msg", "接收的参数 JSESSIONID:" + jsessionid);
        return mv;
    }

 

7,获取对象集合参数

对象集合类:

package zy.com.domain;

import java.util.List;

public class Books {
    private List<Book> userList;

    public List<Book> getUserList() {
        return userList;
    }

    public void setUserList(List<Book> userList) {
        this.userList = userList;
    }

    @Override
    public String toString() {
        return "Books{" +
                "userList=" + userList +
                '}';
    }
}
View Code
    //获取对象集合信息
    public ModelAndView getBookList(Books books){
        ModelAndView mv = new ModelAndView("index");
        mv.addObject("msg", "接收的参数 books:" + books);
        return mv;
    }

 

8,接收json格式请求(@RequestBody()

    // 接收json格式对象 转成 javabean对象
    @RequestMapping("/json")
    public ModelAndView getJson(@RequestBody() Book book) {
        ModelAndView modelAndView = new ModelAndView("index");
        modelAndView.addObject("msg", "获取json信息转成user对象: book=" + book);
        System.out.println("-----------------------------------------");
        System.out.println("book=" + book);
        return modelAndView;
    }

    // 将json数组对象 转成 包含javabean对象的集合
    @RequestMapping("/jsonList")
    public ModelAndView getJsonList(@RequestBody() List<Book> bookList) {
        ModelAndView modelAndView = new ModelAndView("index");
        modelAndView.addObject("msg", "获取json信息转成List<user>对象: bookList=" + bookList);
        System.out.println("-----------------------------------------");
        System.out.println("bookList=" + bookList);
        return modelAndView;
    }

 

posted @ 2017-05-05 15:41 青衫仗剑 阅读( ...) 评论( ...) 编辑 收藏
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值