ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# JSP 动作 > 原文: [https://beginnersbook.com/2013/06/jsp-tutorial-actions/](https://beginnersbook.com/2013/06/jsp-tutorial-actions/) JSP 动作允许您执行某些动作。 ## 指令与动作 1. 在转换阶段使用指令,而在请求处理阶段使用动作。 2. 与指令不同,每次访问页面时都会重新评估动作。 以下是 JSP 中使用的动作元素: ## 1. `<jsp:include>`动作 与`include`页面指令类似,此动作也用于在另一个文件中插入 JSP 文件。 **`<jsp:include>` vs `include`指令:** 它与我在文章开头提到的相同(指令与动作)有所不同。在`<jsp:include>`中在请求处理期间包含该文件,而在`include`指令的情况下,它已包含在转换阶段。 **`<jsp:include>`的语法:** ```html <jsp:include page="page URL"  flush="Boolean Value" /> ``` 这里的页面 URL 是:需要包含页面的位置,刷新值可以是`true`或`false`(布尔值)。 **示例:** ```html <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`动作标签](https://beginnersbook.com/2013/11/jsp-include-action-tag/)。 ## 2. `<jsp:forward>`动作 `<jsp:forward>`用于重定向请求。在 JSP 页面上遇到此动作时,控件将转移到此动作中提到的页面。 **`<jsp:forward>`的语法:** ```html <jsp:forward page="URL of the another static, JSP OR Servlet page" /> ``` **例:** `first.jsp` ```html <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 `forward`动作标签](https://beginnersbook.com/2013/11/jsp-forward-action-tag/)。 ## 3. `<jsp:param>`动作 此动作对于将参数传递给其他 JSP 动作标签非常有用,例如 JSP `include`和 JSP 转发标签。这样,新的 JSP 页面可以使用请求对象本身访问这些参数。 **`<jsp:param>`的语法:** ```html <jsp: param name="param_name_here" value="value_of_parameter_here" /> ``` 现在考虑上面的例子: `first.jsp` ```html <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`可以使用下面的代码访问这些参数: ```html Date:<%= request.getParameter("date") %> Time:<%= request.getParameter("time") %> My Data:<%= request.getParameter("data") %> ``` ## 4. `<jsp:useBean>`动作 在这里阅读更多内容 - [`<jsp:useBean>`,`<jsp:setProperty>`和`<jsp:getProperty>`西细节](https://beginnersbook.com/2013/11/jsp-usebean-setproperty-getproperty-action-tags/)。 当您想在 JSP 页面中使用 Beans 时,此动作很有用,通过此标签可以轻松调用 bean。 **`<jsp:useBean>`的语法:** ```html <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 <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` ```html 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; } } ``` ## 5. `<jsp:setProperty>`动作 此动作标签用于设置 Bean 的属性,在使用此动作标签时,您可能需要指定 Bean 的唯一名称(它只是`useBean`动作标签的`id`值)。 **`<jsp:setProperty>`的语法** ```html <jsp: useBean id="unique_name_to_identify_bean"  class="package_name.class_name" /> .... .... <jsp:setProperty name="unique_name_to_identify_bean" property="property_name" /> ``` 或者 ```html <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 的属性匹配的请求参数都将传递给相应的设置器方法。 ## 6. `<jsp:getProperty>`动作 它用于检索或获取 Bean 属性的值。 **`<jsp:getProperty>`的语法** ```html <jsp: useBean id="unique_name_to_identify_bean"  class="package_name.class_name" /> .... .... <jsp:getProperty name="unique_name_to_identify_bean" property="property_name" /> ``` 或者 ```html <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> ``` ## 其他动作标签 以下动作标签不经常使用,所以我没有详细介绍它们。 ### 7. `<jsp:plugin>`动作 当需要插件来运行 Bean 类或 Applet 时,使用此标签。 [http://docs.oracle.com/javase/7/docs/technotes/guides/plugin/developer_guide/jsp.html](https://docs.oracle.com/javase/7/docs/technotes/guides/plugin/developer_guide/jsp.html) ### 8. `<jsp:body>`动作 ### 9. `<jsp:element>`动作 ### 10. `<jsp:text>`动作 ### 11. `<jsp:attribute>`动作