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

JSP
GET 方式提交的含有特殊字符的参数
java big5到gb2312的编码转换
java Lucene 中自定义排序的实现
hibernate中的增删改查实现代码
jsp 定制标签(Custom Tag)
jsp基础速成精华讲解
IE cache缓存 所带来的问题收藏
关于JSP的一点疑问小结
JSP 多条SQL语句同时执行的方法
jsp include文件时的一个乱码解决方法
在JSTL EL中处理java.util.Map,及嵌套List的情况
jsp 页面显示的一些用法
根据Hibernte的cfg文件生成sql文件
五种 JSP页面跳转方法详解
JSP 防范SQL注入攻击分析
JSP 连接MySQL配置与使用
java eclipse 启动参数
jsp 页面上图片分行输出小技巧
解决jsp开发中不支持EL问题
JSP 页面中使用FCKeditor控件(js用法)

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-04   浏览: 139 ::
收藏到网摘: 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中有很多数据选项,而且表单数据类型很复杂时,使用这样语句简捷方便.

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