前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深度学习springMVC(四)springmvc如何实现数据的响应,SpringMVC中使用作用域对象完成数据的流转(看不懂你打我)

深度学习springMVC(四)springmvc如何实现数据的响应,SpringMVC中使用作用域对象完成数据的流转(看不懂你打我)

作者头像
一写代码就开心
发布2021-07-08 15:23:28
7240
发布2021-07-08 15:23:28
举报
文章被收录于专栏:java和pythonjava和python

目录

前提

我们已经知道了如何使用springmvc获取前端的数据

深度学习springMVC(二)SpringMVC中单元方法如何获取请求数据,5种方法(看不懂你打我)

那么获取到数据,处理完成,返回给用户什么呢?返回的数据格式是什么呢?

使用Response对象完成响应

代码语言:javascript
复制
  /***
     * 使用response对象完成响应
     *  1.单元方法的返回值类型设置void
     *      因为使用response对象在单元方法中直接对此次请求进行了响应,不再通过
     *      DispatcherServlet了,既然已经响应了,就不需要再给DispatcherServlet返回值了。
     *  2. 在单元方法上声明HttpServletResponse形参,来接收
     *      此次请求的response对象。
     *  3.在单元方法中直接使用response对象完成响应
     *      直接响应
     *      请求转发
     *      重定向
     */
    @RequestMapping("resp")
    public void demoResp(String uname,Integer age,HttpServletRequest req,HttpServletResponse response) throws IOException, ServletException {
            //处理请求
                System.out.println("MyControllerResp.demoResp:使用原生的response对象完成响应:"+uname+":"+age);
            //响应结果
                response.setContentType("text/html;charset=utf-8");
                //直接响应
                    //response.getWriter().write("直接响应");
                //请求转发
                    //req.getRequestDispatcher("/index.jsp").forward(req,response);
                //重定向
                    response.sendRedirect(req.getContextPath()+"/redirect.jsp");
    }

直接响应

使用forward关键字完成响应

作用:实现请求转发

使用:通过单元方法的返回值来告诉DispatcherServlet请求转发指定的资源。

注意:如果是请求转发,forward关键字可以省略不写的。

代码语言:javascript
复制
    /**
     * 使用forward关键字完成请求转发jsp资源
     * 使用:
     *  通过单元方法的返回值,来告诉DispatcherServlet要请求转发的资源。
     * 格式:
     *   return "forward:/jsp资源路径";
     * 注意:
     *  第一个/表示项目根目录
     */
    @RequestMapping("forwardJsp")
    public String demoForwardJsp(String uname,Integer age){
        //处理请求
        System.out.println("MyControllerResp.demoForwardJsp:forward关键字请求转发jsp:"+uname+":"+age);
        //响应结果
        return "forward:/index.jsp";
    }

使用redirect关键字完成响应

作用:完成资源的重定向

使用:通过单元方法的返回值来告诉DispatcherServlet重定向指定的资源。

代码语言:javascript
复制
  /**
     * redirect关键字重定向到jsp资源
     *  使用:
     *      在单元方法的返回值中使用redirect关键字告诉DispatcherServlet要重定向的jsp资源路径
     *  注意:
     *       第一个/表示项目根目录
     *
     */
    @RequestMapping("redirectJsp")
    public String demoRedirectJsp(String uname,Integer age){
        //处理请求
        System.out.println("MyControllerResp.demoRedirectJsp:重定向到jsp资源:"+uname+":"+age);
        //响应结果
        return "redirect:/redirect.jsp";
    }
    /**
     * redirect关键字重定向到单元方法
     *  使用:
     *      在单元方法的返回值中使用redirect关键字告诉DispatcherServlet要重定向的jsp资源路径
     *  注意:
     *       第一个/表示项目根目录
     *
     */
    @RequestMapping("redirectMethod")
    public String demoRedirectMethod(String uname,Integer age){
        //处理请求
        System.out.println("MyControllerResp.demoRedirectMethod:重定向到单元方法:"+uname+":"+age);
        //响应结果
        return "redirect:/testMethod";
    }

SpringMVC中使用作用域对象完成数据的流转

作用域对象复习

1.PageContext对象

作用域范围:当前jsp页面内有效

2.request对象

作用域范围:一次请求内。

作用: 解决了一次请求内的资源的数据共享问题

3.session对象

作用域范围:一次会话内有效。

说明:浏览器不关闭,并且后台的session不失效,在任意请求中都可以获取

到同一个session对象。

作用:解决了一个用户不同请求的数据共享问题。

4.application(ServletContext)对象

作用域范围:整个项目内有效。

特点:一个项目只有一个,在服务器启动的时候即完成初始化创建

无论如何获取都是同一个项目。

作用:解决了不同用户的数据共享问题。

SpringMVC中使用作用域对象流转数据

使用request对象作为请求转发数据流转的载体

注意:使用方式和原有Servlet中使用方式完全一致,只不过

现在需要在单元方法中来使用。

代码语言:javascript
复制
 //声明单元方法:使用request对象作为数据流转的载体
    @RequestMapping("dataReq")
    public String demoReq(HttpServletRequest request){
        //处理请求
        System.out.println("MyController.demoReq:使用request对象作为数据流转的载体");
        //响应结果
        request.setAttribute("str","我是request对象");
        return "forward:/req.jsp";
    }

2.使用session对象作为同一个用户的不同请求的数据流转的载体

注意:使用方式和原有Servlet中使用方式完全一致,只不过

现在需要在单元方法中来使用,在单元方法的形参上直接声明session即可。

代码语言:javascript
复制
 //声明单元方法:使用session对象作为数据流转的载体
    @RequestMapping("dataSession")
    public String demoSession(HttpSession session){
        //处理请求
        System.out.println("MyController.demoSession:使用session对象作为数据流转的载体");
        //响应结果
        session.setAttribute("str","我是session对象");
        return "redirect:/session.jsp";
    }

3.使用application对象作用项目公共数据的载体。

注意:application对象的获取,只能我们自己在单元方法中获取,不能

使用形参的方式,让DispatcherServlet帮我们获取。

代码语言:javascript
复制
 //声明单元方法:使用application对象作为数据流转的载体
    @RequestMapping("dataApplication")
    public String demoApplication(HttpServletRequest request){
        //处理请求
        System.out.println("MyController.demoApplication:使用application对象作为数据流转的载体");
        //获取application对象
        ServletContext servletContext=request.getServletContext();
        //响应结果
        servletContext.setAttribute("str","我是application对象");
        return "redirect:/application.jsp";
    }

SpringMVC的Model对象的使用

作用: 作为数据流转的载体,SpringMVC官方提供的一个对象。

使用在单元方法上声明Model类型的形参即可。

注意:Model对象是由DispatcherServlet创建并作为实参传递给单元方法使用

特点:

请求转发:

model对象中存储的数据,相当于存储到了request对象中

我们在jsp中直接按照request对象作用域取值的方式来获取数据即可。

重定向:

在重定向中,会将第一次请求中model对象的数据作为第二次请求的

请求数据携带,第一次请求的model对象销毁。只能携带基本类型的数据。

代码示例:

请求转发中使用Model对象作为数据流转的载体

代码语言:javascript
复制
 //声明单元方法:请求转发中使用model作为数据流转的载体
    @RequestMapping("dataModel")
    public String demoModel(Model model){
        //处理请求
        System.out.println("MyController.demoModel:请求转发中使用Model对象作为数据流转的载体");
        //响应结果
        model.addAttribute("str","我是model对象--请求转发");
        return "forward:/model.jsp";

    }




    //声明单元方法:请求转发中使用model作为数据流转的载体
    @RequestMapping("dataModel2")
    public String demoModel2(Model model){
        //处理请求
        System.out.println("MyController.demoModel2:重定向中使用Model对象作为数据流转的载体");
        //响应结果
        model.addAttribute("str","我是model对象--重定向");
        return "redirect:/model.jsp";
    }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-07-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 前提
  • 使用Response对象完成响应
  • 使用forward关键字完成响应
  • 使用redirect关键字完成响应
  • SpringMVC中使用作用域对象完成数据的流转
    • 作用域对象复习
      • SpringMVC中使用作用域对象流转数据
        • 使用request对象作为请求转发数据流转的载体
        • 2.使用session对象作为同一个用户的不同请求的数据流转的载体
        • 3.使用application对象作用项目公共数据的载体。
      • SpringMVC的Model对象的使用
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档