当前页面: 开发资料首页 → J2EE 专题 → 谁能教教我,如何写个简单的serlvet读确数据库的内容,然后用jsp显示出来!!!
谁能教教我,如何写个简单的serlvet读确数据库的内容,然后用jsp显示出来!!!
摘要: 谁能教教我,如何写个简单的serlvet读确数据库的内容,然后用jsp显示出来!!!
用servlet读取数据库中的数据,得出的数据用jsp显示出来,新手问题,谢谢指教
推荐你本书《精通jsp》
呵呵
谢谢,其实我主要是不知道如何在jsp中调用servlet的对象,教教我大概其思路也可以
你在servlet里通过session set一个对象。。。然后在jsp页面得到这个对象把它显示出来就可以了
努力
我在servlet中定义了个容器,存储数据库中的数据,如何用getAttribute方法把容器中的数据读出来啊,最好能贴个代码给我看看
在SERVLET中用RequestDispatcher
Response.sendRedirt("你的JSP的URL");
这样就能转向到你想要的 JSP 了
内容也能转过去
读数据库的话就好办了,有很多文章的
用Collection col = new ArrayList();
来装你查到的数据
再用上面的方法传过去就行了
书的话,电子工业出版社的《JSP开发祥解》就不错的
form提交到servlet,servlet调用java的方法获取数据,然后转到jsp页面,显示数据。
这是基本的,当然想深入了解,还是看看书比较好。
package db;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
/**
* Desc:JDBC的封装,增加单例模式
* @author weiming
* @version 1.0
* 2006-9-24
*/
public class DBManager {
/**
* 驱动程序
*/
private String driver;
/**
* url
*/
private String url;
/**
* 数据库用户名称
*/
private String userName;
/**
* 用户密码
*/
private String password;
/**
* 数据库连接对象
*/
private Connection con;
/**
* DBManager对象
*/
private static DBManager dbManager = null;
/**
* 获得DBManager对象的实例
* @return DBManager对象的实例
* @throws Exception
*/
public static DBManager getInstance() throws Exception {
if (dbManager == null) {
dbManager = new DBManager();
}
return dbManager;
}
/**
* 私有构造函数,防止随意产生DBManager对象的实例
*/
private DBManager() throws Exception { //在构造函数中,如果出错,只能用丢出异常
init();
try {
Class.forName(driver);
} catch (Exception e) {
e.printStackTrace();
throw new Exception("加载驱动程序错误!");
}
}
/**
* 获取数据库连接对象
* @return 数据库连接对象
* @throws Exception
*/
public Connection getConnection() throws Exception {
try {
// 获取数据库连接,并保存
con = DriverManager.getConnection(url, userName, password);
} catch (SQLException se) {
se.printStackTrace();
throw new Exception("创建数据库连接错误!");
}
return con;
}
/**
* 获取数据库连接对象(使用事务)
* @return 数据库连接对象
* @throws Exception
*/
public Connection getConnectionWithTrans() throws Exception {
try {
// 获取数据库连接,并保存
con = DriverManager.getConnection(url, userName, password);
con.setAutoCommit(false);
} catch (SQLException se) {
se.printStackTrace();
throw new Exception("创建数据库连接错误!");
}
return con;
}
/**
* 关闭所有资源
* @param result 结果集
* @param stmt 语句对象
* @throws Exception
*/
public void closeAll(ResultSet result, Statement stmt) throws Exception {
closeResultSet(result);
closeStatement(stmt);
closeConnection();
}
/**
* 关闭数据库连接
* @throws Exception
*/
private void closeConnection() throws Exception {
try {
if (con != null && !con.isClosed()) {
con.close();
}
} catch (SQLException se) {
throw new Exception("关闭连接失败!");
}
}
/**
* 关闭结果集
* @param result 结果集
* @throws Exception
*/
private void closeResultSet(ResultSet result) throws Exception {
try {
if (result != null) {
result.close();
}
} catch (SQLException se) {
throw new Exception("关闭结果集失败!");
}
}
/**
* 关闭语句对象
* @param stmt 语句对象
* @throws Exception
*/
private void closeStatement(Statement stmt) throws Exception {
try {
if (stmt != null) {
stmt.close();
}
} catch (SQLException se) {
throw new Exception("关闭语句对象失败!");
}
}
/**
* 从配置文件中初始化数据库连接所需的参数
* @throws IOException
* @throws FileNotFoundException
*/
private void init() throws Exception {
Properties pro = new Properties();
try {
pro.load(new FileInputStream("DBConfig.properties"));
} catch (FileNotFoundException e) {
e.printStackTrace();
throw new Exception("配置文件未找到!");
} catch (IOException e) {
e.printStackTrace();
throw new Exception("读取配置文件出错!");
}
driver = pro.getProperty("driver");
url = pro.getProperty("url");
userName = pro.getProperty("username");
password = pro.getProperty("password");
}
/**
* 测试函数
* @param args
*/
public static void main(String[] args){
try {
DBManager dbManager = DBManager.getInstance();
Connection conn = dbManager.getConnection();
///Statement sta = conn.createStatement();
PreparedStatement psta = conn.prepareStatement("select * from student");
ResultSet rs = psta.executeQuery();
while(rs.next()){
System.out.println(rs.getString(2));
}
dbManager.closeAll(rs, psta);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
UP.COM
这个还可以实现分页显示!
<%@ page contentType="text/html;charset=8859_1" %>
<%
//变量声明
java.sql.Connection sqlCon; //数据库连接对象
java.sql.Statement sqlStmt; //SQL语句对象
java.sql.ResultSet sqlRst; //结果集对象
java.lang.String strCon; //数据库连接字符串
java.lang.String strSQL; //SQL语句
int intPageSize; //一页显示的记录数
int intRowCount; //记录总数
int intPageCount; //总页数
int intPage; //待显示页码
java.lang.String strPage;
int i;
//设置一页显示的记录数
intPageSize = 2;
//取得待显示页码
strPage = request.getParameter("page");
if(strPage==null){//表明在QueryString中没有page这一个参数,此时显示第一页数据
intPage = 1;
}
else{//将字符串转换成整型
intPage = java.lang.Integer.parseInt(strPage);
if(intPage<1) intPage = 1;
}
//装载JDBC驱动程序
java.sql.DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
//设置数据库连接字符串
strCon = "jdbc:oracle:thin:@linux:1521:ora4cweb";
//连接数据库
sqlCon = java.sql.DriverManager.getConnection(strCon,"hzq","hzq");
//创建一个可以滚动的只读的SQL语句对象
sqlStmt = sqlCon.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENS99vIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
//准备SQL语句
strSQL = "select name,age from test";
//执行SQL语句并获取结果集
sqlRst = sqlStmt.executeQuery(strSQL);
//获取记录总数
sqlRst.last();
intRowCount = sqlRst.getRow();
//记算总页数
intPageCount = (intRowCount+intPageSize-1) / intPageSize;
//调整待显示的页码
if(intPage>intPageCount) intPage = intPageCount;
%>
<head>
JSP数据库操作例程 - 数据分页显示 - JDBC 2.0 - Oracle </head>
<body>
<table border="1" cellspacing="0" cellpadding="0">
<tr>
<th>姓名</th>
<th>年龄</th>
</tr>
<%
if(intPageCount>0){
//将记录指针定位到待显示页的第一条记录上
sqlRst.absolute((intPage-1) * intPageSize + 1);
//显示数据
i = 0;
while(i
%>
<tr>
<td><%=sqlRst.getString(1)%></td>
<td><%=sqlRst.getString(2)%></td>
</tr>
<%
sqlRst.next();
i++;
}
}
%>
</table>
第<%=intPage%>页 共<%=intPageCount%>页 <%if(intPage
下一页<%}%> <%if(intPage>1){%>">上一页<%}%>
</body>
<%
//关闭结果集
sqlRst.close();
//关闭SQL语句对象
sqlStmt.close();
//关闭数据库
sqlCon.close();
%>
楼主之前取出来的肯定是null吧!
//先建一个类
package mydb;
import java.sql.*;
public class DBmanager {
private Connection conn;
private Statement stm;
private ResultSet rs;
public void openConn()
{
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//stundent为数据库(我这个是sql server 2000中的pubs数据库)
conn = DriverManager.getConnection("jdbc:odbc:student");
stm = conn.createStatement();
} catch (Exception ex) {}
}
public void closeConn()
{
try {
if (rs != null) {
rs.close();
}
if (stm != null) {
stm.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException ex) {
}
}
public ResultSet getQuery(String sql)
{
try {
rs = stm.executeQuery(sql);
return rs;
} catch (SQLException ex) {
return null;
}
}
public boolean doUpdate(String sql)
{
boolean type=false;
try {
stm.executeUpdate(sql);
type = true;
} catch (SQLException ex) {
}
return type;
}
public DBmanager() {
}
}
再建一个jsp
<%@ page contentType="text/html; charset=GBK" %>