zoukankan      html  css  js  c++  java
  • servlet请求转发、包含以及重定向

    请求转发:

    方式一:

      ServletContext对象.getRequestDispatcher(目标资源的URI).forward(request,response);

      目标资源的URI "/servlet/GetParam" 必须以"/"开头,否则报错,此"/"就表示的是当前应用(绝对路径表示法)

    方式二:

      request.getRequestDispatcher(目标资源的URI).forward(request,response);

      目标资源的URI "/servlet/GetParam" 如果以"/"开头,就表示的是当前应用(绝对路径表示法)。

      GetParam" 如果不以"/"开头,就表示相对路径。相对路径:两个绝对路径去掉前面相同的部分

    由源组件转发到目标组件时,容器会清空源组件输出的数据。响应头信息是不清空的,客户端地址栏URL不变

    编码原则:不要在转发前后向页面输出数据,也不要关闭输出流。

    1     public void forward(HttpServletRequest request,
    2             HttpServletResponse response) throws ServletException, IOException {
    3 //        方式一
    4 //        RequestDispatcher rd=getServletContext().getRequestDispatcher("/servlet/NewPage");
    5 //        方式二
    6         RequestDispatcher rd=request.getRequestDispatcher("NewPage");
    7         
    8         rd.forward(request, response);
    9     }

    包含(动态包含):

    request.getRequestDispatcher(目标资源的URI).include(request,response);

    由源组件包含到目标组件时,容器会清空目标组件的头,所以源组件设置的头才有效。响应体信息是不清空的。

    编码原则:不要在目标组件中设置响应头。

    1     public void include(HttpServletRequest request,
    2             HttpServletResponse response) throws ServletException, IOException{
    3         RequestDispatcher rd=request.getRequestDispatcher("/servlet/NewPage");
    4         rd.include(request, response);
    5     }


    重定向:

    response.sendRedirect("/../...")

    目标资源的URI /应用名/路径.. 绝对路径,"/"后跟应用名

    客户端跳转,request中数据不传递!客户端地址栏URL改变。

    1     public void redirect(HttpServletRequest request,
    2             HttpServletResponse response) throws IOException{
    3         response.sendRedirect("/WebProjectName/newURL");
    4     }
  • 相关阅读:
    jvisualm 结合 visualGC 进行jvm监控,并分析垃圾回收
    linux 查看服务器cpu 与内存配置
    arthas 使用总结
    selinux contexts 安全上下文的临时更改
    Android 8.1 Doze模式分析(五) Doze白名单及Debug方式
    Window 任意窗口置顶软件Window TopMost Control
    Android ApkToolPlus一个可视化的跨平台 apk 分析工具
    SVN Please execute the 'Cleanup' command.
    Android 如何在64位安卓系统中使用32位SO库
    Android cmd命令查看apk是32位还是64位?
  • 原文地址:https://www.cnblogs.com/z941030/p/4741705.html
Copyright © 2011-2022 走看看