Springmvc_响应_请求
前提条件:建立在springmvc_环境搭建好的基础上,此处主要是修改TestController.
第一部分:响应
-------------------需求一:响应浏览器一句话--------------------------------------------------------------------------------------------------
//表明:这是个控制器 @Controller public class TestController { //需求1:响应浏览器一句话 @RequestMapping("show01") public ModelAndView show01(){ ModelAndView mv = new ModelAndView("hello"); mv.addObject("msg","这是第二个mvc"); return mv; }
访问的hello页面:
<body>
<h1>${msg}</h1>
</body>
访问及结果:
-------------------需求二:将BookList放到model中返回, 且 jsp页面显示-------------------------------------------------------------------------
@RequestMapping("show02") public ModelAndView show02(){ //将10本书放入到集合之中 List<Book> books = new ArrayList<>(); for(int i=0;i<10;i++){ Book book = new Book(); book.setId(i); book.setName("宝宝"+i); book.setPrice(9.9+i); books.add(book); } ModelAndView mv = new ModelAndView("hello"); mv.addObject("books",books); return mv; }
访问及结果:
----需求3:将booklist转成json字符串返回给浏览器-------------------------------------------------------------@RequestMapping("show03") //服务器给浏览器相应json,所以必须写ResponseBody @ResponseBody public List<Book> show03(){ //将10本书放入到集合之中 List<Book> books = new ArrayList<Book>(); for(int i=0;i<10;i++){ Book book = new Book(); book.setId(i); book.setName("葵花宝典"+i); book.setPrice(9.9+i); books.add(book); } return books; }
结果:json字符串
----需求4:只需要返回视图名称 ------------------------------------------------------------------------------------------------
@RequestMapping("show04") public String show04(){ return "hello"; }
结果:
因为没有返回的值,所以页面是空白.
----需求5:除了返回视图名称,还要返回数据---,返回值是String-----------------------------------------------------------------------------------------
@RequestMapping("show05") public String show05(Model model){ model.addAttribute("msg","我是show5,需求:除了返回视图名称, 还要增加数据"); return "hello"; }
结果:
----需求6:重定向到show01----------------------------------------------------------------------------------------
@RequestMapping("show06") public String show06(){ return "redirect:/show01.do"; }
结果:访问show06.do,结果是重定向到show01.do
----需求7:请求转发到show01----------------------------------------------------------------------------------------
@RequestMapping("show07")
public String show07(){
return "forward:/show01.do";
}
结果:show07展示的是show01的结果.
----需求8:既不想返回视图名称,也不返回视图内容,用viod-------------------------------------------------------------
@RequestMapping("show08") @ResponseStatus(HttpStatus.OK) public void show08(){ System.out.println("我什么都不想干,不返回,但是要告诉浏览器你收到了信息,状态ok"); }
结果是空白页面,只是在控制台输出了一句话,此处必须写responseStatus(HttpStatus.ok),要不然没有返回值,会报404
第二部分:请求:
----需求9:获取servlet的相关对象,如 request, response. session等-----------------------------------------------
@RequestMapping("show09") public ModelAndView show09(HttpServletRequest request, HttpServletResponse response, HttpSession session){ request.setAttribute("msg1", "我是request, 我存放了数据:request=" + request); request.setAttribute("msg2", "我是response, 我被保存到request域容器中, response=" + response); session.setAttribute("msg3", "我是session, 我存放了数据, session=" + session); ModelAndView mv = new ModelAndView("servlet-test"); return mv; }
结果:均可以获取到
----需求10:获取路径占位符参数--------------------------------------------------------------------------------------
@RequestMapping("show10/{name}/{age}") public ModelAndView show10(@PathVariable("name") String name, @PathVariable("age") int age){ ModelAndView mv = new ModelAndView("hello"); mv.addObject("msg","姓名="+name+"年龄="+age); return mv; }
结果:
----需求11:获取表单参数值信息--------------------------------------------------------------------------------------
@RequestMapping("show11") @ResponseStatus(HttpStatus.OK) public void show11(Book book){ System.out.println("接收javabean数据"+book); }
结果:用postman模仿表单提交数据
控制台输出结果:说明获取浏览器提交表单数据成功
----需求12:注解RequestParm获取浏览器提交数据--------------------------------------------------------------------------------------
@RequestMapping("show12") //此处required = true是默认的,必须有参数;defaultValue = "大黄",默认值是"大黄" public ModelAndView show12(@RequestParam(value = "username",required = true,defaultValue = "大黄") String username){ ModelAndView mv = new ModelAndView("hello"); mv.addObject("msg","username="+username); return mv; }
结果:url栏必须写username="..",不写默认是大黄.
----需求13:获取cookie的值-------------------------------------------------------------------------------------------------------------------
@RequestMapping("show13") public ModelAndView show13(@CookieValue("JSESSIONID") String cookie){ ModelAndView mv = new ModelAndView("hello"); mv.addObject("msg","cookie="+cookie); return mv; }
结果:正常获取
----需求14:将表单数据封装到bookList中-------------------------------------------------------------------------------------------------------------------
@RequestMapping("show14") public ModelAndView show14(BookForm bookForm){ ModelAndView mv = new ModelAndView("hello"); mv.addObject("msg","bookForm="+bookForm.getBookList()); return mv; }
结果:模拟提交
结果:
----需求15:将浏览器发送的JSon转成对象JavaBean--------------------------------------------------------------------------------------
@RequestMapping("show15") public ModelAndView show15(@RequestBody() Book book){ ModelAndView mv = new ModelAndView("hello"); mv.addObject("msg","book="+book); return mv; }
结果:postman模拟提交一条json数据
----需求16:将浏览器发送的JSon数组转成对象JavaBean集合--------------------------------------------------------------------------------------
@RequestMapping("show16") public ModelAndView show16(@RequestBody() List<Book> books){ ModelAndView mv = new ModelAndView("hello"); mv.addObject("msg","books="+books); return mv; }
结果:用postman 模拟提交json数组