前提条件:建立在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数组