JSP的脚本元素 指令元素 动作元素 页面元素以及执行过程
JSP: Java Server Page ,生成动态网页, servlet的一个升级产品
一、语法
1..jsp为后缀
2.存放位置,除WEB-INF以外的位置,也可以是web应用的根目录中
3.在html标签中,使用特殊的JSP元素添加JAVA代码
特殊的JSP元素:脚本元素、指令元素、动作元素
二、脚本元素
1)表达式脚本:<%= %> 计算表达式的值,并输出到浏览器
注意:表达式必须要有计算结果;没有分号
2)声明脚本:<%! %> 声明/定义变量或方法
3)普通脚本:<% %> 可以写java有效方法体语句,通常用于写逻辑代码(顺序/分支/循环)
注意,不能出现:定义方法、import、package语句
三、JSP执行过程[难点]
1)翻译:根据特定的翻译规则,将.jsp翻译成.java文件(servlet) jsp就是servlet.
2)编译:将.java文件编译成.class文件
3)执行:执行.class文件(进入servlet的生命周期)
JSP在访问时,第一次会慢,以后运行速度会提高,原因:
第一次请求:翻译、编译、执行
以后再请求时:直接运行编译后.class文件.
.jsp翻译成.java的翻译规则:
<%= %> --> service方法体语句,out.print(XXX);
<%! %> --> 成员方法和成员变量(注意线程同步问题)
<% %> --> service方法体语句
html标签 --> service方法体语句,out.write(XXX);
代码阅读,有错找出错误,没错输出结果:
test1.jsp
<%!
int num = 10;
%>
num = <%=num %> //10
<%
int num = 100; //OK
%>
num = <%=num %> //100
num = <%=this.num %> //10
test2.jsp
<%
int num = 100;
%>
num = <%=num %> //100
<%!
int num = 10; //
%>
num = <%=num %> //100
num = <%=this.num %> //10
课堂练习:使用脚本元素打印9*9乘法表,奇数行红字显示,偶数行蓝字显示。
http://ip:port/web应用/xx.jsp
所有JSP元素,不允许嵌套访问。
四、指令元素 <%@指令名 属性名=值 属性名2=值2 %>
1、页面指令 <%@ page %> 定义当前jsp页面相关的属性值
1)contentType="text/html;charset=gbk" 标识当前jsp页面中的响应的类型
2)import="" 导入的包或类,默认导入4个包
(java.lang.*/javax.servlet.*/javax.servlet.http.*/javax.servlet.jsp.*)
a.import="java.util.*"
import="java.text.*"
b.import="java.util.*,java.text.*"
3)isErrorPage="true|false(默认)" 标识当前页是否能处理异常
4)errorPage="url" 标识当前jsp页面如果出了异常,由谁来处理异常
(isErrorPage=false)
5)language="java" 标识当前jsp页面使用的语言,默认java
6)session="true(默认)|false" 标识当前jsp页面中是否能直接使用session对象
servlet中session的创建采用的是懒汉式 request.getSession(true|false);
jsp中session的创建采用的是饿汉式(client向server第一次请求jsp时,当前
client的session就自动创建)
7)isElIgnored="true|false" 默认值取决于server的版本 标识当前jsp页面是否忽略EL表
达式
8)pageEncoding="" 标识当前jsp页面使用的字符编码
2、包含指令 <%@ include file="url" %> 标识在当前jsp页面中要引入/包含其他web资源
特点:静态包含(源码包含,编译前包含)
-------------------------------------
a.jsp aaaaaa
bbbbbb
<%@ include file="/b.jsp"%>
ccc
ddd
-------------------------------------
b.jsp 111
222
-------------------------------------
a.jsp --> 翻译过程,a.jsp+b.jsp=total(a.java)-->编译a.class-->执行
-------------------------------------
注意事项:相互包含的页面中,变量的重复定义问题。
3、标签库指令 <%@ taglib uri="" prefix="" %> 标识当前jsp页面中要用标签库
五、动作元素
1、包含动作 <jsp:include page="url"/> 标识当页JSP页面要引入/包含其他web资源
特点:动态包含(结果包含,编译后包含)
等价于:
request.getRequestDispatcher("/url-pattern").include(request, response);
-------------------------------------
a.jsp aaaaaa
bbbbbb
<jsp:include page="/b.jsp"/>
ccc
ddd
-------------------------------------
b.jsp 111
222
-------------------------------------
a.jsp-->翻译a.jsp(a.java)-->编译-->执行结果:resulta+resultb==客户端的最终结果
b.jsp-->翻译b.jsp(b.java)-->编译-->执行结果:resultb
-------------------------------------
<jsp:include page="url">
<jsp:param name="" value=""/> 给被包含的资源传参数
</jsp:include>
在被包含的资源中获取参数的方式:String str = request.getParameter("name");
2、请求转发动作 <jsp:forward page="url"/> 标识在当前jsp中要转到其他web资源
等价于:
request.getRequestDispatcher("/url-pattern").forward(request, response);
特点:1)地址栏不变
2)服务器端的转发
3)永久转向
4)共享同一个request对象
<jsp:forward page="url">
<jsp:param name="" value=""/> 给被转向的资源传参数
</jsp:forward>
在被转向的资源中获取参数的方式:String str = request.getParameter("name");
---------------------------
JSP页面元素
1、脚本元素
<%= %>
<%! %>
<% %>
2、指令元素
<%@ page contentType="" import="" isErrorPage="" errorPage="" %>
<%@ include file="url" %> 特点、与<jsp:include >的区别
<%@ taglib uri="" prefix="" %>
3、动作元素
<jsp:include page="url"/> 特点、与<%@include %>的区别
<jsp:forward page="url">
<jsp:param name="" value=""/>
</jsp:forward>
一、语法
1..jsp为后缀
2.存放位置,除WEB-INF以外的位置,也可以是web应用的根目录中
3.在html标签中,使用特殊的JSP元素添加JAVA代码
特殊的JSP元素:脚本元素、指令元素、动作元素
二、脚本元素
1)表达式脚本:<%= %> 计算表达式的值,并输出到浏览器
注意:表达式必须要有计算结果;没有分号
2)声明脚本:<%! %> 声明/定义变量或方法
3)普通脚本:<% %> 可以写java有效方法体语句,通常用于写逻辑代码(顺序/分支/循环)
注意,不能出现:定义方法、import、package语句
三、JSP执行过程[难点]
1)翻译:根据特定的翻译规则,将.jsp翻译成.java文件(servlet) jsp就是servlet.
2)编译:将.java文件编译成.class文件
3)执行:执行.class文件(进入servlet的生命周期)
JSP在访问时,第一次会慢,以后运行速度会提高,原因:
第一次请求:翻译、编译、执行
以后再请求时:直接运行编译后.class文件.
.jsp翻译成.java的翻译规则:
<%= %> --> service方法体语句,out.print(XXX);
<%! %> --> 成员方法和成员变量(注意线程同步问题)
<% %> --> service方法体语句
html标签 --> service方法体语句,out.write(XXX);
代码阅读,有错找出错误,没错输出结果:
test1.jsp
<%!
int num = 10;
%>
num = <%=num %> //10
<%
int num = 100; //OK
%>
num = <%=num %> //100
num = <%=this.num %> //10
test2.jsp
<%
int num = 100;
%>
num = <%=num %> //100
<%!
int num = 10; //
%>
num = <%=num %> //100
num = <%=this.num %> //10
课堂练习:使用脚本元素打印9*9乘法表,奇数行红字显示,偶数行蓝字显示。
http://ip:port/web应用/xx.jsp
所有JSP元素,不允许嵌套访问。
四、指令元素 <%@指令名 属性名=值 属性名2=值2 %>
1、页面指令 <%@ page %> 定义当前jsp页面相关的属性值
1)contentType="text/html;charset=gbk" 标识当前jsp页面中的响应的类型
2)import="" 导入的包或类,默认导入4个包
(java.lang.*/javax.servlet.*/javax.servlet.http.*/javax.servlet.jsp.*)
a.import="java.util.*"
import="java.text.*"
b.import="java.util.*,java.text.*"
3)isErrorPage="true|false(默认)" 标识当前页是否能处理异常
4)errorPage="url" 标识当前jsp页面如果出了异常,由谁来处理异常
(isErrorPage=false)
5)language="java" 标识当前jsp页面使用的语言,默认java
6)session="true(默认)|false" 标识当前jsp页面中是否能直接使用session对象
servlet中session的创建采用的是懒汉式 request.getSession(true|false);
jsp中session的创建采用的是饿汉式(client向server第一次请求jsp时,当前
client的session就自动创建)
7)isElIgnored="true|false" 默认值取决于server的版本 标识当前jsp页面是否忽略EL表
达式
8)pageEncoding="" 标识当前jsp页面使用的字符编码
2、包含指令 <%@ include file="url" %> 标识在当前jsp页面中要引入/包含其他web资源
特点:静态包含(源码包含,编译前包含)
-------------------------------------
a.jsp aaaaaa
bbbbbb
<%@ include file="/b.jsp"%>
ccc
ddd
-------------------------------------
b.jsp 111
222
-------------------------------------
a.jsp --> 翻译过程,a.jsp+b.jsp=total(a.java)-->编译a.class-->执行
-------------------------------------
注意事项:相互包含的页面中,变量的重复定义问题。
3、标签库指令 <%@ taglib uri="" prefix="" %> 标识当前jsp页面中要用标签库
五、动作元素
1、包含动作 <jsp:include page="url"/> 标识当页JSP页面要引入/包含其他web资源
特点:动态包含(结果包含,编译后包含)
等价于:
request.getRequestDispatcher("/url-pattern").include(request, response);
-------------------------------------
a.jsp aaaaaa
bbbbbb
<jsp:include page="/b.jsp"/>
ccc
ddd
-------------------------------------
b.jsp 111
222
-------------------------------------
a.jsp-->翻译a.jsp(a.java)-->编译-->执行结果:resulta+resultb==客户端的最终结果
b.jsp-->翻译b.jsp(b.java)-->编译-->执行结果:resultb
-------------------------------------
<jsp:include page="url">
<jsp:param name="" value=""/> 给被包含的资源传参数
</jsp:include>
在被包含的资源中获取参数的方式:String str = request.getParameter("name");
2、请求转发动作 <jsp:forward page="url"/> 标识在当前jsp中要转到其他web资源
等价于:
request.getRequestDispatcher("/url-pattern").forward(request, response);
特点:1)地址栏不变
2)服务器端的转发
3)永久转向
4)共享同一个request对象
<jsp:forward page="url">
<jsp:param name="" value=""/> 给被转向的资源传参数
</jsp:forward>
在被转向的资源中获取参数的方式:String str = request.getParameter("name");
---------------------------
JSP页面元素
1、脚本元素
<%= %>
<%! %>
<% %>
2、指令元素
<%@ page contentType="" import="" isErrorPage="" errorPage="" %>
<%@ include file="url" %> 特点、与<jsp:include >的区别
<%@ taglib uri="" prefix="" %>
3、动作元素
<jsp:include page="url"/> 特点、与<%@include %>的区别
<jsp:forward page="url">
<jsp:param name="" value=""/>
</jsp:forward>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.