JSP技术和Servlet讲解
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第3章 Servlet和JSP
3.1 JSP的工作原理 3.2 JSP的注释方式 3.3 JSP声明方式 3.4 JSP表达式 3.5 JSP脚本段 3.6 JSP编译指令 3.7 JSP动作指令 3.8 JSP内置对象
3.9 Servlet开发流程 3.10 HttpServlet的应用 3.11 Servlet生命周期 3.12 自定义标签库 3.13 Servlet过滤器 3.14 Servlet监听器
3.1 JSP的工作原理(1)
JSP的工作原理图如下图 所示
对该原理图进行说明如下:
3.1 JSP的工作原理(2)
当一个JSP页面第一次被请求时,容器首先会把JSP页面转换成 Servlet。在转换时,所有HTML标签将被包含在println()语句中, 所有JSP元素将会被转换成Java代码。 在转换的过程中,若JSP页面存在语法错误,转换会被终止,并向 服务器和客户端输出错误信息。如果转换成功,转换后的Servlet 会被编译成相应的class文件。 在调用Servlet时,首先执行jspInit()方法,然后调用jspService()方 法处理客户端的请求。对客户端发送的每一个请求,JSP容器都会 创建一个新的线程来处理。如果有多个客户端同时请求该JSP文件, JSP容器会为每个客户端请求创建对应一个线程。 如果jsp文件被修改,服务器将根据设置决定是否对该文件进行重 新编译。如果重新编译,内存中的Servlet会被新的编译结果取代。 Servlet被处理完毕以后,调用jspDestroy()方法结束它的生命周期, 同时被JVM(Java虚拟机)的垃圾回收器回收。
或
<jsp:include page="文件路径"/>
返回
3.7.2 JSP动作指令—jsp:forward
jsp:forward指令用于执行页面转向,将请求的处理转发 到下一页面。
语法格式:
<jsp:forward page="文件路径"> <jsp:param name="参数名1" value="参数值"/> ...... <jsp:param name="参数名n" value="参数值"/> </jsp:forward>
<body> <% List list = new ArrayList(); %>
</body>
返回
3.6 JSP编译指令
JSP编译指令用于设置整个JSP页面的相关属性,比如 页面的编码格式、所包含的文件等等。这些编译指令 包含在“<%@ page %> ”标记中。
常用编译指令:
✓page指令 ✓include指令 ✓taglib指令
返回
3.3 JSP声明方式
语法格式如下:
<%! declaration; [ declaration; ] ... %>
注意:
1. 在一个JSP页面中可一次声明一个变量和方法,还可一次声明多 个变量和方法,但是它们都只在当前页面中有效。 2. JSP声明必须包含在<%! %>标记内,并且每个声明的末尾都必 须有一个分号。在使用<%! %>声明时,不能在“%”和“!”之间 留有空格。
返回
wk.baidu.com
3.7 JSP动作指令
JSP动作指令用于运行脚本动作,共有7种动作指令: ✓ jsp:include指令 ✓ jsp:forward指令 ✓ jsp:useBean指令 ✓ jsp:setProperty指令 ✓ jsp:getProperty指令 ✓ jsp:plugin指令 ✓ jsp:param指令
返回
3.6.1 JSP编译指令—page指令
page指令用于定义JSP页面中的全局属性,page指令包 含属性说明如下:
返回
2.6.2 JSP编译指令—include指令 和taglib指令
include指令用于在JSP页面中包含其它文件。
语法格式:<%@ include file="路径名"%>
返回
3.7.1 JSP动作指令—jsp:include
jsp:include指令用于在请求处理阶段包含来自一个 Servlet或JSP页面的响应。
语法格式:
<jsp:include page="文件路径"> <jsp:param name="参数名1" value="参数值"/> ...... <jsp:param name="参数名n" value="参数值"/> </jsp:include>
返回
3.2 JSP的注释方式
HTML注释方式
格式:<!-- 注释语句[%=表达式%] --> 说明:HTML注释将会被发送到客户端,用户查看页面源代码就 可以看到这些注释。
JSP隐藏注释方式
格式:<%-- 注释语句 --%> 说明:JSP隐藏注释不会被发送到客户端,用户使用查看源代码的 方式是看不到的注释内容。
返回
3.4 JSP表达式
JSP表达式用来在JSP页面输出结果 。表达式在运行后 会被自动转换为字符串,然后插入到页面指定的位置。
语法格式:<%= 表达式 %> 应用示例:
<body> <%Random rnd=new Random(); %> 得到的随机数是:<%=rnd.nextInt(100)%>
include指令包含的过程是静态的,包含的文件可以是 JSP、HTML或者inc文件等等。
taglib指令允许用户使用标签库自定义新的标签 。
语法格式:<%@ taglib uri="taglibURI" prefix="tabPrefix"%>
其中,uri用于根据标签前缀对自定义的标签进行唯一 的命名 ;prefix用于指定标签的前缀 。
</body>
返回
3.5 JSP脚本段
脚本段(Scriptlets)是JSP代码片段或脚本片段,嵌在 “<% %>”标记中。在脚本段中可以定义变量、调用方 法和进行各种表达式运算,每行语句后面加入分号。 这种Java代码在Web服务器响应请求时会运行。
语法格式:<%Java代码; %> 应用示例:
或
<jsp:forward page="文件路径"/>
返回
3.7.3 JSP动作指令—jsp:useBean
jsp:useBean指令用来在JSP页面内创建一个JavaBean实 例。
3.1 JSP的工作原理 3.2 JSP的注释方式 3.3 JSP声明方式 3.4 JSP表达式 3.5 JSP脚本段 3.6 JSP编译指令 3.7 JSP动作指令 3.8 JSP内置对象
3.9 Servlet开发流程 3.10 HttpServlet的应用 3.11 Servlet生命周期 3.12 自定义标签库 3.13 Servlet过滤器 3.14 Servlet监听器
3.1 JSP的工作原理(1)
JSP的工作原理图如下图 所示
对该原理图进行说明如下:
3.1 JSP的工作原理(2)
当一个JSP页面第一次被请求时,容器首先会把JSP页面转换成 Servlet。在转换时,所有HTML标签将被包含在println()语句中, 所有JSP元素将会被转换成Java代码。 在转换的过程中,若JSP页面存在语法错误,转换会被终止,并向 服务器和客户端输出错误信息。如果转换成功,转换后的Servlet 会被编译成相应的class文件。 在调用Servlet时,首先执行jspInit()方法,然后调用jspService()方 法处理客户端的请求。对客户端发送的每一个请求,JSP容器都会 创建一个新的线程来处理。如果有多个客户端同时请求该JSP文件, JSP容器会为每个客户端请求创建对应一个线程。 如果jsp文件被修改,服务器将根据设置决定是否对该文件进行重 新编译。如果重新编译,内存中的Servlet会被新的编译结果取代。 Servlet被处理完毕以后,调用jspDestroy()方法结束它的生命周期, 同时被JVM(Java虚拟机)的垃圾回收器回收。
或
<jsp:include page="文件路径"/>
返回
3.7.2 JSP动作指令—jsp:forward
jsp:forward指令用于执行页面转向,将请求的处理转发 到下一页面。
语法格式:
<jsp:forward page="文件路径"> <jsp:param name="参数名1" value="参数值"/> ...... <jsp:param name="参数名n" value="参数值"/> </jsp:forward>
<body> <% List list = new ArrayList(); %>
</body>
返回
3.6 JSP编译指令
JSP编译指令用于设置整个JSP页面的相关属性,比如 页面的编码格式、所包含的文件等等。这些编译指令 包含在“<%@ page %> ”标记中。
常用编译指令:
✓page指令 ✓include指令 ✓taglib指令
返回
3.3 JSP声明方式
语法格式如下:
<%! declaration; [ declaration; ] ... %>
注意:
1. 在一个JSP页面中可一次声明一个变量和方法,还可一次声明多 个变量和方法,但是它们都只在当前页面中有效。 2. JSP声明必须包含在<%! %>标记内,并且每个声明的末尾都必 须有一个分号。在使用<%! %>声明时,不能在“%”和“!”之间 留有空格。
返回
wk.baidu.com
3.7 JSP动作指令
JSP动作指令用于运行脚本动作,共有7种动作指令: ✓ jsp:include指令 ✓ jsp:forward指令 ✓ jsp:useBean指令 ✓ jsp:setProperty指令 ✓ jsp:getProperty指令 ✓ jsp:plugin指令 ✓ jsp:param指令
返回
3.6.1 JSP编译指令—page指令
page指令用于定义JSP页面中的全局属性,page指令包 含属性说明如下:
返回
2.6.2 JSP编译指令—include指令 和taglib指令
include指令用于在JSP页面中包含其它文件。
语法格式:<%@ include file="路径名"%>
返回
3.7.1 JSP动作指令—jsp:include
jsp:include指令用于在请求处理阶段包含来自一个 Servlet或JSP页面的响应。
语法格式:
<jsp:include page="文件路径"> <jsp:param name="参数名1" value="参数值"/> ...... <jsp:param name="参数名n" value="参数值"/> </jsp:include>
返回
3.2 JSP的注释方式
HTML注释方式
格式:<!-- 注释语句[%=表达式%] --> 说明:HTML注释将会被发送到客户端,用户查看页面源代码就 可以看到这些注释。
JSP隐藏注释方式
格式:<%-- 注释语句 --%> 说明:JSP隐藏注释不会被发送到客户端,用户使用查看源代码的 方式是看不到的注释内容。
返回
3.4 JSP表达式
JSP表达式用来在JSP页面输出结果 。表达式在运行后 会被自动转换为字符串,然后插入到页面指定的位置。
语法格式:<%= 表达式 %> 应用示例:
<body> <%Random rnd=new Random(); %> 得到的随机数是:<%=rnd.nextInt(100)%>
include指令包含的过程是静态的,包含的文件可以是 JSP、HTML或者inc文件等等。
taglib指令允许用户使用标签库自定义新的标签 。
语法格式:<%@ taglib uri="taglibURI" prefix="tabPrefix"%>
其中,uri用于根据标签前缀对自定义的标签进行唯一 的命名 ;prefix用于指定标签的前缀 。
</body>
返回
3.5 JSP脚本段
脚本段(Scriptlets)是JSP代码片段或脚本片段,嵌在 “<% %>”标记中。在脚本段中可以定义变量、调用方 法和进行各种表达式运算,每行语句后面加入分号。 这种Java代码在Web服务器响应请求时会运行。
语法格式:<%Java代码; %> 应用示例:
或
<jsp:forward page="文件路径"/>
返回
3.7.3 JSP动作指令—jsp:useBean
jsp:useBean指令用来在JSP页面内创建一个JavaBean实 例。