第3章 JSP和Servlet
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
taglib
3.7 JSP动作指令
JSP动作指令用于运行脚本动作,共有7种动作指令:
jsp:include指令 jsp:forward指令 jsp:useBean指令 jsp:setProperty指令 jsp:getProperty指令 jsp:plugin指令 jsp:param指令
第3章 JSP和Servlet
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 Servlet的生命周期 3.11 Servlet开发流程 3.12 自定义标签库 3.13 Servlet过滤器 3.14 Servlet监听器
或
<jsp:include page="文件路径"/>
directive\jsp-include.jsp directive\scriptlet.jsp
3.7.1 JSP动作指令—jsp:include
静态导入与动态导入的区别
静态导入是将被导入页面的代码完全融合,两个页 面融合成一个整体Servlet;而动态导入则在Servlet 中使用include方法来引入被导入页面的内容
3.6.1 JSP编译指令—page指令
page指令对整个页面有效,包括静态的包含文 件,但不能用于被动态包含的文件 在一个JSP页面中可以使用多个page指令, page指令中的属性只能出现一次。 errorPage属性
directive\errorTest.jsp directive\error.jsp
_jspService()方法、 _jspInit()方法、 _jspDestroy()方法
转换成的servlet程序的生命周期和一般的servlet一样
3.1 JSP简介
注意:
JSP文件必须在JSP服务器内运行 JSP文件必须生成Servlet才能执行 每个JSP页面的第一个访问者速度很慢,因为必须 等待JSP编译成Servlet JSP页面的访问者无需安装任何客户端,甚至不需 要可以运行Java的环境,因为JSP页面输送到客户 端的是标准的HTML页面。
scope属性为JavaBean的有效范围 (request、session、 page、application ) class属性指定了JavaBean所归属的类 。
3.7.4 JSP动作指令—jsp:setProperty
jsp:setProperty指令用来设置Bean属性值
语法格式:
<jsp:setProperty name=“JavaBean的实例名" property="*"/> 或 <jsp:setProperty name="JavaBean的实例名" property="属性名称" param=" 参数名称"/> 或 <jsp:setProperty name="JavaBean的实例名" property="属性名称" value=" 属性值"/>
3.1 JSP简介
JSP和Servlet是Java EE规范的两个基本成员 JSP和Servlet的本质是一样的,因为JSP必须编译成Servlet才能 运行。 JSP是在HTML页面中嵌入Java代码片段,或使用各种JSP标签, 从而可以动态地提供页面内容 JSP慢慢发展成为单一的表现层技术。 随着Java EE 技术的发展,又出现了FreeMarker、Velocity、 Tapestry等表现层技术。但JSP依然是使用最广泛的表现层技术。
3.7.1 JSP动作指令—jsp:include
用于在请求处理阶段包含来自一个Servlet或 JSP页面的响应。 语法格式:
<jsp:include page="文件路径"> <jsp:param name="参数名1" value="参数值"/> ...... <jsp:param name="参数名n" value="参数值"/> </jsp:include>
3.7.5 JSP动作指令—jsp:getProperty
用来读取Bean的属性值,并将其转换为一个 字符串在页面上输出 语法格式:
<jsp:getProperty name=“bean的实例名" property=" 属性名称"/>
name对应着jsp:useBean指令的id值 property对应着jsp:useBean中的属性名。
静态导入时被导入页面的编译指令会起作用,而动 态导入时被导入页面的编译指令则失去作用
动态导入还可以增加额外的参数
3.7.2 JSP动作指令—jsp:forward
用于执行页面转向,将请求的处理转发到下一 页面。
执行forward指令时,客户端的请求参数不会丢失, 用户请求的地址依然没有发生变化, 但页面内容却完全变为forward目标页的内容。
3.7.2 JSP动作指令—jsp:forward
代码
directive\form.jsp directive\jsp-forward.jsp directive\forward-result.jsp 执行forward时,被forward的页面将完全代替原有页 面 执行include时,被include的页面只是插入原有页面 forward拿目标页代替原有页面,include则拿目标页 面插入原有页面
isThreadSafe Info errorPage
指定当前JSP页面能否处理多个线程的 同步请求 指定当前JSP页面的相关信息
指定当前JSP页面发生错误时转向的错 误处理页面 contentType 指定当前JSP页面MIME类型的编码格 式 isErrorPage 指定当前JSP页面是否为错误处理的页 面 pageEncoding 指定当前JSP页面编码的字符集,默认 值为ISO-8859-1
note\note. jsp
3.3 JSP声明方式
语法格式如下: <%! declaration; [ declaration; ] ... %> 注意:
1. 在一个JSP页面中可一次声明一个变量和方法,还可一次声明多个变量和方法,但
是它们都只在当前页面中有效。 2. JSP声明必须包含在<%! %>标记内, 并且每个声明的末尾都必须有一个分号。 使用<%! %>声明时,不能在“%”和“!”之间留有空格。
basicSyntax\declare.jsp
3.4 JSP表达式
JSP表达式用来在JSP页面输出结果
表达式在运行后会被自动转换为字符串,然后 插入到页面指定的位置。
语法格式:<%= 表达式 %> 应用示例:
<body> <%Random rnd=new Random(); %> 得到的随机数是: <%=rnd.nextInt(100)%> </body> basicSyntax/outputEx.jsp
forward与include的比较
3.7.3 JSP动作指令—jsp:useBean
用于在JSP页面内创建一个JavaBean实例
语法格式: <jsp:useBean id=“JavaBean的实例名” scope=“有效范围” class=“包名.类名”/> id属性指定了JavaBean的实例名 ,
2.6.2 JSP编译指令—include指令
include指令用于在JSP页面中包含其它文件。
语法格式:
<%@ include file="路径名"%>
include指令包含的过程是静态的,file属性值是一个相对路径; 包含的文件可以是JSP、HTML或者inc文件等等。 被包含页面的内容完全融入到包含页面所生成的Servlet中。
请求处理阶段
使用转换编译好的servlet对Web请求进行响应
3.1 JSP简介
在Tomcat Web服务器中,由JSP编译成Java Servlet
程序被放在\work\Catalina\localhost\project_name\org\apache\jsp
在生成的servlet中包括很多的注释转换信息。 转换成的servlet程序继承org.apache.jasper.runtime.HttpJspBase类, 实现了javax.servlet.jsp.HttpJspPage接口
3.7.6 JSP动作指令—jsp:plugin 和
语法格式:
<jsp:forward page="文件路径"> <jsp:param name="参数名1" value="参数值"/> ...... <jsp:param name="参数名n" value="参数值"/> </jsp:forward>
或
<jsp:forward page="文件路径"/>
3.2 JSP的注释方式
HTML注释方式
格式:<!-- 注释语句[%=表达式%] --> 说明:HTML注释将会被发送到客户端,用户查看页面源代码就可以 看到这些注释。
JSP隐藏注释方式
格式:<%-- 注释语句 --%>
说明:JSP隐藏注释不会被发送到客户端,用户使用查看源代码的方 式是看不到的注释内容。
包含页面在编译时将完全包含被包含页面的代码 directive\staticInclude.jsp directive\scriptlet.jsp
2.6.2 JSP编译指令—taglib指令
taglib指令允许用户使用标签库自定义新的标签 。 语法格式:
Baidu Nhomakorabea
<%@ taglib uri="taglibURI" prefix="tabPrefix"%> uri用于根据标签前缀对自定义的标签进行唯一的命名 ; prefix用于指定标签的前缀
page指令用于定义JSP页面中的全局属性
language 指定JSP脚本所采用的语言,目前仅支持Java, 默认值为Java extends 指定当前的JSP页面产生的Servlet继承自哪个 父类 import 指定当前的JSP页面采用的Java API,多个API 之间用逗号分开 session 指定当前的JSP页面是否使用session,默认值为 true buffer 指定输出流缓存的大小,默认为8Kb autoFlush 指定输出流缓冲区是否需要自动清除,默认值 为true
3.1 JSP简介
JSP的优点:
是一种比较简单的编程机制
Servlet是标准的Java面向对象的程序设计 JSP更像网页编程
由于与HTML很接近,更适合编写Web程序的界面。
通过和其他Java对象的配合,JSP可以实现程序界面 功能和控制功能的分离
3.1 JSP简介
JSP的工作原理图如下图 所示
3.1 JSP简介
JSP的使用包括两个步骤
转换编译阶段
将JSP文件转换成Java Servlet程序 将Java源代码编译成类文件 当一个JSP文件在Web服务器启动后接收到对JSP的第
(此阶段只被执行一次)
一次Web请求时,Web容器(如Tomcat的jasper编译 器)会将其编译成为servlet,并载入Web服务器中
3.5 JSP脚本段
脚本段(Scriptlets)是JSP代码片段或脚本片段,嵌在“<% %>” 标记中。 在脚本段中可以定义变量、调用方法和进行各种表达式运算,每 行语句后面加入分号。 这种Java代码在Web服务器响应请求时会运行。
语法格式:<%Java代码 %>
应用示例:
<body> <% String list = new String(); %> </body>
basicSyntax/scriptlets.jsp
3.6 JSP编译指令
JSP编译指令用于设置整个JSP页面的相关属 性,比如页面的编码格式、所包含的文件等等。
这些编译指令包含在“<%@ %> ”标记中。
常用编译指令:
page指令 include指令 taglib指令
3.6.1 JSP编译指令—page指令