JSP动作标签– jsp useBean,包含,转发
JSP提供了一堆标准动作标签,我们可以将它们用于特定任务,例如使用java Bean对象(包括其他资源),将请求转发到另一个资源等。
JSP动作标签
下面给出了标准JSP动作元素的列表。
JSP Action | Description |
---|---|
jsp:include | To include a resource at runtime, can be HTML, JSP or any other file |
jsp:useBean | To get the java bean object from given scope or to create a new object of java bean. |
jsp:getProperty | To get the property of a java bean, used with jsp:useBean action. |
jsp:setProperty | To set the property of a java bean object, used with jsp:useBean action. |
jsp:forward | To forward the request to another resource. |
jsp:text | To write template text in JSP page. |
jsp:element | To define the XML elements dynamically. |
jsp:attribute | To define the dynamically generated XML element attributes |
jsp:body | To define the dynamically generated XML element body |
jsp:plugin | To generate the browser-specific code that makes an OBJECT or EMBED tag for the Java plugin. |
通常在JSP编程中,我们使用jsp:useBean
,jsp:forward
和jsp: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"