在jsp文档中使用bean就是开发单独的实用工具类,按照bean的要求进行构造。使用jsp:useBean,jsp:getProperty,和jsp:setProperty调用该代码。
bean类规定:
1.bean类必须拥有一个零参数(默认)构造函数;若省略所有的构造函数,则零参数构造函数会被自动创建;
2.bean类不应该有公开的实例属性;
3.需要用到的属性值应该通过getXxx和setXxx方法来访问。
使用:
1.<jsp:useBean id="beanName" class="package.Class" />,用于构建新的bean,也可以访问现存的bean。
表示”实例化class的类,并将实例化后的对象绑定到_jspService中的变量,变量名有id指定“,即实例化后的对象名由id指定;
2.<jsp:getProperty name="beanName" property="propertyName" />,读取或输出bean属性的值。
3.<jsp:setProperty name="beanName" property="propertyName" value="propertyValue" />,修改bean属性的值。
bean类的安装:
单个bean类放在WEB-INF/classes/subdirectoryMatchingPackageName,含有jar文件放在WEB-INF/lib中。
将单个属性与输入参数关联:
示例:
<%
int numItemOrdered = 1;
try{
numItemOrdered = Interger.parseInt(request.getParameter("numItems"));
} catch(NumberFormatException nfe) {}
%>
<jsp:setProperty
name="entry"
property="numItems"
value="<%= numItemsOrdered %> " />
简化:
<jsp:setProperty
name="entry"
property="numItems"
param="numItems"/>
将所有的属性与请求参数关联:
将所有的属性与同名的请求参数关联起来
...
<jsp:useBean id="entry" class="package.Class" />
<jsp:setProperty name="entry" property="*" />
...
常规使用:
1.创建bean<jsp:useBean ../>
2.修改bean属性值,<jsp:setProperty .../>,需要给提供属性的默认值,防止发生异常;
3.访问bean属性值,<jsp:getProperty .../>.
共享bean的4中方式:
在<jsp:useBean .../>中指定scope的值:
1.page,不共享,默认的值,每个页面的每个请求会使用不同的bean;
2.request,请求,在可以在不同的页面中共享bean,例如在主页面中包含的子页面可以共享bean。
3.session,会话,来自于同一个客户(在会话超时之前)的请求会看到之前的修改过的bean属性;如果请求来自于不同客户(或在会话超时 后),则看到的时新创建的bean。
4.application,基于ServletColntext的共享,任何客户,如果之后再次访问同一个页面,会看到之前修改的bean。