在JSP中使用JavaBean

在JSP中使用JavaBean

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

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

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

使用元素为Javabean对象product的price和num属性赋值;

使用元素获取并输出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.元素

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

语法:

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

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

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

示例:元素的使用

product.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"

pageEncoding="utf-8"%>

Insert title here

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

3.元素

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

语法;

property="propertyName" param="parameterName"/

property="propertyName"/

property="*"

/>

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

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

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

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

示例:

(1)

(2)

<% float price=23.5f;%>

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

(3)

//假设有一请求:http://localhost:8080/chapter07/product.jsp?priceParam=23.5

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

(4)

//假设有一请求:http://localhost:8080/chapter07/product.jsp?priceParam=23.5

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

(5)

//假设有一请求:http://localhost:8080/chapter07/product.jsp?priceParam=23.5&num=2

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

示例:

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

4.元素

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

语法示例: