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数组

猜你喜欢

转载自blog.csdn.net/weixin_42333583/article/details/81633527