JavaEE

来源:互联网 发布:中国seo排行榜 编辑:程序博客网 时间:2024/06/16 00:24

一、JSP生命周期
JSP生命周期就是从创建到销毁的整个过程,类似于servlet生命周期,区别在于JSP生命周期还包括将JSP文件编译成servlet。以下是JSP生命周期的几个阶段:

  • 编译阶段
  • 初始化阶段
  • 执行阶段
  • 销毁阶段

JSP编译
当浏览器请求JSP页面时,JSP引擎会首先去检查是否需要编译这个文件。如果这个文件没有被编译过,或者在上次编译后被更改过,则编译这个JSP文件。
编译的过程包括三个步骤:

  • 解析JSP文件
  • 将JSP文件转为servlet
  • 编译servlet

JSP初始化
容器载入JSP文件后,它会在为请求提供任何服务前调用jspInit()方法。一般只执行一次。

public void jspInit() {    // 初始化代码}

JSP执行
这一阶段描述了JSP生命周期中一切与请求相关的交互行为,直到被销毁。

void _jspService(HttpServletRequest request, HttpServletResponse response) {    // 服务端处理代码}

_jspService()方法在每个请求(request)中被调用一次并且负责产生与之相对应的响应(response)。

JSP清理
JSP生命周期的销毁阶段描述了当一个JSP网页从容器中被移除时所发生的一切。

public void jspDestory() {    // 清理代码}

二、Servlet包
Java Servlet 是运行在带有支持Java Servlet规范的解释器的web服务器上的Java类。
Servlet可以使用javax.servletjavax.servlet.http包创建,它是Java企业版的标准组成部分。
这些类实现Java Servlet和JSP规范。如:Java Servlet 2.5 和 JSP 2.1。

三、Servlet生命周期

  • Servlet通过调用init()方法进行初始化
  • Servlet通过调用service()方法来处理客户端的请求
  • Servlet通过调用destory()方法终止(结束)
  • 最后,Servlet是由JVM的垃圾回收器进行垃圾回收的。

init()方法
init 方法被设计成只调用一次。它在第一次创建Servlet时被调用,在后续每次用户请求时不再调用。
Servlet创建于用户第一次调用对应于该Servlet的URL时,但是也可以指定Servlet在服务器第一次启动时被加载。
当用户调用一个Servlet时,就会创建一个Servlet实例,每一个用户请求都会产生一个新的线程,适当的时候移交给doGet或doPost方法。

public void init() throws ServletException {    // 初始化代码...}

service()方法
service()方法是执行实际任务的主要方法。Servlet 容器(即 Web 服务器)调用service() 方法来处理来自客户端(浏览器)的请求,并把格式化的响应写回给客户端。
每次服务器接收到一个 Servlet 请求时,服务器会产生一个新的线程并调用服务。service() 方法检测 HTTP 请求类型(GET、POST、PUT、DELETE 等),并在适当的时候调用 doGet、doPost、doPut、doDelete 等方法。

public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {}

service() 方法由容器调用,service方法在适当的时候调用 doGet、doPost、doPut、doDelete 等方法。所以,不用对 service() 方法进行修改,只需重写 doGet() 或 doPost() 即可。

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  // ...}public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  // ...}

destory() 方法
destory() 方法只会被调用一次,在 Servlet 生命周期结束时被调用。在调用 destory() 方法之后,servlet 对象被标记为垃圾回收。

public void destory() {    // ...}

四、转发和重定向
转发是一次请求,地址栏的地址不变,是服务器行为;重定向是两次请求,地址栏地址会变,是浏览器行为。

request.getRequestDispatcher("...").forward(request, response); // 转发response.sendRedirect("..."); // 重定向

五、URL重写
参考:http://blog.jobbole.com/104898/

六、会话(session)

原创粉丝点击