- 浏览: 25227 次
- 性别:
- 来自: 北京
最新评论
相信使惯了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,回车效果图如下:
到此,基本上收工,至于其它的功能诸如:在页面上查询、修改、删除功能在此就不一一展示了。
长时间没这么从头到尾写代码了,感觉还有点小收获。如果写的有什么不周到的地方,望提出您宝贵的意见!!!
发表评论
-
oracle对查询结果进行排名
2014-07-09 10:20 1720要解决的问题:我们想对查询出来的数据进行排名统计,但又不想在源 ... -
Eclipse搭建Web项目后访问8080端口时报404
2014-07-04 11:02 1196习惯了用MyEclipse搭建Web项目的畅快,突然用ecli ... -
JS+CSS实现Table样式变化
2014-06-27 14:39 2393本例实现的功能如下: 1.表格中单元格内容超出单元格大小后不换 ... -
java获取字符串中只出现一次的字符
2014-06-10 16:19 1020今天同事突然问我怎么打印出一个字符串中只出现一次的字符,百度出 ... -
双色球机选
2014-05-30 22:15 563/** * 用户输入机选注数 */ public s ... -
oracle insert 语句
2014-05-02 19:38 1620基于oracle数据库中自带 ... -
oracle 正则表达式
2014-04-24 13:02 611开发中遇到oracle中要拆分字符串,在网上搜集后觉得这个不错 ... -
Eclipse中查看JDK源码
2014-03-28 17:39 684不会在eclipse中查看JDK源码??? 走起! 1.w ... -
oracle中误删除数据恢复
2014-03-24 09:22 1011情形一:将表中某条数据删除后将其恢复 已知有表TB,字段有B ... -
org.apache.jasper.JasperException: Unable to read TLD "META-INF/c.tld" from...
2014-03-23 21:02 560Myeclipse中启动tomcat服务后,浏览器访问项目时报 ... -
java
2014-03-23 16:22 457基于控制台打印金字塔: import java.util. ... -
java或javac不是内部命令
2014-03-22 23:22 881初学java时老师教了怎么配置path、classpath、J ...
相关推荐
本项目"JDBC+Servlet+Mysql 实现新闻表的动态增删改查"正是这样一个实例,它利用Java的Java Database Connectivity (JDBC) API、Servlet技术以及MySQL数据库来实现对新闻表的操作。下面我们将详细探讨这些技术及其在...
本教程以"web基础JDBC+Servlet+jsp"为主题,旨在帮助初学者掌握这三个核心概念,实现完整的CRUD(创建、读取、更新、删除)操作。下面将详细介绍这三个技术及其在Web开发中的应用。 **JDBC(Java Database ...
【jdbc+jsp+mysql实现CRUD】是一种常见的Web应用程序开发技术,主要应用于数据管理操作,如创建(Create)、读取(Read)、更新(Update)和删除(Delete)。在这个技术组合中,Java Servlet(通常通过JSP)作为...
JavaBean可以被其他组件(如Servlet)实例化并操作,实现数据的增删改查。 **MySQL** MySQL是一个广泛使用的开源关系型数据库管理系统,支持SQL标准。在本案例中,MySQL存储学生信息,与JDBC交互,执行SQL操作。...
1. **Create(创建)**:用户通过表单提交新数据,servlet接收到请求后,实例化一个JavaBean,将表单数据填充到JavaBean的属性中,然后调用数据库操作接口(如JDBC)进行插入操作,成功后返回响应信息。 2. **Read...
"JSP+Servlet+JavaBean增删改查实例"是一个非常适合初学者上手的项目,它涵盖了基础的CRUD(Create、Read、Update、Delete)操作,这是任何数据库应用的基础。 首先,JSP是一种服务器端脚本语言,它允许开发者在...
数据库连接通常通过JDBC(Java Database Connectivity)实现,编写SQL语句进行数据操作。 四、Servlet实现 1. **请求处理**:Servlet通过实现HttpServlet接口中的doGet和doPost方法来处理HTTP请求。例如,删除学生...
在学生管理系统中,JDBC被用来建立与数据库的连接,执行CRUD(Create, Read, Update, Delete)操作,比如添加、查询、修改和删除学生信息。 3. Servlet:Servlet是Java EE中的一种服务器端组件,用于扩展服务器的...
开发者可能需要创建数据库表来存储索引信息,并通过JDBC进行数据的CRUD(Create, Read, Update, Delete)操作。 **Lucene** Lucene是Apache软件基金会的一个开放源代码全文搜索引擎库,它提供了高级文本检索功能。...
通过JDBC(Java Database Connectivity)接口,Servlet可以与Oracle数据库交互,执行SQL语句完成数据的CRUD操作。 **Eclipse和MyEclipse** 是两种流行的Java集成开发环境(IDE),它们提供了编写、调试和部署Java ...
在JSP+Servlet+JavaBean的架构中,JDBC通常用于实现数据的CRUD操作,连接数据库,执行SQL语句,并将结果返回给前端。 在这个“JSP+Servlet+JavaBean+JDBC示例程序”中,我们可以预期以下关键组件: 1. **JSP页面**...
开发者通过JDBC(Java Database Connectivity)接口与SQL Server 2005进行通信,执行CRUD(Create、Read、Update、Delete)操作。 在实际开发过程中,项目一可能包含了以下步骤和组件: 1. **环境配置**:安装JDK...
Servlet会与数据库进行交互,执行CRUD(创建、读取、更新、删除)操作。 4. **连接数据库**:在Servlet中,通过JDBC(Java Database Connectivity)API建立与MSSQL的连接,执行SQL语句。 5. **部署应用**:将项目...
开发者通过JDBC(Java Database Connectivity)接口与MySQL进行通信,执行CRUD(Create, Read, Update, Delete)操作,实现数据的持久化。 **系统架构** 该网上书店系统采用MVC(Model-View-Controller)设计模式。...
在本例中,CRUD操作对应的SQL语句(INSERT、DELETE、UPDATE、SELECT)会被封装在Servlet或JavaBean中,通过JDBC执行。 为了实现日志的增删改查功能,开发者需要编写以下步骤: 1. **创建日志**:用户填写日志内容...
在图书管理系统中,Servlet或JSP通过JDBC连接到MySQL数据库,执行CRUD(Create, Read, Update, Delete)操作,管理图书数据。 6. **Eclipse或IntelliJ IDEA开发环境**: 开发JavaWeb项目通常使用Eclipse或IntelliJ...
Servlet通过JDBC(Java Database Connectivity)API与数据库进行交互,执行SQL语句以实现CRUD操作。 6. **MVC(Model-View-Controller)模式**: 虽然JSP、Servlet和JavaBean的组合不严格遵循MVC架构,但它们体现...
在Servlet中,会使用JDBC(Java Database Connectivity)来连接和操作数据库,执行CRUD(创建、读取、更新、删除)操作。 此外,本项目可能涉及Python的使用,这可能是在数据预处理、数据分析或者自动化测试等环节...
Servlet通过JDBC(Java Database Connectivity)与MySQL通信,执行CRUD(Create, Read, Update, Delete)操作。 **项目框架搭建** 在实际项目中,开发流程通常包括以下步骤: 1. **环境配置**:安装Java SDK、...
3. JDBC连接MySQL数据库,执行CRUD操作。 4. 用户身份验证和授权机制。 5. 错误处理和异常管理。 6. 使用Tomcat或其他Web服务器部署和测试应用。 7. 简单的前端设计,如HTML/CSS/JavaScript,增强用户体验。 总之,...