• SpringMVC的响应介绍


    问题:

    在学习了SpringMVC的配置流程以及单元方法请求数据的获取后,我们可以

    使用SpringMVC搭建一个项目,并声明单元方法来处理请求,在单元方法中

    使用SpringMVC提供的方式来获取请求信息,然后根据功能需求,声明请求

    处理的逻辑代码,进行请求的处理。当请求处理完成后,我们需要将此次请求的

    处理结果响应给浏览器,以前我们是自己在Servlet中使用response对象来完成

    响应的,那么在SpringMVC中如何响应请求的处理结果呢?

    解决:

    因为在使用了SpringMVC后,Servlet只有一个了,也就是DispatcherServlet

    DispatcherServlet又不是我们自己声明的,所以我们在外部声明单元方法,让

    DispatcherServlet来根据请求调用,处理请求。也就说我们需要将请求处理的

    相关代码声明在对应的单元方法中。既然这样,单元方法是由DispatcherServlet

    来调用,需要在单元方法执行完毕后,告诉DispatcherServlet如何响应此次请求

    的处理结果。也就说单元方法需要通过返回值来告诉DispatcherServlet,如何进 行请求的响应。

    实现:

    紧耦方式使用原生的response对象完成

    使用SpringMVC的方式

     使用Response对象完成响应

    /***
     * 使用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关键字可以省略不写的。

    代码示例:

    请求转发jsp资源

    请求转发其他的单元方法

     使用redirect关键字完成响应

    作用:完成资源的重定向

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

    重定向到jsp资源

    重定向到单元方法

  • 相关阅读:
    JavaScript变量的传递方式
    三分钟读懂BGP带宽
    Docker安装及基础知识
    CentOS搭建“加速器”
    SSH 不分配远程主机tty
    2020年智慧电力解决方案
    docker安装2020
    如何让电力巡检机器人项目落地
    清淤机器人项目落地重庆市政工程
    智慧电网_电力巡检机器人解决方案
  • 原文地址:https://www.cnblogs.com/vincentmax/p/14313655.html
Copyright © 2020-2023  润新知