`
沧海一小粟
  • 浏览: 25232 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JDBC+Servlet实现CRUD操作(实例)

阅读更多

相信使惯了MyEclipse的童鞋,突然在eclipse下做类似JDBC+SERVLET,STRUTS,HIBERNATE,SSH项目肯定遇到很多问题(同感的赞一个),话不多说,直接开始实战演练:

数据库表:TB(BID,BNAME,BSEX,BAGE)

1.在eclipse中新建项目(Dynamic Web Project)名字就叫JDBCDemo;
2.创建package,com.entity;com.util;com.servlet;
3.在com.entity下创建class,我这里只是简单展示一下数据库中表TB的数据以及CRUD操作;

TB.java:
package com.entity;

public class TB {
private int bid;
private String bname;
private String bsex;
private int bage;
public TB() {
}
public TB(int bid, String bname, String bsex, int bage) {
super();
this.bid = bid;
this.bname = bname;
this.bsex = bsex;
this.bage = bage;
}
public int getBid() {
return bid;
}
public void setBid(int bid) {
this.bid = bid;
}
public String getBname() {
return bname;
}
public void setBname(String bname) {
this.bname = bname;
}
public String getBsex() {
return bsex;
}
public void setBsex(String bsex) {
this.bsex = bsex;
}
public int getBage() {
return bage;
}
public void setBage(int bage) {
this.bage = bage;
}

}
4.实体类准备好了以后,关键的一步来鸟,那就是BaseDao,跟着我一起来写吧:
(各位童鞋,这里别忘了你使啥数据库就将对应的jar包放到WEB-INF/lib下)
BaseDao.java:

package com.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class BaseDao {

//声明连接数据库的四个常量(驱动、连接地址、用户名、密码)
private static final String DRIVER = "oracle.jdbc.driver.OracleDriver";
private static final String URL = "jdbc:oracle:thin:@localhost:1521:orcl";
private static final String USER = "gejun";
private static final String PWD = "gejun";
/**
* 获取数据库连接对象
* @return
* @throws ClassNotFoundException
* @throws SQLException
*/
public Connection getConnection() throws ClassNotFoundException, SQLException{
Class.forName(DRIVER);
return DriverManager.getConnection(URL, USER, PWD);
}
/**
* 释放数据库资源
* @param conn
* @param sta
* @param res
*/
public void closeAll(Connection conn,Statement sta,ResultSet res){
try {
if(res!=null)
res.close();
if(sta!=null)
sta.close();
if(conn!=null&&!conn.isClosed())
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 增、删、改通用方法
* @param sql
* @param args
* @return
*/
public int executeSql(String sql,String[] args){
Connection conn = null;
PreparedStatement ps = null;
int result = 0;
try {
conn = getConnection();
ps = conn.prepareStatement(sql);
if(args!=null&&args.length>0){
for (int i = 0; i < args.length; i++) {
ps.setString(i+1, args[i]);
}
}
result = ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally{
closeAll(conn, ps, null);
}
return result;
}
}

5.写完了BaseDao,接下来就应该是具体的实体类对应的DAO了;

TBDao:

package com.util;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import com.entity.TB;

public class TBDao extends BaseDao {

/**
* 添加
* @param tb
* @return
*/
public int add(TB tb){
String sql = "INSERT INTO TB VALUES(?,?,?,?)";
String bid = Integer.toString(tb.getBid());
String bage = Integer.toString(tb.getBage());
String[] args = {bid,tb.getBname(),tb.getBsex(),bage};
return executeSql(sql, args);
}
/**
* 删除
* @param id
* @return
*/
public int delete(int id){
String sql = "DELETE TB WHERE BID=?";
String bid = Integer.toString(id);
String[] args = {bid};
return executeSql(sql,args);
}
/**
* 更新
* @param tb
* @return
*/
public int update(TB tb){
String sql = "UPDATE TB SET BNAME=?,BSEX=?,BAGE=? WHERE BID=?";
String bid = Integer.toString(tb.getBid());
String bage = Integer.toString(tb.getBage());
String[] args = {tb.getBname(),tb.getBsex(),bage,bid};
return executeSql(sql,args);
}
/**
* 根据id查询
* @param id
* @return
*/
public List<TB> findById(int id){
Connection conn = null;
PreparedStatement ps = null;
ResultSet res = null;
String sql = "SELECT * FROM TB WHERE ID=?";
List<TB> tbs = new ArrayList<TB>();
TB tb = null;
try {
conn = getConnection();
ps = conn.prepareStatement(sql);
res = ps.executeQuery();
if(res.next()){
tb = new TB(res.getInt("bid"),res.getString("bname"),res.getString("bsex"),res.getInt("bage"));
tbs.add(tb);
}
} catch (Exception e) {
e.printStackTrace();
} finally{
closeAll(conn, ps, res);
}
return tbs;
}
/**
* 查询所有
* @return
*/
public List<TB> findAll(){
Connection conn = null;
PreparedStatement ps = null;
ResultSet res = null;
String sql = "SELECT * FROM TB";
List<TB> tbs = new ArrayList<TB>();
TB tb = null;
try {
conn = getConnection();
ps = conn.prepareStatement(sql);
res = ps.executeQuery();
while(res.next()){
tb = new TB(res.getInt("bid"),res.getString("bname"),res.getString("bsex"),res.getInt("bage"));
tbs.add(tb);
}
} catch (Exception e) {
e.printStackTrace();
} finally{
closeAll(conn, ps, res);
}
return tbs;
}
}

6.dao基本上完成了,下面就是开始准备servlet了;
eclipse中创建servlet时会遇到这样的问题:创建好servlet后,类中有错The import javax.servlet connot be resolved.
解决方案:
项目上右键:Properties-->java build path-->add library-->Server Runtime-->Apacth Tomcat X.X(如果没有安装tomcat,你懂的)-->ok
看看,servlet是不是没错了 ,那就开始编写servlet吧!

DoFindAllServlet.java:
package com.servlet;

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.entity.TB;
import com.util.TBDao;

/**
* Servlet implementation class for Servlet: DoFindAllServlet
*
*/
public class DoFindAllServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
   static final long serialVersionUID = 1L;
  
    /* (non-Java-doc)
* @see javax.servlet.http.HttpServlet#HttpServlet()
*/
public DoFindAllServlet() {
super();
}  

/* (non-Java-doc)
* @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;utf-8");
request.setCharacterEncoding("utf-8");
doPost(request, response);


/* (non-Java-doc)
* @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;utf-8");//响应形式、字符集
request.setCharacterEncoding("utf-8");//请求的字符集
TBDao tbd = new TBDao();
List<TB> tbs = tbd.findAll();
request.setAttribute("tbs", tbs);
request.getRequestDispatcher("index.jsp").forward(request, response);
}        
}
建好了这个查询所有的servlet后,你是不是期待着看下效果呢,莫急,页面得准备下:
个人的思路是访问项目时写了个1.jsp做过度作用,在WebRoot下新建1.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>跳转页面</title>
<script type="text/javascript">
	function redirect(){
		location.href="DoFindAllServlet";
	}
	window.onload=redirect;
</script>
</head>
<body>
正在加载数据......
</body>
</html>


写完跳转的jsp,别忘了把web.xml中的欢迎页设置成1.jsp;接下来就来完成展示信息页面index.jsp:
页面采用了jstl的标签库,如果页面报错时,请检查WEB/INF下是否有jstl.jar,和standard.jar,这两个jar包可以在tomcat中的example下lib目录中找到,一定要是配套的,不然报错。
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<center>
<h4>JDBC+SERVLET实例</h4>
<table border="1px solid pink">
	<tr>
		<td>编号</td>
		<td>姓名</td>
		<td>性别</td>
		<td>年龄</td>
		<td>操作</td>
	</tr>
	<c:forEach items="${requestScope.tbs}" var="tb">
		<tr>
			<td>${tb.bid }</td>
			<td>${tb.bname }</td>
			<td>${tb.bsex }</td>
			<td>${tb.bage }</td>
			<td><a>修改</a> <a>删除</a></td>
		</tr>
	</c:forEach>
</table>
</center>
</body>
</html>

通过以上步骤,启动tomcat服务器,浏览器输入:http://localhost:8080/JDBCDemo,回车效果图如下:

到此,基本上收工,至于其它的功能诸如:在页面上查询、修改、删除功能在此就不一一展示了。

长时间没这么从头到尾写代码了,感觉还有点小收获。如果写的有什么不周到的地方,望提出您宝贵的意见!!!
  • 大小: 54.6 KB
0
0
分享到:
评论

相关推荐

    JDBC+Servlet+Mysql 实现新闻表的动态增删改查

    本项目"JDBC+Servlet+Mysql 实现新闻表的动态增删改查"正是这样一个实例,它利用Java的Java Database Connectivity (JDBC) API、Servlet技术以及MySQL数据库来实现对新闻表的操作。下面我们将详细探讨这些技术及其在...

    web基础JDBC+Servlet+jsp

    本教程以"web基础JDBC+Servlet+jsp"为主题,旨在帮助初学者掌握这三个核心概念,实现完整的CRUD(创建、读取、更新、删除)操作。下面将详细介绍这三个技术及其在Web开发中的应用。 **JDBC(Java Database ...

    jdbc+jsp+mysql实现CRUD

    【jdbc+jsp+mysql实现CRUD】是一种常见的Web应用程序开发技术,主要应用于数据管理操作,如创建(Create)、读取(Read)、更新(Update)和删除(Delete)。在这个技术组合中,Java Servlet(通常通过JSP)作为...

    jdbc+servlet+javabean+mysql的数据库增删改查的案例

    JavaBean可以被其他组件(如Servlet)实例化并操作,实现数据的增删改查。 **MySQL** MySQL是一个广泛使用的开源关系型数据库管理系统,支持SQL标准。在本案例中,MySQL存储学生信息,与JDBC交互,执行SQL操作。...

    jsp+servlet+javabean实现的增删改查

    1. **Create(创建)**:用户通过表单提交新数据,servlet接收到请求后,实例化一个JavaBean,将表单数据填充到JavaBean的属性中,然后调用数据库操作接口(如JDBC)进行插入操作,成功后返回响应信息。 2. **Read...

    JSP+Servlet+JavaBean增删改查实例

    "JSP+Servlet+JavaBean增删改查实例"是一个非常适合初学者上手的项目,它涵盖了基础的CRUD(Create、Read、Update、Delete)操作,这是任何数据库应用的基础。 首先,JSP是一种服务器端脚本语言,它允许开发者在...

    学生信息管理系统jsp+servlet

    数据库连接通常通过JDBC(Java Database Connectivity)实现,编写SQL语句进行数据操作。 四、Servlet实现 1. **请求处理**:Servlet通过实现HttpServlet接口中的doGet和doPost方法来处理HTTP请求。例如,删除学生...

    数据库课程作业,基于jsp + jdbc + servlet + javabean的学生管理系统.zip

    在学生管理系统中,JDBC被用来建立与数据库的连接,执行CRUD(Create, Read, Update, Delete)操作,比如添加、查询、修改和删除学生信息。 3. Servlet:Servlet是Java EE中的一种服务器端组件,用于扩展服务器的...

    jsp+servlet+jdbc+lucene 搜索引擎

    开发者可能需要创建数据库表来存储索引信息,并通过JDBC进行数据的CRUD(Create, Read, Update, Delete)操作。 **Lucene** Lucene是Apache软件基金会的一个开放源代码全文搜索引擎库,它提供了高级文本检索功能。...

    JSP+Servlet+JavaBean的新闻发布系统

    通过JDBC(Java Database Connectivity)接口,Servlet可以与Oracle数据库交互,执行SQL语句完成数据的CRUD操作。 **Eclipse和MyEclipse** 是两种流行的Java集成开发环境(IDE),它们提供了编写、调试和部署Java ...

    JSP+Servlet+JavaBean+JDBC示例程序

    在JSP+Servlet+JavaBean的架构中,JDBC通常用于实现数据的CRUD操作,连接数据库,执行SQL语句,并将结果返回给前端。 在这个“JSP+Servlet+JavaBean+JDBC示例程序”中,我们可以预期以下关键组件: 1. **JSP页面**...

    网上花店 JSP+SERVLET+JAVABEAN (数据库SQL SERVER2005)

    开发者通过JDBC(Java Database Connectivity)接口与SQL Server 2005进行通信,执行CRUD(Create、Read、Update、Delete)操作。 在实际开发过程中,项目一可能包含了以下步骤和组件: 1. **环境配置**:安装JDK...

    jsp+servlet+mssql实现的留言板

    Servlet会与数据库进行交互,执行CRUD(创建、读取、更新、删除)操作。 4. **连接数据库**:在Servlet中,通过JDBC(Java Database Connectivity)API建立与MSSQL的连接,执行SQL语句。 5. **部署应用**:将项目...

    JSP+JavaBean+Servlet网上书店

    开发者通过JDBC(Java Database Connectivity)接口与MySQL进行通信,执行CRUD(Create, Read, Update, Delete)操作,实现数据的持久化。 **系统架构** 该网上书店系统采用MVC(Model-View-Controller)设计模式。...

    jsp+servlet+javabean实现数据库增删改查操作

    在本例中,CRUD操作对应的SQL语句(INSERT、DELETE、UPDATE、SELECT)会被封装在Servlet或JavaBean中,通过JDBC执行。 为了实现日志的增删改查功能,开发者需要编写以下步骤: 1. **创建日志**:用户填写日志内容...

    javaweb 基于JSP+Servlet+Mysql的图书管理系统

    在图书管理系统中,Servlet或JSP通过JDBC连接到MySQL数据库,执行CRUD(Create, Read, Update, Delete)操作,管理图书数据。 6. **Eclipse或IntelliJ IDEA开发环境**: 开发JavaWeb项目通常使用Eclipse或IntelliJ...

    jsp+servlet+javaBean实例

    Servlet通过JDBC(Java Database Connectivity)API与数据库进行交互,执行SQL语句以实现CRUD操作。 6. **MVC(Model-View-Controller)模式**: 虽然JSP、Servlet和JavaBean的组合不严格遵循MVC架构,但它们体现...

    基于java+Servlet实现的前后端分离编写的机票预订管理系统.zip

    在Servlet中,会使用JDBC(Java Database Connectivity)来连接和操作数据库,执行CRUD(创建、读取、更新、删除)操作。 此外,本项目可能涉及Python的使用,这可能是在数据预处理、数据分析或者自动化测试等环节...

    jsp+servlet+mysql项目框架

    Servlet通过JDBC(Java Database Connectivity)与MySQL通信,执行CRUD(Create, Read, Update, Delete)操作。 **项目框架搭建** 在实际项目中,开发流程通常包括以下步骤: 1. **环境配置**:安装Java SDK、...

    jsp+servlet+mysql酒店订房基础项目

    3. JDBC连接MySQL数据库,执行CRUD操作。 4. 用户身份验证和授权机制。 5. 错误处理和异常管理。 6. 使用Tomcat或其他Web服务器部署和测试应用。 7. 简单的前端设计,如HTML/CSS/JavaScript,增强用户体验。 总之,...

Global site tag (gtag.js) - Google Analytics