JSP 动作允许您执行某些动作,在转换阶段使用指令,而在请求处理阶段使用动作。与指令不同,每次访问页面时都会重新评估动作。
以下是 JSP 中使用的动作元素:
<jsp:include>
动作
与include
页面指令类似,此动作也用于在另一个文件中插入 JSP 文件。
<jsp:include>
vs include
指令:
它与我在文章开头提到的相同(指令与动作)有所不同。在<jsp:include>
中在请求处理期间包含该文件,而在include
指令的情况下,它已包含在转换阶段。
<jsp:include>
的语法:
<jsp:include page="page URL" flush="Boolean Value" />
这里的页面 URL 是:需要包含页面的位置,刷新值可以是true
或false
(布尔值)。
示例:
<html>
<head>
<title>Demo of JSP include Action Tag</title>
</head>
<body>
<h3>JSP page: Demo Include</h3>
<jsp:include page="sample.jsp" flush="false" />
</body>
</html>
page
:页面值是sample.jsp
,这意味着这是页面需要包含在当前文件中。只是提到的文件名显示sample.jsp
在同一目录中。
flush
:其值为false
,表示资源缓冲区在包含到当前页面之前尚未刷新。
阅读更多:jsp include动作标签
<jsp:forward>
动作
<jsp:forward>
用于重定向请求。在 JSP 页面上遇到此动作时,控件将转移到此动作中提到的页面。
<jsp:forward>
的语法:
<jsp:forward page="URL of the another static, JSP OR Servlet page" />
例:
first.jsp
<html>
<head>
<title>Demo of JSP Forward Action Tag</title>
</head>
<body>
<h3>JSP page: Demo forward</h3>
<jsp:forward page="second.jsp" />
</body>
</html>
现在当 JSP 引擎执行first.jsp
(上面的代码)然后在动作标签之后,请求将被转移到另一个 JSP 页面(second.jsp
)。
注意:
first.jsp
和second.jsp
应该在同一个目录中,否则你必须指定second.jsp
的完整路径。
<jsp:param>
动作
此动作对于将参数传递给其他 JSP 动作标签非常有用,例如 JSP include
和 JSP 转发标签。这样,新的 JSP 页面可以使用请求对象本身访问这些参数。
阅读更多:JSP forward动作标签
<jsp:param>
的语法:
<jsp: param name="param_name_here" value="value_of_parameter_here" />
现在考虑上面的例子:
first.jsp
<html>
<head>
<title>Demo of JSP Param Action Tag</title>
</head>
<body>
<h3>JSP page: Demo Param along with forward</h3>
<jsp:forward page="second.jsp">
<jsp:param name ="date" value="20-05-2012" />
<jsp:param name ="time" value="10:15AM" />
<jsp:param name ="data" value="ABC" />
</jsp:forward>
</body>
</html>
在上面的例子中,first.jsp
将三个参数(data
,time
和data
)传递给second.jsp
,second.jsp
可以使用下面的代码访问这些参数:
Date:<%= request.getParameter("date") %>
Time:<%= request.getParameter("time") %>
My Data:<%= request.getParameter("data") %>
<jsp:useBean>
动作
在这里阅读更多内容: jsp:useBean, jsp:setProperty, jsp:getProperty
当您想在 JSP 页面中使用 Beans 时,此动作很有用,通过此标签可以轻松调用 bean。
<jsp:useBean>
的语法:
<jsp: useBean id="unique_name_to_identify_bean" class="package_name.class_name" />
<jsp:useBean>
,<jsp:setProperty>
和<jsp:getProperty>
示例:
一旦使用上面的语句实例化 Bean 类,就必须使用<jsp:setProperty>
和<jsp:getProperty>
动作来使用 bean 的参数。我们将在此动作标签后看到setProperty
和getProperty
。
EmployeeBeanTest.jsp
<html>
<head>
<title>JSP Page to show use of useBean action</title>
</head>
<body>
<h1>Demo: Action</h1>
<jsp:useBean id="student" class="javabeansample.StuBean"/>
<jsp:setProperty name="student" property="*"/>
<h1>
name:<jsp:getProperty name="student" property="name"/><br>
empno:<jsp:getProperty name="student" property="rollno"/><br>
</h1>
</body>
</html>
StudentBean.java
package javabeansample;
public class StuBean {
public StuBean() {
}
private String name;
private int rollno;
public void setName(String name)
{
this.name=name;
}
public String getName()
{
return name;
}
public void setRollno(int rollno)
{
this.rollno=rollno;
}
public int getRollno()
{
return rollno;
}
}
<jsp:setProperty>
动作
此动作标签用于设置 Bean 的属性,在使用此动作标签时,您可能需要指定 Bean 的唯一名称(它只是useBean
动作标签的id
值)。
<jsp:setProperty>
的语法
<jsp: useBean id="unique_name_to_identify_bean" class="package_name.class_name" />
....
....
<jsp:setProperty name="unique_name_to_identify_bean" property="property_name" />
或者
<jsp: useBean id="unique_name_to_identify_bean" class="package_name.class_name">
....
....
<jsp:setProperty name="unique_name_to_identify_bean" property="property_name" />
</jsp:useBean>
在property_name
中,您还可以使用'*'
,这意味着任何与 Bean 的属性匹配的请求参数都将传递给相应的设置器方法。
<jsp:getProperty>
动作
它用于检索或获取 Bean 属性的值。
<jsp:getProperty>
的语法
<jsp: useBean id="unique_name_to_identify_bean" class="package_name.class_name" />
....
....
<jsp:getProperty name="unique_name_to_identify_bean" property="property_name" />
或者
<jsp: useBean id="unique_name_to_identify_bean" class="package_name.class_name">
....
....
<jsp:getProperty name="unique_name_to_identify_bean" property="property_name" />
</jsp:useBean>
其他动作标签
以下动作标签不经常使用,所以我没有详细介绍它们。
<jsp:plugin>
动作
当需要插件来运行 Bean 类或 Applet 时,使用此标签。