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

    转发与重定向

    在做页面的请求与响应的时候我们多用request与response进行操作,而我们大家也知道,request是表示用户发向服务器的请求,而response是对用户请求的一个响应。


    HttpServletRequest

    表示浏览器向服务器发送的请求报文,由Tomcat创建然后作为参数传递给我们doget,dopost方法。

    功能:getParameter()获取请求参数
    getContextPath()获取当前项目名
    request..getRequestDispatcher(“/1.html”).forward(request, response);可以实现转发功能
    注意:“/”代表的是相对于项目的根目录 http://主机地址:端口号/项目名/


    HttpServletResponse

    表示服务器响应给浏览器的响应报文,由服务器创建然后作为参数传递给我们doget,dopost方法。

    功能:response.getWriter().println("<h3>hello world!</h3>");
    可以返回给浏览器一个页面或者一个页面片段

    response.sendRedirect("/项目名/页面或servlet路径");

    注意:“/”代表的是相对于服务器的根目录 http://主机地址:端口号/


    转发与重定向的区别

    举例解释:关于转发和重定向,通俗的讲转发就像是你向售后技术支持打电话问问题,打过去是客服小王接的,但是小王无法解决,他让你等会儿,别挂电话,然后他去把问题告诉小李,让小李过来帮你解决,虽然换了人解决可是还是在这个售后处解决了问题。而重定向呢,就是小王说这个不归他们管,我们处理不了,让你打给12315投诉吧。然后你打电话给12315投诉解决了。大概就是这样的。

    因此在转发的时候你的地址栏内容不会变,发过去的请求也在,也就是说request中的内容没有改变,可以使用request进行值传递。

    而重定向的过程地址栏发生改变,你的请求也在重定向的时候丢失,原因是在第二次请求时,是再一次对服务器的访问,服务器会重写request内容。

    Tables 转发 重定向
    发生地 服务器 浏览器
    请求次数 浏览器一次请求,一次响应 浏览器两次请求,两次响应
    地址栏是否发生变化 无变化 有变化
    速度
    根目录地址 相对于项目的根目录http://主机地址:端口号/项目名/ 相对于服务器的根目录http://主机地址:端口号/

    注意:动态web项目WEB-INF路径下的文件,只能以转发的方式才能访问,重定向的方式访问不了WEB-INF路径下的文件。

  • 相关阅读:
    ODAC配置
    mysql 创建索引和删除索引
    Linux下安装多个tomcat
    CentOS7/6 关闭防火墙
    从navicat中导入sql文件过大:Got a packet bigger than 'max_allowed_packet' bytes
    手动添加jar包到本地仓库
    mysql权限
    Linux常用命令
    centos 6.5安装VMware tools
    MySql 查询数据库中所有表名以及对比分布式库中字段和表的不同
  • 原文地址:https://www.cnblogs.com/mazhitao/p/7445537.html
Copyright © 2011-2022 走看看