# JSP 操作 - Java Server Pages

> 原文： [https://beginnersbook.com/2013/06/jsp-tutorial-actions/](https://beginnersbook.com/2013/06/jsp-tutorial-actions/)

JSP Actions 允许您执行某些操作。

## 指令与行动

1.  在转换阶段使用指令，而在请求处理阶段使用操作。
2.  与指令不同，每次访问页面时都会重新评估操作。

以下是 JSP 中使用的操作元素：

## 1.＆lt; jsp：include＆gt;行动

与**包含页面指令**类似，此操作也用于在另一个文件中插入 JSP 文件。

**＆lt; jsp：include＆gt; vs include 指令：**

它与我在文章开头提到的相同（指令与行动）有所不同。在＆lt; jsp：include＆gt;中在请求处理期间包含该文件，而在 include 指令的情况下，它已包含在转换阶段。

**＆lt; jsp：include＆gt;的语法：**

```
<jsp:include page="page URL"  flush="Boolean Value" />
```

这里的页面 URL 是：需要包含页面的位置＆amp;刷新值可以是 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>
```

**页面**：页面值是 sample.jsp，这意味着这是页面需要包含在当前文件中。只是提到的文件名显示 sample.jsp 在同一目录中。
**flush** ：其值为 false，表示资源缓冲区在包含到当前页面之前尚未刷新。

阅读更多： [jsp 包含动作标签](https://beginnersbook.com/2013/11/jsp-include-action-tag/)。

## 2.＆lt; jsp：forward＆gt;行动

＆LT; JSP：正向＆GT;用于重定向请求。在 JSP 页面上遇到此操作时，控件将转移到此操作中提到的页面。

**＆lt; jsp：forward＆gt;的语法：**

```
<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（上面的代码）然后在 action 标记之后，请求将被转移到另一个 JSP 页面（second.jsp）。
**注意**：first.jsp 和 second.jsp 应该在同一个目录中，否则你必须指定 second.jsp 的完整路径。

阅读更多： [JSP 转发动作标签](https://beginnersbook.com/2013/11/jsp-forward-action-tag/)。

## 3.＆lt; jsp：param＆gt;行动

此操作对于将参数传递给其他 JSP 操作标记非常有用，例如 JSP include＆amp; JSP 转发标记。这样，新的 JSP 页面可以使用请求对象本身访问这些参数。

**＆lt; jsp：param＆gt;的语法：**

```
<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＆amp; data）传递给 second.jsp，second.jsp 可以使用下面的代码访问这些参数 -

```
Date:<%= request.getParameter("date") %>
Time:<%= request.getParameter("time") %>
My Data:<%= request.getParameter("data") %>
```

## 4.＆lt; jsp：useBean＆gt;行动

在这里阅读更多内容 - [＆lt; jsp：useBean＆gt;，＆lt; jsp：setProperty＆gt;和＆lt; jsp：getProperty＆gt;详细](https://beginnersbook.com/2013/11/jsp-usebean-setproperty-getproperty-action-tags/)。

当您想在 JSP 页面中使用 Beans 时，此操作很有用，通过此标记可以轻松调用 bean。

**＆lt; jsp：useBean＆gt;的语法：**

```
<jsp: useBean id="unique_name_to_identify_bean"  class="package_name.class_name" />
```

**＆lt; jsp：useBean＆gt;，＆lt; jsp：setProperty＆gt;的示例＆安培; ＆lt; jsp：getProperty＆gt;：**

一旦使用上面的语句实例化 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;
    }
}
```

## 5.＆lt; jsp：setProperty＆gt;行动

此操作标记用于设置 Bean 的属性，在使用此操作标记时，您可能需要指定 Bean 的唯一名称（它只是 useBean 操作标记的 id 值）。

＆lt; jsp：setProperty＆gt;的**语法**

```
<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 的属性匹配的请求参数都将传递给相应的 setter 方法。

## 6.＆lt; jsp：getProperty＆gt;行动

它用于检索或获取 Bean 属性的值。

＆lt; jsp：getProperty＆gt;的**语法**

```
<jsp: useBean id="unique_name_to_identify_bean"  class="package_name.class_name" />
....
....
<jsp:getProperty name="unique_name_to_identify_bean" property="property_name" />
```

OR

```
<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.＆lt; jsp：plugin＆gt;行动

当需要插件来运行 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.＆lt; jsp：body＆gt;行动

### 9.＆lt; jsp：element＆gt;行动

### 10.＆lt; jsp：text＆gt;行动

### 11.＆lt; jsp：attribute＆gt;行动