最近看了很多JSP项目的源码,发现很多厂子的JSP都用了jsp:useBean,因此查了API。并且实践总结了一下。
基础语法:
<jsp:useBean id=“name” class=“package.class” />
如果想只有当第一次实例化Bean时才执行部分代码,如果是利用现有的Bean实例则不执行这部分代码。可以采用以下语法:
<jsp:useBean id=“name” class="package.class">
要执行的代码
</jsp:useBean>
除了id和class外,jsp:useBean还有其他三个属性,即:scope,type,beanName。
id 命名引用该Bean的变量。如果能够找到id和scope相同的Bean实例,jsp:useBean动作将使用已有的Bean实例而不是创建新的实例。
class 指定Bean的完整包名。
scope 指定Bean在哪种上下文内可用,可以取下面的四个值之一:page,request,session和application。
默认值是page,表示该Bean只在当前页面内可用(保存在当前页面的PageContext内)。
request表示该Bean在当前的客户请求内有效(保存在ServletRequest对象内)。
session表示该Bean对当前HttpSession内的所有页面都有效。
最后,如果取值application,则表示该Bean对所有具有相同ServletContext的页面都有效。
下面根据实例进行分享。
这是java那边的代码
package entity;
public class SimpleBean {
private String message = "No message specified";
public String getMessage() {
return(message);
}
public void setMessage(String message) {
this.message = message;
}
}
这是JSP端的代码(声明并设置实例化后的属性值,也就是SimpleBean的message属性):
<HTML>
<HEAD>
<TITLE>jsp:useBean</TITLE>
</HEAD>
<BODY>
<jsp:useBean id="test" class="entity.SimpleBean" />
<jsp:setProperty name="test"
property="message"
value="Hello WWW" />
<H1>Message:
<I><jsp:getProperty name="test" property="message" />
</I>
</H1>
</BODY>
</HTML>