`
cakin24
  • 浏览: 1333345 次
  • 性别: 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与Servlet 技术总结

    1. JSP页面元素构成 2 2. JSP脚本元素 2 3. 注释 2 4. JSP指令 2 5. JSP动作元素 3 6. JSP内置对象 5 7. JSP内置对象及其作用 5 8. 获取页面参数 5 9. 重定向(forward与sendRedirect)区别 6 10. JSP和...

    类似于Jira的基于JAVA语言写的项目管理软件,可以跟踪任务和bug的进度,实现对任务和bug全生命周期管理。

    使用JAVA语言写的项目管理软件,可以跟踪任务和bug的进度,实现对任务和bug全生命周期管理。 这个项目是很早之前开发的(大约在2008年前后),所以使用的技术是传统的JSP/Servlet+JDBC方式。虽然技术比较老了,但是...

    JSP 程序设计从入门到精通 PDF 教程

     1.3.1 JSP页面中的元素 14  1.3.2 JSP语法概要 15  1.3.3关于模板文本(静态HTML) 16  1.4 运行第一个Jsp程序 16  1. 5本章小结 20  第2章Jsp 基础学习 20  2.1 JSP基本语法 20  2.1.1 JSP 语法之...

    Servlet与JSP核心编程第2版

    3.6 servlet的生命周期 3.7 singlethreadmodel接口 3.8 servlet的调试 第4章 客户请求的处理:表单数据 4.1 表单数据的作用 4.2 在servlet中读取表单数据 4.3 示例:读取3个参数 4.4 示例:读取所有...

    源码基于JSP的vijun-1.0-release.rar

    通过这个资料包,用户可以深入理解JSP与Servlet的结合方式,掌握JSP页面的生命周期,了解如何在JSP页面中嵌入Java代码和调用JavaBean组件。该资料包内含丰富的示例项目,涵盖了从基础的页面布局、表单处理到复杂的...

    JSP/Servlet Java面试逻辑题

    答:Jsp页面中的form标签里的method属性为get时调用doGet(),为post时调用doPost()。 5、如何现实servlet的单线程模式★★ 答:&lt;%@page isThreadSafe=false%&gt; 面试中会遇到! 6、页面间对象传递的方法 答:...

    JSP期末复习资料详细解析

    5.Servlet的生命周期是载入、初始化、执行和删除。 6.JSP技术是在传统的网页文件HTML中加入java程序片段和JSP标记构建的JSP网页 7.什么是C/S结构?什么是B/S结构?两者由什么区别? 答:C/S是Client/Server(客户机/...

    韩顺平sevlet,jsp视频教程知识点.txt

    视频描述: (-) servlet体系结构的介绍(二) servlet的网络拓扑结构(三) servlet的几个实例(四) servlet的生命周期(五) 一个简单的用户登录系统 韩顺平 j2ee视频实战教程servlet第2讲(下集).wmv 视频描述-) servlet...

    jsp最详细教程 最容易入门

    第1 章 JSP 简介................................................................................10 1.1 什么是JSP........................................10 1.2 JSP 页面.....................................

    JSP动态网站开发基础教程与实验指导(从基础到应用)光盘

    8.1.3 Servlet的生命周期 173 8.1.4 开发、部署一个简单的Servlet 174 8.2 Servlet常用接口及使用 177 8.2.1 Servlet体系 178 8.2.2 Servlet实现相关 179 8.2.3 Servlet请求和响应相关 182 8.2.4 配置相关 186 8.2.5...

    JSP和Servlet面试题

    Servlet的执行流程也就是servlet的生命周期,当服务器启动的时候生命周期开始,然后通过init()《启动顺序根据web.xml里的startup-on-load来确定加载顺序》 方法初始化servlet,再根据不同请求调用doGet或doPost...

    JSP 点击量统计

    这个对象表示JSP页面的整个生命周期中。当JSP页面初始化时创建此对象,当JSP页面调用jspDestroy()时删除该对象。 以下是在应用中创建变量的语法: application.setAttribute(String Key, Object Value); 您可以...

    JSP面试题--基础

    1 HTTP是一个基于请求/响应模式的、无状态的协议。无状态是什么意思?什么协议是有状态的么? ... 3 说说什么是MVC 4 JSP页面的构成(Java脚本)。 5 Servlet的用途,在MVC中充当的角色。 6 Servlet的生命周期。

    提升JSP应用程序的七大绝招

    在一个servlet的生命周期中,init()方法只会被调用一次。通过在init()方法中缓存一些静态的数据或完成一些只需要执行一次的、耗时的操作,就可大大地提高系统性能。 例如,通过在init()方法中建立一个JDBC连接池是...

    用户信息管理系统(仅登录注册搜索列表)【ssh+jsp+mysql5.x】

    Spring框架管理对象的依赖注入和生命周期,确保了系统的松耦合性,提高了组件的复用性。Hibernate则作为ORM解决方案,处理了所有和数据存取相关的复杂性,让数据持久化变得简单而高效。前端页面利用JSP来实现动态...

    JSP高级编程

    Enterprise JavaBeans 10.1 Java服务器端组件标准—EJB 10.1.1 ...生命周期 10.3 Entity Bean 10.3.1 Entity Bean的特性 10.3.2 Entity Bean的生命周期 10.4 EJB的开发 10.4.1 Enterprise...

    JSP复习题1纯题目1

    7、由 JSP 页面向 Tag 文件传递数据要使用的指令是( ) 8、在 JavaWeb 中, Ser vl et 从实例化到消亡是一个生命周期 9、在 JSP

    教务管理系统(jsp+servlet+mysql).rar

    教务管理系统(jsp+servlet+mysql).rar 是一个计算机专业的 JSP 源码资料包,它包含了一个完整的教务管理系统的源代码和相关文档。...Servlet 的编写和配置,了解 Servlet 的生命周期和工作原理;MySQL

    jsp从入门到高级编程

    10.2.2 Session Bean的生命周期 10.3 Entity Bean 10.3.1 Entity Bean的特性 10.3.2 Entity Bean的生命周期 10.4 EJB的开发 10.4.1 Enterprise JavaBeans的实际处理文件 10.4.2 实现EJBObject文件 10.4.3 ...

Global site tag (gtag.js) - Google Analytics