`
cakin24
  • 浏览: 1396529 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

JSP页面生命周期

    博客分类:
  • java
阅读更多
一 JSP页面生命周期图


 

 
 
二 生命周期解释


 
 
三 实战
1、创建JspLifeCycleDemo项目
2、编写index.jsp文件
<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8"%>
<%@ page import="java.text.*" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
   
    <title>My JSP 'index.jsp' starting page</title>
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">   
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <!--
        <link rel="stylesheet" type="text/css" href="styles.css">
        -->
  </head>
 
  <body>
    <h1>JSP生命周期</h1>
    <hr>
    <%
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
      String s = sdf.format(new Date());
    %>
        今天是:<%=s %>
  </body>
</html>
 
四 运行结果


 
 
五 运行说明
1、当Tomcat首次启动时,D:\apache-tomcat-7.0.81\work\Catalina\localhost\JspLifeCycleDemo目录为空,因为还没有收到任何请求。
 
2、当JSP页面首次请求时,在D:\apache-tomcat-7.0.81\work\Catalina\localhost\JspLifeCycleDemo\org\apache\jsp目录下会生成对于的Java文件和字节码文件。
其中:_jspInit函数在整个生命周期只运行一次。
_jspService函数每次请求都会运行。
/*
* Generated by the Jasper component of Apache Tomcat
* Version: Apache Tomcat/7.0.81
* Generated at: 2017-09-16 06:54:10 UTC
* Note: The last modified time of this file was set to
*       the last modified time of the source file after
*       generation to assist with modification tracking.
*/
package org.apache.jsp;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import java.util.*;
import java.text.*;
public final class index_jsp extends org.apache.jasper.runtime.HttpJspBase
    implements org.apache.jasper.runtime.JspSourceDependent {
  private static final javax.servlet.jsp.JspFactory _jspxFactory =
          javax.servlet.jsp.JspFactory.getDefaultFactory();
  private static java.util.Map<java.lang.String,java.lang.Long> _jspx_dependants;
  private volatile javax.el.ExpressionFactory _el_expressionfactory;
  private volatile org.apache.tomcat.InstanceManager _jsp_instancemanager;
  public java.util.Map<java.lang.String,java.lang.Long> getDependants() {
    return _jspx_dependants;
  }
  public javax.el.ExpressionFactory _jsp_getExpressionFactory() {
    if (_el_expressionfactory == null) {
      synchronized (this) {
        if (_el_expressionfactory == null) {
          _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();
        }
      }
    }
    return _el_expressionfactory;
  }
  public org.apache.tomcat.InstanceManager _jsp_getInstanceManager() {
    if (_jsp_instancemanager == null) {
      synchronized (this) {
        if (_jsp_instancemanager == null) {
          _jsp_instancemanager = org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(getServletConfig());
        }
      }
    }
    return _jsp_instancemanager;
  }
  public void _jspInit() {
  }
  public void _jspDestroy() {
  }
  public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
        throws java.io.IOException, javax.servlet.ServletException {
    final javax.servlet.jsp.PageContext pageContext;
    javax.servlet.http.HttpSession session = null;
    final javax.servlet.ServletContext application;
    final javax.servlet.ServletConfig config;
    javax.servlet.jsp.JspWriter out = null;
    final java.lang.Object page = this;
    javax.servlet.jsp.JspWriter _jspx_out = null;
    javax.servlet.jsp.PageContext _jspx_page_context = null;
    try {
      response.setContentType("text/html; charset=UTF-8");
      pageContext = _jspxFactory.getPageContext(this, request, response,
                  null, true, 8192, true);
      _jspx_page_context = pageContext;
      application = pageContext.getServletContext();
      config = pageContext.getServletConfig();
      session = pageContext.getSession();
      out = pageContext.getOut();
      _jspx_out = out;
      out.write("\r\n");
      out.write("\r\n");
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
      out.write("\r\n");
      out.write("\r\n");
      out.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\r\n");
      out.write("<html>\r\n");
      out.write("  <head>\r\n");
      out.write("    <base href=\"");
      out.print(basePath);
      out.write("\">\r\n");
      out.write("    \r\n");
      out.write("    <title>My JSP 'index.jsp' starting page</title>\r\n");
      out.write("\t<meta http-equiv=\"pragma\" content=\"no-cache\">\r\n");
      out.write("\t<meta http-equiv=\"cache-control\" content=\"no-cache\">\r\n");
      out.write("\t<meta http-equiv=\"expires\" content=\"0\">    \r\n");
      out.write("\t<meta http-equiv=\"keywords\" content=\"keyword1,keyword2,keyword3\">\r\n");
      out.write("\t<meta http-equiv=\"description\" content=\"This is my page\">\r\n");
      out.write("\t<!--\r\n");
      out.write("\t<link rel=\"stylesheet\" type=\"text/css\" href=\"styles.css\">\r\n");
      out.write("\t-->\r\n");
      out.write("  </head>\r\n");
      out.write("  \r\n");
      out.write("  <body>\r\n");
      out.write("    <h1>JSP生命周期</h1>\r\n");
      out.write("    <hr>\r\n");
      out.write("    ");
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
      String s = sdf.format(new Date());
    
      out.write("\r\n");
      out.write("        今天是:");
      out.print(s );
      out.write("\r\n");
      out.write("  </body>\r\n");
      out.write("</html>\r\n");
    } catch (java.lang.Throwable t) {
      if (!(t instanceof javax.servlet.jsp.SkipPageException)){
        out = _jspx_out;
        if (out != null && out.getBufferSize() != 0)
          try {
            if (response.isCommitted()) {
              out.flush();
            } else {
              out.clearBuffer();
            }
          } catch (java.io.IOException e) {}
        if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
        else throw new ServletException(t);
      }
    } finally {
      _jspxFactory.releasePageContext(_jspx_page_context);
    }
  }
}
 

 

3、如果JSP页面修改了,JSP引擎会重新编译JSP页面,再重新生成新的字节码文件。
  • 大小: 164.4 KB
  • 大小: 192.7 KB
  • 大小: 24.6 KB
1
0
分享到:
评论

相关推荐

    JSP的生命周期

    JSP页面的生命周期是理解其工作原理的关键之一。本文将详细介绍JSP的生命周期,包括它的两个主要阶段——前端准备阶段与实际运行阶段。 #### 二、前端准备阶段 前端准备阶段是指在JSP页面被首次请求之前所经历的一...

    SERVLET生命周期与JSP生命周期比较

    JSP页面的生命周期相对简单,主要包括以下几个步骤: 1. **翻译阶段**:当JSP页面首次被请求时,JSP引擎将其翻译成一个Servlet源文件。 2. **编译阶段**:接下来,编译器将生成的Servlet源文件编译成字节码文件(`....

    2022年处理添加留言的JSP页面.pptx

    "JSP页面留言处理" ...处理添加留言的JSP页面需要了解JSP技术的基础知识,如JSP页面生命周期、JSP指令、JSP动作元素、EL表达式等,同时也需要了解JSP页面的安全性、性能优化、调试和部署等知识点。

    jsp经典页面搜集集合

    JSP页面生命周期** JSP页面在首次请求时被转换成Servlet,然后经历初始化、服务、销毁三个阶段。在这个过程中,JSP页面中的Java代码会被执行,生成HTML并发送给客户端。 **7. JSTL(JavaServer Pages Standard Tag...

    JSP大学实用教程程序源代码

    JSP大学实用教程程序源代码涵盖了JSP技术的各个方面,包括JSP简介、JSP页面结构、JSP页面生命周期、JSP隐式对象、JSP动作元素、JSP国际化、JSP安全、JSP调试和JSP最佳实践等。该教程对于学习JSP技术的开发者非常有...

    JSP学习之jsp的生命周期

    当服务器接收到对JSP页面的请求时,JSP的第一个生命周期阶段开始。服务器会将JSP文件转换为一个Java源文件,这个过程叫做翻译。在这个过程中,JSP中的HTML、CSS和JavaScript代码保持不变,而JSP指令(如`&lt;%@ %&gt;`)和...

    JSP_jsp_application实例

    这个实例可能包含了多个JSP文件、Java源代码、配置文件和其他相关资源,帮助学习者理解和掌握JSP的核心概念,如JSP页面生命周期、内置对象、指令元素以及表达式语言等。 首先,JSP页面生命周期包括三个主要阶段:...

    JSP.rar_JSP基础教程_jsp_jsp 教程

    %&gt;`标记内可以声明变量和方法,这些变量和方法在JSP页面生命周期的整个过程中都是有效的。 **2.2表达式(Expressions)** `&lt;%= %&gt;`用于将Java表达式的结果插入到输出流中。这个结果可以是任何Java类型,最终会被...

    jsp-api-2.1.jar下载

    总的来说,`jsp-api-2.1.jar`作为JSP 2.1版本的核心库,包含了处理JSP页面生命周期、自定义标签、页面指令、错误处理等所有核心功能的类和接口。对于Java Web开发者而言,深入理解并熟练运用这些API,能够提升开发...

    jsp论坛中发布新帖

    当我们谈论“jsp论坛中发布新帖”时,这里涉及的知识点包括JSP页面生命周期、请求处理、数据持久化、用户界面设计以及安全控制等。 1. **JSP页面生命周期**:每个JSP页面在服务器端会被编译成一个Servlet,经历初始...

    我们上课用的jsp的ppt

    declaration %&gt;` 用于声明变量或方法,这些变量和方法可以在整个JSP页面生命周期中使用。 6. **动作(Actions)**:比如`&lt;jsp:include&gt;`、`&lt;jsp:forward&gt;`、`&lt;jsp:useBean&gt;`等,它们用于实现页面的包含、转发、...

    jsp设计内容详细代码完整

    5. **JSP页面生命周期** JSP页面在首次请求时会被转换成一个Servlet,并经历初始化、服务、销毁三个阶段。在这个过程中,JSP中的变量和方法会在适当的生命周期阶段进行初始化和处理。 6. **EL(Expression ...

    jsp统计访问人数源码

    2. JSP页面生命周期: JSP页面经历了转换、编译、初始化、服务和销毁五个阶段。在统计访问人数的应用中,我们主要关注服务阶段,即每当有新的请求到达时,JSP页面将被执行,更新访问次数。 3. JSP内置对象: JSP...

    JSP应用与开发技术(第二版)课后答案

    4. **JSP页面生命周期**:涉及JSP的转换、编译、加载和实例化过程。理解这一生命周期有助于优化性能和调试问题。 5. **EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library)**:EL是用于访问...

    jsp课本例题源代码

    JSP页面生命周期:** 每个JSP页面在服务器上都会经历编译、初始化、服务和销毁四个阶段。在编译阶段,JSP会被转换为一个Servlet类;初始化阶段,Servlet类的实例被创建;服务阶段,响应客户端请求;最后在销毁阶段...

    JSP网络开发逐步深入源代码

    ...%&gt;**:这是声明部分,可以声明变量、类或者接口,这些在JSP页面生命周期内都是有效的。 - ****:这是Java脚本let,可以在其中编写任意的Java语句。 **3. JSP动作标签** - **&lt;jsp:include&gt;**:动态地包含一个JSP...

    jsp基础ppt《JSP 2.0应用教程》

    6. **JSP页面生命周期**:包括加载、初始化、服务、重渲染和销毁五个阶段,理解这个生命周期对于优化JSP页面性能至关重要。 7. **Oracle数据库操作**:教程可能包含如何使用JDBC与Oracle数据库交互,包括连接数据库...

    JSP学习电子教案JSP

    JSP页面生命周期 JSP页面在服务器上经历编译、初始化、服务和销毁四个阶段。在编译阶段,JSP会被转换为一个Servlet类;在服务阶段,每次请求都会调用该Servlet的service方法。 ### 8. JSP与Servlet的关系 JSP本质...

    Servlet Jsp 技术概述 pdf

    6. **JSP页面生命周期**:从JSP到Servlet的转换过程,以及page、request、session和application四个作用域。 7. **MVC模式**:如何在Servlet和JSP中实现MVC模式,以及它对项目结构的影响。 8. **实战示例**:可能...

    Java程序设计 12 JSP Servlet.ppt

    3. JSP 容器管理 JSP 页面生命周期,分为两个阶段:转换阶段和执行阶段 4. 转换阶段:JSP 容器检查 JSP 页面的语法是否正确,将 JSP 页面转换为 Servlet 源文件,然后调用 javac 命令编译 Servlet 源文件生成字节码...

Global site tag (gtag.js) - Google Analytics