zoukankan      html  css  js  c++  java
  • 简述 jsp 页面的工作原理以及请求转发和重定向的区别(转载)

    JSP的工作原理

    当一个JSP页面第一次被请求时,容器首先会把JSP页面转换成Servlet。在转换时,所有HTML标签将被包含在println()语句中,所有JSP元素将会被转换成Java代码。

    在转换的过程中,若JSP页面存在语法错误,转换会被终止,并向服务器和客户端输出错误信息。如果转换成功,转换后的Servlet会被编译成相应的class文件。

    在调用Servlet时,首先执行jspInit()方法,然后调用jspService()方法处理客户端的请求。对客户端发送的每一个请求,JSP容器都会创建一个新的线程来处理。如果有多个客户端同时请求该JSP文件,JSP容器会为每个客户端请求创建对应一个线程。

    如果jsp文件被修改,服务器将根据设置决定是否对该文件进行重新编译。如果重新编译,内存中的Servlet会被新的编译结果取代。

    Servlet被处理完毕以后,调用jspDestroy()方法结束它的生命周期,同时被JVM(Java虚拟机)的垃圾回收器回收。

    注释:

    JSP页面必须要在JSP服务器内运行,如tomcat weblogic,jboss等等.(顺便说一下,apache 和 tomcat是两码事儿,有不少人认为apache就是tomcat,其实是错误的理解!~,tomcat只是apache中的一个子项目,apache是作为WEB应用服务器,而tomcat可以说是JSP或Servlet的一个web容器);

    JSP页面的访问者无须安装任何客户端,甚至不需要可以运行Java的运行环境,因为JSP页面输送到客户端的是标准HTML页面。

    请求转发和重定向的区别

    1)一个 web 资源收到客户端请求后,通知浏览器去访问另外一个 web 资源进行处理,称之为请求重定向。response.sendRedirect(“XXX.jsp 或者 servlet”)。

    2)一个 web 资源收到客户端请求后,通知服务器去调用另外一个 web 资源进行处理,称之为请求转发。

    request.getRequestDispatcher("XXX.jsp 或者servlet").forward(request,response)。
    • 1

    (1)请求转发:

    • 只能将请求转发给同一个 Web 应用;
    • 浏览器的地址栏不发生变化;
    • 转发的是同一次请求;请求转发的调用者和被调用者之间共享相同 request对象和 response 对象;
    • 转发在服务器端完成。请求转发实际上是通过服务器端将请求转发到另外的
    • 页面或者 Servlet 中。这个时候跳转的目标页面或者 Servlet 可以获取到请求对象,也可以获取到请求中的属性和参数。

    (2)重定向:

    • 重定向是在客户端完成的。实际上是第一次请求后,服务器端向客户端发送了一个指令,让客户端再次请求了一次服务器端,这个时候服务器第二次拿到的 request 对象已经不是第一次请求的 request 对象了,所以无法获取到第一次请求里的参数和属性。
    • 不仅可以指定到同一个 web 应用,还可以指定到任何的 JSP 资源。
      浏览器地址栏显示 URL 变化
    • 重定向是两次不同请求,重定向调用者和被调用者使用各自的 Request 和Response 对象。
    • 重定向是在客户端完成的。

    --------------------- 作者:diligentyang 来源:CSDN 原文:https://blog.csdn.net/qq_28602957/article/details/53468300?utm_source=copy 版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    c++ 左值、右值;左值引用、右值引用
    leetcode 837 新21点
    c++ 继承和组合
    ubuntu 16.04 常用命令小结
    vim 常用命令小结(转)
    leetcode 1371. 每个元音包含偶数次的最长子字符串 (状压 + 前缀和 +hash)
    leetcode 974 和可被K整除的子数组
    leetcode 910 最小差值II
    关于 mysqladmin
    PHP闭包(Closure)初探
  • 原文地址:https://www.cnblogs.com/chyxOne/p/9765916.html
Copyright © 2011-2022 走看看