一 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页面,再重新生成新的字节码文件。
相关推荐
JSP页面的生命周期是理解其工作原理的关键之一。本文将详细介绍JSP的生命周期,包括它的两个主要阶段——前端准备阶段与实际运行阶段。 #### 二、前端准备阶段 前端准备阶段是指在JSP页面被首次请求之前所经历的一...
JSP页面的生命周期相对简单,主要包括以下几个步骤: 1. **翻译阶段**:当JSP页面首次被请求时,JSP引擎将其翻译成一个Servlet源文件。 2. **编译阶段**:接下来,编译器将生成的Servlet源文件编译成字节码文件(`....
"JSP页面留言处理" ...处理添加留言的JSP页面需要了解JSP技术的基础知识,如JSP页面生命周期、JSP指令、JSP动作元素、EL表达式等,同时也需要了解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文件转换为一个Java源文件,这个过程叫做翻译。在这个过程中,JSP中的HTML、CSS和JavaScript代码保持不变,而JSP指令(如`<%@ %>`)和...
这个实例可能包含了多个JSP文件、Java源代码、配置文件和其他相关资源,帮助学习者理解和掌握JSP的核心概念,如JSP页面生命周期、内置对象、指令元素以及表达式语言等。 首先,JSP页面生命周期包括三个主要阶段:...
%>`标记内可以声明变量和方法,这些变量和方法在JSP页面生命周期的整个过程中都是有效的。 **2.2表达式(Expressions)** `<%= %>`用于将Java表达式的结果插入到输出流中。这个结果可以是任何Java类型,最终会被...
总的来说,`jsp-api-2.1.jar`作为JSP 2.1版本的核心库,包含了处理JSP页面生命周期、自定义标签、页面指令、错误处理等所有核心功能的类和接口。对于Java Web开发者而言,深入理解并熟练运用这些API,能够提升开发...
当我们谈论“jsp论坛中发布新帖”时,这里涉及的知识点包括JSP页面生命周期、请求处理、数据持久化、用户界面设计以及安全控制等。 1. **JSP页面生命周期**:每个JSP页面在服务器端会被编译成一个Servlet,经历初始...
declaration %>` 用于声明变量或方法,这些变量和方法可以在整个JSP页面生命周期中使用。 6. **动作(Actions)**:比如`<jsp:include>`、`<jsp:forward>`、`<jsp:useBean>`等,它们用于实现页面的包含、转发、...
5. **JSP页面生命周期** JSP页面在首次请求时会被转换成一个Servlet,并经历初始化、服务、销毁三个阶段。在这个过程中,JSP中的变量和方法会在适当的生命周期阶段进行初始化和处理。 6. **EL(Expression ...
2. JSP页面生命周期: JSP页面经历了转换、编译、初始化、服务和销毁五个阶段。在统计访问人数的应用中,我们主要关注服务阶段,即每当有新的请求到达时,JSP页面将被执行,更新访问次数。 3. JSP内置对象: JSP...
4. **JSP页面生命周期**:涉及JSP的转换、编译、加载和实例化过程。理解这一生命周期有助于优化性能和调试问题。 5. **EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library)**:EL是用于访问...
JSP页面生命周期:** 每个JSP页面在服务器上都会经历编译、初始化、服务和销毁四个阶段。在编译阶段,JSP会被转换为一个Servlet类;初始化阶段,Servlet类的实例被创建;服务阶段,响应客户端请求;最后在销毁阶段...
...%>**:这是声明部分,可以声明变量、类或者接口,这些在JSP页面生命周期内都是有效的。 - ****:这是Java脚本let,可以在其中编写任意的Java语句。 **3. JSP动作标签** - **<jsp:include>**:动态地包含一个JSP...
6. **JSP页面生命周期**:包括加载、初始化、服务、重渲染和销毁五个阶段,理解这个生命周期对于优化JSP页面性能至关重要。 7. **Oracle数据库操作**:教程可能包含如何使用JDBC与Oracle数据库交互,包括连接数据库...
JSP页面生命周期 JSP页面在服务器上经历编译、初始化、服务和销毁四个阶段。在编译阶段,JSP会被转换为一个Servlet类;在服务阶段,每次请求都会调用该Servlet的service方法。 ### 8. JSP与Servlet的关系 JSP本质...
6. **JSP页面生命周期**:从JSP到Servlet的转换过程,以及page、request、session和application四个作用域。 7. **MVC模式**:如何在Servlet和JSP中实现MVC模式,以及它对项目结构的影响。 8. **实战示例**:可能...
3. JSP 容器管理 JSP 页面生命周期,分为两个阶段:转换阶段和执行阶段 4. 转换阶段:JSP 容器检查 JSP 页面的语法是否正确,将 JSP 页面转换为 Servlet 源文件,然后调用 javac 命令编译 Servlet 源文件生成字节码...