【JavaWeb】简述 jsp 页面的工作原理以及请求转发和重定向的区别
JSP的工作原理当一个JSP页面第一次被请求时,容器首先会把JSP页面转换成Servlet。在转换时,所有HTML标签将被包含在println()语句中,所有JSP元素将会被转换成Java代码。在转换的过程中,若JSP页面存在语法错误,转换会被终止,并向服务器和客户端输出错误信息。如果转换成功,转换后的Servlet会被编译成相应的class文件。 在调用Servlet时,首先执行jspInit(
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)请求转发:
- 只能将请求转发给同一个 Web 应用;
- 浏览器的地址栏不发生变化;
- 转发的是同一次请求;请求转发的调用者和被调用者之间共享相同 request对象和 response 对象;
- 转发在服务器端完成。请求转发实际上是通过服务器端将请求转发到另外的
- 页面或者 Servlet 中。这个时候跳转的目标页面或者 Servlet 可以获取到请求对象,也可以获取到请求中的属性和参数。
(2)重定向:
- 重定向是在客户端完成的。实际上是第一次请求后,服务器端向客户端发送了一个指令,让客户端再次请求了一次服务器端,这个时候服务器第二次拿到的 request 对象已经不是第一次请求的 request 对象了,所以无法获取到第一次请求里的参数和属性。
- 不仅可以指定到同一个 web 应用,还可以指定到任何的 JSP 资源。
浏览器地址栏显示 URL 变化 - 重定向是两次不同请求,重定向调用者和被调用者使用各自的 Request 和Response 对象。
- 重定向是在客户端完成的。
更多推荐
所有评论(0)