当前位置: 首页 > 图文教程 > 网络编程 > JSP > Jsp中数据bean的直接赋值

JSP
Hibernate save() saveorupdate()的用法
hibernate更新数据方法小结
jsp 复选框使用方法
JSP单选按钮验证、下拉框验证、复选框验证实现代码
jsp Hibernate批量更新和批量删除处理代码
JSP彩色验证码的实例代码
[J2SE]Java中3DES加密解密调用示例
【算法】扑克发牌算法实现
java易懂易用的MD5加密(可直接运行) (1)
java 易懂易用的MD5加密(可直接运行)(2)
java 截取字符串(判断汉字)
java 中文字符串数组按照音序排列
JAVA 18位身份证号码校验码的算法
jsp JFreeChart使用心得与例子
Hibernate 查询方式总结
java struts常见错误以及原因分析
Java 获取URL的内容
JAVA (Jsp)利用Google的Translate开发API的代码
java SOAPHEADER的web service
JSP与JS交互问题 值传递

JSP 中的 Jsp中数据bean的直接赋值


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-04   浏览: 138 ::
收藏到网摘: n/a

一般最常使用的是将form表单中input值存入数据库, 如果数据项很多且类型复杂,使用通常的request.getParameter()
获取的是字符型,由于Jsp不同于PHP Perl其他脚本语言,Jsp对数据类型要求很严格,不能随意在使用中自由转换,
因此,使用 request.getParameter()后就需要进行手工转换数据类型,如果数据项目一多,很复杂,而且枯燥容易出错,

实际上在Jsp中也有自动转换数据类型的功能,使用useBean功能.

如 一个form表单如下:

<form action=save.jsp method=post>

产品名称:<input type=text name="productname">
产品数量:<input type=text name="qty">
产品价格:<input type=text name="price">
.....
<input type="submit">

</form>

我们要将这个表单中的数据存储到数据库profile中.很显然,这一工作,需要在save.jsp中完成.

在save.jsp中我们假设已经有一个编制好的ProfileDB 数据库bean,ProfileDB的大概代码是:

public ProfileDB{

private String productname="";
public void setProductname(String productname){ this.productname=productname}

private int qty=0;
public void setQty(int qty){ this.qty=qty}

private float price=0.0;
public void setPrice(float price){ this.price=price}

public void insert (){

...................

}

}

注意到profileDB中qty price都不是String类型,所以要将form中的qty price数据赋值给profileD的
qty和price,需要进行数据转换:

<jsp:useBean id="profile" scope="page" class="ProfileDB" />
<%
  int qty = Interger.parseInt(request.getParameter(“qty”));
  float price=....
%>
<jsp:setProperty name="profile" property="qty" value="<%= qty%>" />
.....

profile.insert();



这样是不是很繁琐?这样还有一个缺点,严格的讲,必须对转换语句有个catch语句,因为万一如果表单中没有qty
这一项,也就是 request.getParameter(“qty”)为null, 一旦执行起来,Jsp报错程序就会只给你一个Null
出错信息,没有严格指出是哪里出现null了,会让你头疼死,刚刚接触Jsp的人是最怕null报错的.



实际上Jsp中的useBean提供一个方法property="*" 让系统自动完成转换:

首先 必须在ProfileDB中有针对每个变量方法存储的方法:setXXXX, 如setProductname setQty
这里的XXXX(也就是productname qty price) 应该和上面表单程序中input的name是一致的,

save.jsp程序新代码:

<jsp:useBean id="profile" scope="page" class="ProfileDB" />
<jsp:setProperty name="profile" property="*" />


profile.insert();


.....

在save.jsp的新代码中我们注意到语句:<jsp:setProperty name="profile" property="*" />与之前的不同

使用 setProperty property="*"是将表单里提交的数据全部交给bean去处理,因为在bean里面能够方便的进
行各种复杂的逻辑处理, 这样, 直接运行profile.insert(), 就可以将表单中的数据直接存入数据库了.
是不是很简单?


尤其如果你的表单form中有很多数据选项,而且表单数据类型很复杂时,使用这样语句简捷方便.

从现在起,你就不再害怕表单中巨繁的数据存储了.