视图解析,请求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 + '}'; } }