在JSP中使用JavaBean

1.在JSP中可以像使用普通类一样访问javabean,例如,通过java脚本实例化javabean、调用javabean对象的方法等。为了能在jsp页面中中更好地集成javabean和支持javabean的功能,JSP还提供了三个动作元素来访问javabean,分别为<jsp:useBean>、<jsp:setProperty>、<jsp:getProperty>,这三个动作元素分别用于创建或查找javabean实例对象、设置javabean对象的属性值和获取javabean对象的属性值。

示例:使用动作元素访问javabean

<jsp:useBean id="product" class="com.javaBean.ProductBean"/>
<jsp:setProperty property="price" value="23.5" name="product"/>
<jsp:setProperty property="num" value="2" name="product"/>
<jsp:getProperty property="totalPrice" name="product"/>

上述示例使用<jsp:useBean>元素创建或查找一个JavaBean对象product;

使用<jsp:setProperty>元素为Javabean对象product的price和num属性赋值;

使用<jsp:getProperty>元素获取并输出Javabean对象product的totalPrice属性值。

示例:使用java脚本访问javabean

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8" import="com.javabean.ProductBean"%>
<%
Object obj=pageContext.getAttribute("product");
ProductBean product=null;
if(obj==null){
product=new ProductBean();
pageContext.setAttribute("product",product,pageContext、PAGE_SCOPE);
}else{
product=(ProductBean)obj;
}
product.setPrice(23.5f);
product.setNum(2);
%>
<%=product.getTotalPrice()%>

通过上述两个例子对比可以看出,使用动作元素对javabean的访问没有一句java代码,这种方式更易于降低对页面设计人员的编程要求、增强页面的可维护性。因此在实际开发中,应该更多地采用动作元素访问javabean的方式

2.<jsp:useBean>元素

     用于在某个指定的作用域范围内查找一个指定名称的javabean对象,如果存在则直接返回javabean对象的引用,如果不存在则实例化一个新的javabean对象,并将它按指定的名称存储在指定的作用域范围内。

语法:

<jsp:useBean id="beanInstanceName" class="package.class" scope="page\request\session\application"/>

(1)id属性:用于指定javabean对象的引用名称和其存储域属性名。

(2)class属性:用于指定javabean的权限定名。

(3)scope属性:用于指定javabean对象的存储域范围,其取值只能是page、request、session和application4个值中的一个,默认为page。

示例:<jsp:useBean>元素的使用

product.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
</head>
<body>
<jsp:useBean id="product" class="com.javaBean" scope="page"/>
</body>
</html>

可查看product.jsp文件生成的Servlet源文件(product_jsp.java),可以看到该元素翻译成的java代码。

3.<jsp:setProperty>元素

    用于设置javabean对象的属性,相当于调用javabean对象的setter方法。

   语法;

<jsp:setProperty name="beanInstanceName" property="propertyName" value="propertyvalue"/
 property="propertyName" param="parameterName"/
 property="propertyName"/
 property="*"
/>

(1)name属性用于指定javabean对象的名称,其值与<jsp:useBean>标签中的id属性值相同。

(2)property属性用于指定javabean对象的属性。

(3)value属性用于指定javabean对象的某个属性的值,可以是一个字符串也可以是一个表达式,它将被自动转换为所要设置的javabean属性的类型,该属性可选。

(4)param属性用于将一个请求参数的值赋给javabean对象的某个属性,它可以将请求参数的字符串类型的返回值转换为javabean属性所对应的类型,该属性可选。value和param不能同时使用。

示例:

(1)

<jsp:setProperty name="product" property="price" value="23.5"/>

(2)

<% float price=23.5f;%>
<jsp:setProperty name="product" property="price" value="<%=price%>"/>

此示例形式表示使用一个表达式的value属性值来指定javabean对象的product的price属性的值。

(3)

//假设有一请求:http://localhost:8080/chapter07/product.jsp?priceParam=23.5
<jsp:setProperty name="product" property="price" param="priceParam"/>

此示例形式表示通过param属性来将请求参数priceParam的值赋给javabean的对象product的price属性,其中,字符串类型的请求参数值将被自动转换为与javabean对应属性相同的类型。

(4)

//假设有一请求:http://localhost:8080/chapter07/product.jsp?priceParam=23.5
<jsp:setProperty name="product" property="price" />

此示例形式表示将javabean对象product的price属性的值设置为与该属性同名(包括名称大小写要完全一致)的请求参数的值。它等同于param属性的值也为price的情况。

(5)

//假设有一请求:http://localhost:8080/chapter07/product.jsp?priceParam=23.5&num=2
<jsp:setProperty name="product" property="*" />

<jsp:setProperty>元素还可用于<jsp:useBean>元素起始标签和终止标签间,表示在此javabean对象实例化时,对其属性进行初始化。

示例:

<jsp:useBean id="product" class="com.javabean.productBean">
<jsp:setProperty name="product" property="price" value="23.5"/>
<jsp:setProperty name="product" property="num" value="2"/>
</jsp:useBean>

 由于嵌套在<jsp:useBean>中的<jsp:setProperty>元素只有在实例化javabean对象时才被执行,因此如果<jsp:useBean>元素所引用的javabean对象已经存在,嵌套在其中的<jsp:setProperty>元素将不被执行,只能在javabean对象初始化时执行一次。

4.<jsp:getProperty>元素

用于读取javabean对象的属性,等同于调用javabean对象的getter方法,然后将读取的属性值转换成字符串后输出到响应正文中。

语法示例:

<jsp:getProperty name="product" property="totalPrice"/>

 

  • 11
    点赞
  • 0
    评论
  • 44
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 终极编程指南 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值