JSP中供应了一些利用XML语法定义的动作元素,这些动作元素用来实现一些通用功能,如要求转发、页面包含、JavaBean工具的创建和利用等。
与指令元素不同是动作元素是在要求处理阶段 按照在页面中涌现的顺序被实行的,动作元素能够影响输出流和修正工具,动作元素可以是JSP规范中定义的标准动作,也可以是自定义动作。

在JSP规范中定义的标准动作,利用时的前缀为jsp,例如< jsp:include>标签便是个标准动作元素,表示在一个JSP页面中包含另一个资源。

动作元素的利用格式如下:

jspoutputJavaWeb之JSP根本语法三 GraphQL

<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>

运行结果如下: