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

JSP
Servlet及JSP中的多线程同步问题
使用Ant和Tomcat创建Web应用
如何直接在浏览器内运行SQL命令
Servlet、Jsp中的多国语言显示
html与jsp开发分离技术
通过Jsp发送动态图像
Servlets和JSP Pages最佳实践
学习在JSP中使用JavaBeans
JSP显示内容缓存技巧
应用JDOM处理数据库到XML转换的JSP实现
JSP中tomcat的SQL Server2000数据库连接池的配置
用JSTL实现JSP应用程序快速开发
浅谈4种类型的JDBC驱动程序
怎样设置 JSP 的虚拟目录
Java 中对文件的读写操作之比较
javamail在jsp中调用
jsp中任意文字转Unicode的通用模块
JSP与SQL SERVER的留言本
jspSmartUpload上传下载全攻略
Tomcat5.x中的虚拟主机配置方法

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


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

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