在JSP中供应了一些利用XML语法定义的动作元素,这些动作元素用来实现一些通用功能,如要求转发、页面包含、JavaBean工具的创建和利用等。与指令元素不同是动作元素是在要求处理阶段 按照在页面中涌现的顺序被实行的,动作元素能够影响输出流和修正工具,动作元素可以是JSP规范中定义的标准动作,也可以是自定义动作。
在JSP规范中定义的标准动作,利用时的前缀为jsp,例如< jsp:include>标签便是个标准动作元素,表示在一个JSP页面中包含另一个资源。
动作元素的利用格式如下:
<prefix:tagName att =\公众v1\"大众…attrn=\"大众vn\"大众/>
或
<prefix:tagName attrl1=\"大众uI\"大众…attrn= \"大众vn\公众>
body
</prefix: tagName >
把稳: JSP的动作元素是大小写敏感的。
JSP2.0规范中,一共定义了20种标准动作元素,可分为如下几类。
(1) JSP1.2原有的6 种:<jsp:include>,<jsp:forward>,<jsp:param>,<jsp:plugin>, <jsp:params>.,<jsp:fallback>。
(2) 与JavaBean干系的3种:
<jsp:useBean>,<jsp:setProperty>,<jsp:getProperty>。
(3) 用于JSP 文档(利用XML语法格式描述的JSP贡面)的6种:<jsp:root>,<jsp:declaration>,<jsp:scriptlet>,<jsp:expression>,
<jsp:text>,<jsp:output>。
(4) 用于动态天生 XMI.元素的3 种:<jsp:element>,<jsp:attribute>,<jsp:body>。
(5) 用于标签文件的两种:<jsp:invoke>和< jsp:doBody>。
1、 常用的JSP动作元素
1.<jsp: include>和<jsp:param>
动作素用于在当前页面中动态包含其他资源,该元素的利用格式如下:
<jsp:include Page=\"大众被包含新源的路径\"大众flush=\公众true|false />
或者被包含的资源通报参数:
<jsp includepage-\"大众被包含资源的路径\公众fluth \"大众\"大众truelfalse\公众>
{<jsp:param name=\公众name\"大众 value= \公众value\"大众 />)
</jsp inclade>
个中,pnge 属性指定被包含资源的相对路径。flush属性表示读人被包含内容之前是否清空缓冲区,属性值为boolean 类型,默认值为false。
<jsp:param> 子动浸染于向被包含的资源通报多数,个中,name 属性指定参数的名称,value 属性指定参数的值。在<jsp:include>元素本体内可以重复定义多个<jsp:param> 元向来通报多个参数。
<jsp:param>子动作除了用于<jsp:include 元素中,还常常用在<jsp:forward>和<jsp:params>元素中指定参数。
在JSP 页面中有两种不同的包含办法静态包含(编译时包含)和动态包含(运行时包含) ,静态包含是当JSP引擎把JSP页面转换成Servlet 文件时,把被包含文件的内容直接合并到JSP页面中,其优点是性能好。include指令实现的是静态包含。
动态包含是指当JSP引|擎把JSP页面转换成Servlet 文件时,不把被包含文件与原JSP页面合井一个新的JSP页面,而是见告Java阐明器,这个文件在JSP运行时(Servlet文件的class字节码文件被加载实行时)才包含进来,其优点是可以向被包含文件通报参数,缺陷是性能稍差。include动作元素实现的是动态包含。
2. <jsp:include>的利用示例
在include.jsp页面中动态包食box.jsp页面,并box.jsp页面通报参数color,title和content。代码如下:
Include.jsp
<%@ page language=\"大众java\"大众 contentType=\公众text/html; charset=UTF-8\"大众
pageEncoding=\"大众UTF-8\"大众%>
<!DOCTYPE html PUBLIC \公众-//W3C//DTD HTML 4.01 Transitional//EN\公众 \"大众http://www.w3.org/TR/html4/loose.dtd\"大众>
<html>
<head>
<meta http-equiv=\"大众Content-Type\"大众 content=\公众text/html; charset=UTF-8\"大众>
<title>include动作的利用</title>
</head>
<body>
<h1>include动作的利用</h1>
<jsp:include page=\公众box.jsp\"大众>
//利用 jsp:param 通报参数color,title,content
<jsp:param value=\公众#ff0022\公众 name=\"大众color\"大众/>
<jsp:param value=\"大众This is title\"大众 name=\"大众title\"大众/>
<jsp:param value=\"大众This is content\"大众 name=\"大众content\"大众/>
</jsp:include>
</body>
</html>
Box.jsp
<%@ page language=\"大众java\公众 contentType=\"大众text/html; charset=UTF-8\"大众
pageEncoding=\"大众UTF-8\"大众%>
<!DOCTYPE html PUBLIC \"大众-//W3C//DTD HTML 4.01 Transitional//EN\公众 \公众http://www.w3.org/TR/html4/loose.dtd\公众>
<html>
<head>
<meta http-equiv=\公众Content-Type\公众 content=\"大众text/html; charset=UTF-8\公众>
<title>Insert title here</title>
</head>
<body>
<%
//利用request.getParameter()来获取参数color,title,content的值
String color = request.getParameter(\公众color\"大众);
String title = request.getParameter(\"大众title\"大众);
String content = request.getParameter(\"大众content\"大众);
%>
<table width=\"大众50%\"大众>
<tr bgcolor=\"大众<%=color%>\"大众>
<td><%=title %></td>
</tr>
<tr>
<td><%=content %></td>
</tr>
</table>
</body>
</html>
运行box.jsp页面得到下面的结果:
Include.jsp页面的运行结果如下:
3.<jsp:forward>
<jsp:forward>动作元素用于运行时在做事器端结束当前页面的实行,并从当前页面跳转到指定的页面。跳转目标面可以是静态H TML页面、JSP 页面或JavaServlet 类。
<jsp:forward>动作是在做事器端完成的,浏览器地址栏的内容并不会改变。
<jsp:forward>动作只包含一个page 属性,用于指定目标页面的URI.动作体中可<jsp:param>元向来指定参数列表。
<jsp:forward>的语法如下
<jsp:forward page=\"大众目标页面的URL\"大众 />
4. <jsp:forward>的利用示例
1,项目构思
用户在input.jsp 页面输人年事后,提交到forward.jsp 页面,页面根据输人的年事值设置能转到next.jsp页面时通报的参数内容,next.jsp页面吸收从forward.jsp 页面通报过来的参数并显示,同时提示用户在input.jsp页面输入年事信息。详细代码如下:
Input.jsp
<%@ page language=\公众java\"大众 contentType=\"大众text/html; charset=UTF-8\"大众
pageEncoding=\"大众UTF-8\"大众%>
<!DOCTYPE html PUBLIC \"大众-//W3C//DTD HTML 4.01 Transitional//EN\"大众 \"大众http://www.w3.org/TR/html4/loose.dtd\"大众>
<html>
<head>
<meta http-equiv=\"大众Content-Type\"大众 content=\"大众text/html; charset=UTF-8\"大众>
<title>把表单数据提交到forward.jsp页面</title>
</head>
<body>
<form action=\"大众forward.jsp\"大众> <!-- 把表单数据提交到forward.jsp页面 -->
年事:<input type=\公众text\"大众 name=\"大众age\公众>
<input type=\"大众submit\公众 value=\"大众提交\公众>
</form>
</body>
</html>
Forward.jsp
<%@ page language=\"大众java\"大众 contentType=\公众text/html; charset=UTF-8\"大众
pageEncoding=\公众UTF-8\公众%>
<!DOCTYPE html PUBLIC \"大众-//W3C//DTD HTML 4.01 Transitional//EN\"大众 \公众http://www.w3.org/TR/html4/loose.dtd\"大众>
<html>
<head>
<meta http-equiv=\"大众Content-Type\公众 content=\"大众text/html; charset=UTF-8\"大众>
<title>Insert title here</title>
</head>
<body>
<%
String age = request.getParameter(\公众age\"大众);// 获取input.jsp页面通报过来的age的值
String access = null;
if(Integer.parseInt(age)>=18) {
access = \"大众OK\"大众;
}else {
access = \"大众NO\公众;
}
%>
<jsp:forward page=\"大众next.jsp\"大众>
<jsp:param value=\"大众<%=access %>\公众 name=\"大众access\"大众 /><!-- (运行时请删除这段注释,否则会运行出错)用 jsp:param 来通报access的值,个中access的实际值用jsp表达式来获取 -->
</jsp:forward>
</body>
</html>
Next.jsp
<%@ page language=\公众java\公众 contentType=\公众text/html; charset=UTF-8\公众
pageEncoding=\公众UTF-8\公众%>
<!DOCTYPE html PUBLIC \公众-//W3C//DTD HTML 4.01 Transitional//EN\"大众 \"大众http://www.w3.org/TR/html4/loose.dtd\"大众>
<html>
<head>
<meta http-equiv=\"大众Content-Type\公众 content=\"大众text/html; charset=UTF-8\"大众>
<title>Insert title here</title>
</head>
<body>
您的年事为:<%=request.getParameter(\公众age\"大众) %>岁<!-- 用jsp表达式输出age的值 -->
<br/>
您的访问权限是:<%=request.getParameter(\公众access\公众) %>!
</body>
</html>
运行结果如下: