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

JSP
无需调优的内存优化
JAVA EXCEL API
新手指南之如何搜索你的问题的答案
Java 101:如果我不懂Java该怎么办?
jsp由浅入深
把本页内容导出成word文件或excel文件(原创)
在BEA WebLogic中使用Java消息服务
Form Your Own Design Pattern Study Group
从Coding Fan到真正的技术专家
我的Mysql5.0中文乱码解决方案
结合JAVASCRIPT将HTML导入Excel形成简单Web报表
Struts 的汉字显示问题终结解决方案
j2me网络实战指南
Java Page Flow开发:从JDBC数据源中检索并显示数据
人生、梦想、Java,又一个梦想者上路!
用Struts开发基于MVC的Web应用
Apache plug-in配置代理请求实战
一个简单的Timer Service
Tomcat 服务器下 JSP 页面中文问题及解决方法总结
Java Servlet 编程及应用(一)

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


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

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