• SpringMVC-响应


    目录

    页面跳转

    页面跳转设定

    页面跳转方式

    页面访问快捷设定

    携带数据页面跳转设定

    方式一:使用HttpServletRequest类型形参进行数据传递

    方式二:使用Model类型形参进行数据传递

    方式三:使用ModelAndView类型形参进行数据传递,将该对象作为返回值传递给调用者

    返回数据

    方式一:使用response对象完成数据返回

    方式二:(简化格式)

    返回JSON数据

    方式一:基于response返回数据的简化格式,返回JSON数据

    返回JSON数据(对象)

    方式二:使用SpringMVC提供的消息类型转换器将对象与集合数据自动转换为JSON数据

    返回JSON数据(集合)


    • 页面跳转

    • 页面跳转设定

    • 当处理器方法的返回值类型为string类型,即可通过具体的返回值设置访问的页面
    • 页面跳转方式

    • 转发(默认)
    • @RequestMapping ("/showPage1")
    • public String showPage1(){
      • System.out.println("user mvc controller is running ...");
      • return "forward:page.jsp" ;
    • }

    • 重定向
    • @RequestMapping ("/showPage2")
    • public String showPage2(){
      • System.out.println ("user mvc controller is running ...");
      • return "redirect:page.jsp";
    • }
    • 注意:页面访问地址中所携带的/

    • 页面访问快捷设定

    • 展示页面的保存位置通常固定,且结构相似,可以设定通用的访问路径,简化页面配置格式
    • public String showPage(){
      • return "page";
    • }
    • public String showPage(){
      • return "/WEB-INF/pages/page.jsp" ;
    • }

      1. @Controller
      2. public class UserController {
      3. @RequestMapping("/showPage1")
      4. public String showPage1(){
      5. System.out.println("user mvc controller is running...");
      6. return "forward:page.jsp";
      7. }
      8. @RequestMapping("/showPage2")
      9. public String showPage2(){
      10. System.out.println("user mvc controller is running...");
      11. return "redirect:page.jsp";
      12. }
      13. @RequestMapping("/showPage3")
      14. public String showPage3(){
      15. System.out.println("user mvc controller is running...");
      16. return "page";
      17. }
      18. }
    • 携带数据页面跳转设定

    • 方式一:使用HttpServletRequest类型形参进行数据传递

    • @RequestMapping("/showPageAndData1")
    • public String showPageAndData1(HttpServletRequest request){
      • request.setAttribute("name","icpc");
      • return "page";
    • }

    • 方式二:使用Model类型形参进行数据传递

    • @RequestMapping("/showPageAndData2")
    • public String showPageAndData2(Model model){
      • model.addAttribute("nama","1theima");
      • Book book = new Book();
      • book.setName("SpringMVC实战");
      • book.setPrice(66.6d);
      • mode1.addAttribute("book", book) ;
      • return "page";
    • }

    • 方式三:使用ModelAndView类型形参进行数据传递,将该对象作为返回值传递给调用者

    • @RequestMapping("/showPageAndData3")
    • public ModelAndView showPageAndData3 (ModelAndView modelAndView){
      • modelAndView.addObject("name", "icpc");
      • Book book = new Book();
      • book.setName("SpringMVC实战");
      • book.setPrice(88.88d);
      • modelAndView.addObject("book",book) ;
      • modelAndView.setViewName("page");
      • return modelAndView;
    • }
    • modelAndView.setViewName("page");
    • 等同于
    • return "page";
    • modelAndView.setViewName("redirect:page.jsp") ;
    • 等同于
    • return "redirect:page.jsp";
    • String:
    • 仅封装跳转页面的基本信息,底层由ModelAndView实现
    • Model:
    • 仅封装数据
    • ModelAndView:
    • 封装数据并封装视图,包含Model和View两个对象
      1. public class Book {
      2. private String name;
      3. private Double price;
      4. public String getName() {
      5. return name;
      6. }
      7. public void setName(String name) {
      8. this.name = name;
      9. }
      10. public Double getPrice() {
      11. return price;
      12. }
      13. public void setPrice(Double price) {
      14. this.price = price;
      15. }
      16. @Override
      17. public String toString() {
      18. return "Book{" +
      19. "name='" + name + '\'' +
      20. ", price=" + price +
      21. '}';
      22. }
      23. }
      1. @Controller
      2. public class BookController {
      3. @RequestMapping("/showPageAndData1")
      4. public String showPageAndData1(HttpServletRequest request){
      5. request.setAttribute("name","icpc");
      6. return "page";
      7. }
      8. @RequestMapping("/showPageAndData2")
      9. public String showPageAndData2(Model model){
      10. model.addAttribute("name","icpc");
      11. Book book = new Book();
      12. book.setName("ccpc");
      13. book.setPrice(66.66d);
      14. model.addAttribute("book",book);
      15. return "page";
      16. }
      17. @RequestMapping("/showPageAndData3")
      18. public ModelAndView showPageAndData3(ModelAndView modelAndView){
      19. Book book = new Book();
      20. book.setName("ccpc");
      21. book.setPrice(66.66d);
      22. modelAndView.addObject("book",book);
      23. modelAndView.addObject("name","icpc");
      24. modelAndView.setViewName("page");
      25. return modelAndView;
      26. }
      27. }
    • 返回数据

    • 方式一:使用response对象完成数据返回

    • @RequestMapping("/showData1")
    • public void showData1(HttpServletResponse response) throws IOException{
      • response.getWriter().print("message");
    • }

    • 方式二:(简化格式)

    • @ResponseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据
    • 这个注解表示该方法的返回结果直接写入HTTPresponse body中,一般在异步获取数据时使用
    • 在使用@RequestMapping后,返回值通常解析为跳转路径
    • 加上@Responsebody后,返回结果直接写入HTTP response body中,不会被解析为跳转路径
    • @RequestMapping("/showData2")
    • @ResponseBody
    • public String showData2()(
      • return "message";
    • }

    • 返回JSON数据

    • 方式一:基于response返回数据的简化格式,返回JSON数据

    • @RequestMapping("/showData3")
    • @ResponseBody
    • public String showData3() throws JsonProcessingException {
      • ObjectMapper om = new ObjectMapper();
      • Book book = new Book();
      • book.setName("SpringMVC实战");
      • book.setPrice(88.88d);
      • return om.writeValueAsString(book);
    • }

    • 返回JSON数据(对象)

    • 方式二:使用SpringMVC提供的消息类型转换器将对象与集合数据自动转换为JSON数据

    • @RequestMapping("/showData4")
    • @ResponseBody
    • public Book showData4(){
      • Book book =new Book();
      • book.setName("SpringMVC实战");
      • book.setPrice(88.88d);
      • return book;
    • }
    • 可以手工添加信息类型转换器
    • 或使用注解驱动简化配置
    • 返回JSON数据(集合)

    • @RequestMapping("/showData5")
    • @ResponseBody
    • public List showData5() {
      • Book book1 = new Book();
      • book1.setName("SpringMVC实战");
      • book1.setPrice(88.88d);
      • Book book2 = new Book();
      • book2.setName("SpringMvC应用");
      • book2.setPrice(166.66d);
      • ArrayList books = new ArrayList();
      • books.add(book1);
      • books.add(book2);
      • return books;
    • }

      1. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
      2. <property name="prefix" value="/WEB-INF/page/"/>
      3. <property name="suffix" value=".jsp"/>
      4. bean>
      5. <mvc:annotation-driven/>
      1. <dependency>
      2. <groupId>com.fasterxml.jackson.coregroupId>
      3. <artifactId>jackson-coreartifactId>
      4. <version>2.9.0version>
      5. dependency>
      6. <dependency>
      7. <groupId>com.fasterxml.jackson.coregroupId>
      8. <artifactId>jackson-databindartifactId>
      9. <version>2.9.0version>
      10. dependency>
      11. <dependency>
      12. <groupId>com.fasterxml.jackson.coregroupId>
      13. <artifactId>jackson-annotationsartifactId>
      14. <version>2.9.0version>
      15. dependency>
      1. @Controller
      2. public class AccountController {
      3. @RequestMapping("/showData1")
      4. public void showData1(HttpServletResponse response) throws IOException{
      5. response.getWriter().write("message");
      6. }
      7. @RequestMapping("/showData2")
      8. @ResponseBody
      9. public String showData2(){
      10. return "message";
      11. }
      12. @RequestMapping("/showData3")
      13. @ResponseBody
      14. public String showData3() throws JsonProcessingException {
      15. Book book = new Book();
      16. book.setName("ccpc");
      17. book.setPrice(66.66d);
      18. ObjectMapper om = new ObjectMapper();
      19. return om.writeValueAsString(book);
      20. }
      21. @RequestMapping("/showData4")
      22. @ResponseBody
      23. public Book showData4(){
      24. Book book = new Book();
      25. book.setName("ccpc");
      26. book.setPrice(66.66d);
      27. return book;
      28. }
      29. @RequestMapping("/showData5")
      30. @ResponseBody
      31. public List showData5(){
      32. Book book1 = new Book();
      33. book1.setName("ccpc");
      34. book1.setPrice(66.66d);
      35. Book book2 = new Book();
      36. book2.setName("acm");
      37. book2.setPrice(88.88d);
      38. ArrayList al = new ArrayList<>();
      39. al.add(book1);
      40. al.add(book2);
      41. return al;
      42. }
      43. }
  • 相关阅读:
    多线程进阶
    【海思SS626 | 开发环境】VMware17安装Ubuntu 18.04.6
    C语言知识回顾
    11 月 18 日 ROS 学习笔记——可视化和调试工具
    Vulnhub系列靶机---Deathnote: 1死亡笔记
    0730~Mysql优化
    HarmonyOS ArkTS List组件和Grid组件的使用(五)
    推荐一款好用的代码可视化工具
    实践了上万次,原来这些才是敏捷测试需要遵循的原则
    记录下配置腾讯云服务器的过程
  • 原文地址:https://blog.csdn.net/weixin_59624686/article/details/127677057