JSP动作标签– jsp useBean,包含,转发

时间:2020-02-23 14:33:52  来源:igfitidea点击:

JSP提供了一堆标准动作标签,我们可以将它们用于特定任务,例如使用java Bean对象(包括其他资源),将请求转发到另一个资源等。

JSP动作标签

下面给出了标准JSP动作元素的列表。

JSP ActionDescription
jsp:includeTo include a resource at runtime, can be HTML, JSP or any other file
jsp:useBeanTo get the java bean object from given scope or to create a new object of java bean.
jsp:getPropertyTo get the property of a java bean, used with jsp:useBean action.
jsp:setPropertyTo set the property of a java bean object, used with jsp:useBean action.
jsp:forwardTo forward the request to another resource.
jsp:textTo write template text in JSP page.
jsp:elementTo define the XML elements dynamically.
jsp:attributeTo define the dynamically generated XML element attributes
jsp:bodyTo define the dynamically generated XML element body
jsp:pluginTo generate the browser-specific code that makes an OBJECT or EMBED tag for the Java plugin.

通常在JSP编程中,我们使用jsp:useBeanjsp:forwardjsp:include动作。
因此,我们将仅关注这些行动要素。

JSP useBean

我们可以在JSP页面中使用如下所示的jsp:useBean来获取bean对象。

<jsp:useBean id="myBeanAttribute" class="com.theitroad.MyBean" scope="request" 

在上面的例子中,JSP容器将首先尝试找到在请求范围myBeanAttribute,但如果它不存在,然后它会创建为myBean的实例,然后将其分配给JSP,并设置它的myBeanAttribute ID变量的属性请求范围。

在JSP中定义了bean之后,我们可以使用如下的jsp:getProperty操作获取其属性。

<jsp:getProperty name="myBeanAttribute" property="count" 

请注意,jsp:getProperty中的名称属性应与jsp:useBean操作中的id属性相同。
JSP getProperty操作受到限制,因为我们无法获得属性的属性,例如,如果MyBean具有另一个Java bean的属性,那么我们就无法使用JSP操作标签来获取其值,因为我们拥有JSP EL 。

我们可以使用jsp:setProperty来设置Java bean的属性值,如下所示。

<jsp:setProperty name="myBeanAttribute" property="count" value="5" 

如果仅在jsp:useBean创建新实例时才想设置属性,则可以在jsp:useBean内使用jsp:setProperty来实现此目的,如下面的代码片段所示。

<jsp:useBean id="myBeanAttribute" class="com.theitroad.MyBean" scope="request">
<jsp:setProperty name="myBeanAttribute" property="count" value="5" 
</jsp:useBean>

大多数时候,我们使用接口进行编码,因此,如果我们具有Person接口和Employee实现,并且正在设置如下所示的request属性。

Person person = new Employee();
request.setAttribute("person", person);

然后我们可以将type属性与jsp:useBean一起使用,以获取如下所示的java bean对象。

<jsp:useBean id="person" type="Person" class="Employee" scope="request" 

如果我们不在jsp:useBean中提供范围属性值,则默认为页面范围。

如果要通过请求参数设置Java Bean属性,则可以使用如下所示的param属性。

<jsp:useBean id="myBeanAttribute" class="com.theitroad.MyBean" scope="session">
<jsp:setProperty name="myBeanAttribute" property="id" param="empID" 
</jsp:useBean>

如果属性和参数属性值相同,则可以跳过参数属性。
例如,如果请求参数名称也是id,那么我们可以简单地编写:

<jsp:useBean id="myBeanAttribute" class="com.theitroad.MyBean" scope="session">
<jsp:setProperty name="myBeanAttribute" property="id" 
</jsp:useBean>

如果所有请求参数名称都与java bean属性匹配,那么我们可以像下面这样简单地设置bean属性。

<jsp:useBean id="myBeanAttribute" class="com.theitroad.MyBean" scope="session">
<jsp:setProperty name="myBeanAttribute" property="*" 
</jsp:useBean>

JSP包括

我们可以使用jsp:include动作在JSP页面中包含另一个资源,之前我们已经了解了如何使用JSP include指令来做到这一点。

jsp:include操作的语法为:

<jsp:include page="header.jsp" 

JSP include指令和include动作之间的区别在于,include指令中的其他资源的内容在转换时被添加到生成的servlet代码中,而include动作则在运行时发生。

我们可以使用jsp:param操作将参数传递给包含的资源,如下所示。

<jsp:include page="header.jsp">
 <jsp:param name="myParam" value="myParam value" 
</jsp:include>

我们可以使用JSP表达式语言在包含的文件中获取参数值。

JSP转发

我们可以使用jsp:forward动作标签将请求转发到另一个资源来处理它。
它的语法如下。

<jsp:forward page="login.jsp"