怎么用javabean查询数据库

zcourage 2007-12-22 08:53:41
曾经用jsp写了这样一个页面:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>


<html>
<head>
<title>OracleSelect</title>
</head>

<body>
<%!
String DBDRIVER = "oracle.jdbc.driver.OracleDriver" ;
String DBURL = "jdbc:oracle:thin:@localhost:1521:orcl" ;
String DBUSER = "system" ;
String DBPASSWORD = "zz47" ;
Connection conn = null ;
Statement stmt = null ;
ResultSet rs;
String name="原始赋值";
%>

<%
try
{
Class.forName(DBDRIVER) ;
// 连接时必须填写用户名及密码
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ;
// 创建表的SQL语句
String sql = "SELECT * FROM STUDENT" ;
stmt = conn.createStatement() ;
rs=stmt.executeQuery(sql) ;

//name=rs.getString(1);
out.print(name+"<br>");

out.print("学生表查询:"+"<br>");
out.print("<table width=580 border=1 height=100>");
out.print("<tbody>"+"<tr>");
out.print("<td align=center>"+" "+"姓名"+"</td>");
out.print("<td align=center>"+" "+"学号"+"</td>");
out.print("<td align=center>"+" "+"性别"+"</td>");
out.print("<td align=center>"+" "+"电话"+"</td>"+"</tr>");

while(rs.next())
{
out.print("<tr>");
out.print("<td>"+" "+rs.getString(1)+"</td>");
out.print("<td>"+" "+rs.getString("NUM")+"</td>");
out.print("<td>"+" "+rs.getString("SEX")+"</td>");
out.print("<td>"+" "+rs.getString("TEL")+"</td>"+"</tr>");
}

out.print("<tr>");
out.print("<td>"+" "+"</td>");
out.print("<td>"+" "+"</td>");
out.print("<td>"+" "+"</td>");
out.print("<td>"+" "+"</td>"+"</tr>");

out.print("</tbody>"+"</table>"+"<br>");

stmt.close() ;
conn.close() ;
}
catch(Exception e)
{
out.println("SQL异常!") ;
}
%>

</body>
</html>

用它虽然可以轻松的查询数据库,但近日接触了正规的三层结构和JSF框架,想把它改成JSF模式的,或者说能不能告诉我怎么用javabean进行查询数据库,再把查询的结果传给类似list类型的对象,然后再在一个前台的jsp页面输出啊,麻烦那位老师大侠帮忙写个小例子呗,学生十分感谢!!
...全文
356 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lihui157 2007-12-24
  • 打赏
  • 举报
回复
1、javabean里写:
List resultList = new ArrayList();
while(rs.next())
{
Map rowMap = new HashMap();
rowMap.put("username", rs.getString("username"));
rowMap.put("sex", rs.getString("sex"));
... ...

resultList.add(rowMap);
}

return resultList;

之后通过request.setAttribute("result", resultList);把结果集返回页面
----------------------------------------------------------------------
我以前写的时候是把一张表写了一个类,然后在循环中用set方法把字段值分别写进属性,然后list.add(类对象),请问这么用类做载体与map做载体哪个更合适些?
胡矣 2007-12-24
  • 打赏
  • 举报
回复
mark
尹崇 2007-12-24
  • 打赏
  • 举报
回复

System.out.println(e.getMessage());

看打印结果就知道了
fengyifei11228 2007-12-24
  • 打赏
  • 举报
回复
把resultPage.jsp中的代码改成下边这样
<h:form>   
<h:outputText value="#{Sbean.name}"/> <br>
<h:dataTable value="#{Sbean.mylist}" var="user">
<h:column>
<h:outputText value="#{user[0].NAME}"/>
</h:column>
<h:column>
<h:outputText value="#{user[0].NUM}"/>
</h:column>
<h:column>
<h:outputText value="#{user[0].SEX}"/>
</h:column>
<h:column>
<h:outputText value="#{user[0].TEL}"/>
</h:column>
</h:dataTable>
</h:form>

得到的user是list类型的,user[0]才是Map
zcourage 2007-12-23
  • 打赏
  • 举报
回复
我的javabean为:
------------------------selectbean---------------------
package com.bean;
import java.sql.*;
import java.util.*;
import javax.servlet.jsp.jstl.sql.*;


public class selectBean {
String DBDRIVER = "oracle.jdbc.driver.OracleDriver" ;
String DBURL = "jdbc:oracle:thin:@localhost:1521:orcl" ;
String DBUSER = "system" ;
String DBPASSWORD = "zz47" ;
Connection conn = null ;
Statement stmt = null ;
ResultSet rs=null;
private List mylist=null;
String name="查询结果是:";


public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public List getMylist() {
return mylist;
}

public void setMylist(List mylist) {
this.mylist = mylist;
}

public ResultSet getSs() {
return rs;
}

public void setSs(ResultSet rs) {
this.rs = rs;
}

public Result setConnect()
{
try
{
Class.forName(DBDRIVER) ;
// 连接时必须填写用户名及密码
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ;
// 创建表的SQL语句
String sql = "SELECT * FROM STUDENT" ;
stmt = conn.createStatement() ;
rs=stmt.executeQuery(sql) ;
}
catch(Exception e)
{
}
return ResultSupport.toResult(rs);
}

public List<String> resultConnect()
{
//rs=setConnect();
mylist=new ArrayList();
try{
while(rs.next())
{
Map rowMap = new HashMap();
rowMap.put("NAME", rs.getString("NAME"));
rowMap.put("NUM", rs.getString("NUM"));
rowMap.put("SEX", rs.getString("SEX"));
rowMap.put("TEL", rs.getString("TEL"));
mylist.add(rowMap);
}
}
catch(Exception e)
{
name="SQL异常";
}

return mylist;
}

public String query()
{
mylist=resultConnect();
return "success";
}

}
-----selectPage.jsp-------
<%@ page language="java" pageEncoding="GBK"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSF 'selectPage.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->

</head>

<body>
<f:view>
<h:form>
学生表查询:<br>
<h:commandLink id="link" action="#{Sbean.query}" rendered="true" value="查询"></h:commandLink><br>

</h:form>
</f:view>
</body>
</html>
----------resultPage.jsp----------
<%@ page language="java" pageEncoding="GBK"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSF 'resultPage.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->

</head>

<body>
<f:view>
<h:form>
<h:outputText value="#{Sbean.name}"/><br>
<h:dataTable value="#{Sbean.mylist}" var="user">
<h:column><h:outputText value="#{user.NAME}"/>
</h:column>
<h:column>
<h:outputText value="#{user.NUM}"/>
</h:column>
<h:column>
<h:outputText value="#{user.SEX}"/>
</h:column>
<h:column>
<h:outputText value="#{user.TEL}"/>
</h:column>
</h:dataTable>
</h:form>
</f:view>
</body>
---------faces-config.xml------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN" "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">

<faces-config >
<managed-bean>
<managed-bean-name>Sbean</managed-bean-name>
<managed-bean-class>com.bean.selectBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<navigation-rule>
<from-view-id>/selectPage.jsp</from-view-id>
<navigation-case>
<from-outcome>success</from-outcome>
<to-view-id>/resultPage.jsp</to-view-id>
</navigation-case>
</navigation-rule></faces-config>

结果输出SQL异常!!
不知为什么哦!
uu_snow 2007-12-23
  • 打赏
  • 举报
回复
当然可以了:
1、javabean里写:
List resultList = new ArrayList();
while(rs.next())
{
Map rowMap = new HashMap();
rowMap.put("username", rs.getString("username"));
rowMap.put("sex", rs.getString("sex"));
... ...

resultList.add(rowMap);
}

return resultList;

之后通过request.setAttribute("result", resultList);把结果集返回页面

2、jsp里使用:
List resultList = (List)request.getAttribute("result");
之后循环这个resultList即可
zcourage 2007-12-22
  • 打赏
  • 举报
回复
对了说明一下,在jsp里不要出现类似while(rs.next())
{
out.print(" <tr> ");
out.print(" <td> "+" "+rs.getString(1)+" </td> ");
out.print(" <td> "+" "+rs.getString("NUM")+" </td> ");
out.print(" <td> "+" "+rs.getString("SEX")+" </td> ");
out.print(" <td> "+" "+rs.getString("TEL")+" </td> "+" </tr> ");
} 的语句!因为是要在javabean中得到结果的!

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧