JSP/Servlet
讲义3
第6章 JSP技术
JSP技术
· JSP本质上是开发Servlet的另外一种形式,它允许java代码和html代 码混合使用,页面中静态的部分直接写html代码,而动态的部分用 java代码来写,可以快捷的开发出web应用的视图。 Web容器管理JSP页面生命周期主要分成两个阶段: –转换阶段(translation phase) –执行阶段(execution phase) 当客户端第一次请求一个JSP的时候,JSP页面转换成Servlet源文 件,然后将这个Servlet源文件编译成Servlet的字节码文件,这个阶段 称为转换阶段。 然后Servlet容器就执行Servlet的生命周期:加载Servlet类,实例化 一个Servlet对象,执行初始化的_jspInit方法,调用_jspService方法 实现请求的处理,最后执行回收的_jspDestroy方法。 只有第一次请求一个JSP的时候才完成转换阶段,如果是第二次就不 会做转换,而是直接完成执行阶段。
·
·
·
·
JSP执行原理
JSP语法组成
·静态代码
– html – css – javascript
·动态代码
–指令元素 –动作元素 –脚本元素
·声明 ·脚本 ·表达式
JSP页面组成元素
指令元素
· JSP的指令元素主要用于转换阶段提供整体JSP页面的相 关信息。 ·指令元素的语法格式如下 –<%@指令名属性1=“值”属性2=“值”%> · JSP中指令元素一共有三个 – page,include,taglib
page指令
· page指令作用于整个JSP页面,定义了许多页面 相关的属性,这些属性将被用于和JSP容器通 信。 · page指令可以放在任何位置,作用范围都是整个 jsp页面 · page指令的语法格式 –<%@page属性1=”值”属性2=”值”...%>
page
常用属性
· · · · · · · · · · · · · language设置脚本语言,默认是java,也只能是java extends需要继承的超类,没有用处 import一个很有用的属性,导入类,可以一次导入很多类。这是唯一 一个可以重复设置的属性。 session是否可以使用session,默认true buffer设置缓冲区大小,默认8kb autoFlush该属性设置如果为false,会抛出异常,默认为true自动刷 新缓冲区 isThreadSafe是否线程安全,没有用处 info页面信息,没有用处 errorPage如果该页发生异常,跳转到哪一个错误页 isErrorPage该页是不是另一个jsp的错误页 contentType当前页的mime类型和编码格式 pageEncoding字符编码 isELIgnored是否忽略EL标记
include指令
· include指令用于在
JSP页面中静态包含一个文件,该文件 可以是一个JSP页面、
HTML网页、文本文件或一段Java 代码。使用了include指令的JSP页面在转换的时候,JSP 容器会将包含的文件的代码插入到当前页面中,一起进行 编译 · include指令的语法格式
–<%@ include file=”文件路径”%>
·需要注意的是静态包含是把包含和被包含的文件最终的代 码合成到一起
,形成一个文件,各文件之间不能有冲突。 例如多余的,之类或者重复声明的变量
taglib指令
· taglib指令允许页面使用用户定制的标签 ·语法如下 –<%@taglib uri=“标签库URI” prefix=”前缀名”%>
脚本元素
·脚本元素包括三个部分: –声明 –脚本段 –表达式 · JSP2 . 0增加了EL表达式
脚本元素——声明
· · 声明在其他脚本元素中可以使用的变量和方法,以<%!开始 %>结束 示例 <%! private int i = 10; public int m1(){ return 5+2; } %> · 需要注意的声明的变量在转换Servlet之后会成为全局变量,所以要考 虑线程安全问题
脚本元素——脚本段
· 脚本段是在请求处理期间要执行的Java代码段。脚本段可以产生输 出,并将输出发送到客户端,也可以是一些流程控制语句。脚本段以 <%开始,以%>结束
· 示例
<% for (int i = 1; i <= 10; i++) { out.println("" + i + " |
"); } %>
脚本元素——表达式
· 表达式脚本元素是Java语言中完整的表达式,在请求处理时计算这 些表达式,计算的结果将被转换为字符串,插入到当前的输出流中。 表达式以<%=开始,以%>结束
· 示例
<%for (int i = 1;i<=10;i ++){%> <%=i %> |
<%}%>