zoukankan      html  css  js  c++  java
  • 转发和重定向

    转发

    转发的特点

    重定向

    重定向的特点

    • 地址栏:显示新的地址
    • 请求次数:2次
    • 根目录:http://localhost:8080/ 没有项目的名字
    • 请求域中的数据会丢失,因为是2次请求

    小结:重定向和转发的区别

    区别 转发forward 重定向sendRedirect
    根目录 包含项目访问地址 没有项目访问地址
    地址栏 不会发生变化 会发生变化
    哪里跳转 服务器端进行的跳转 浏览器端进行的跳转
    请求域中数据 不会丢失 会丢失
    
    //href中的/user/test会跳转到localhost:8888/user/test
    //href中的user/test会跳转到localhost:8888/项目名/user/test
    <a href="user/test">你好</a>
    
    @Controller
    @RequestMapping("/user")
    public class HelloController {
    
        @RequestMapping("/test")
        public void upload1(HttpServletRequest request,HttpServletResponse response) throws IOException {
            //会跳转http://localhost:8888/mvc1/user/success
            //response.sendRedirect("success");
    
            //会跳转到http://localhost:8888/success
            //response.sendRedirect("/success");
    
            //地址栏从index.jsp到http://localhost:8888/mvc1/user/test
            //另外一个例子是web课程中的,这里写/demo2 也会直接调用/项目/demo2的函数
            //request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request, response);
            
            //HTTP Status 404 – 未找到
            //消息/mvc1/user/WEB-INF/pages/success.jsp未找到
            //request.getRequestDispatcher("WEB-INF/pages/success.jsp").forward(request, response);
    
            //重定向是给客户端,需要加虚拟目录
            //转发给服务器端,不需要加虚拟目录
        }
    }
    
    
    @Controller
    @RequestMapping("/user")
    public class HelloController {
        @RequestMapping("/test")
        public void upload1(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException {
            System.out.println(request.getContextPath()); //打印/mvc1  项目名称
        }
    
    }
    
    @WebServlet("/responseDemo3")
    public class ResponseDemo3 extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
            //转发   这里加不加/都会正确
            request.getRequestDispatcher("/responseDemo2").forward(request,response);
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.doPost(request,response);
        }
    }
    












    种一棵树最好的时间是十年前,其次是现在。
  • 相关阅读:
    转C#线程调用带参数的方法 ~
    转在本地计算机无法启动oracledbconsole服务。错误1053:服务没有及时响应启动或控制请求
    转对Oracle10修改机器名后服务无法启动的解决
    转Spring.net web.config配置文件(经过整理和修改)
    转C#修饰符
    IP地址比较方法
    [转贴]关于XmlDocument 和 XPathDocument
    javascript下调用正则表达式的方法
    bug小结
    SQL Cache Dependency
  • 原文地址:https://www.cnblogs.com/islch/p/12789468.html
Copyright © 2011-2022 走看看