用业余时间写成的使用servlet的一个DEMO,(希望对初学者有所帮助,末了我会把完整的程序代码都贴出来)
先简要回顾一下servlet的使用(具体的请参考servlet的api
http://tomcat.apache.org/tomcat-5.5-doc/servletapi/index.html,或者百度一下
), 首先是类层次结构,我们自己的servlet一般都继承自httpservlet, httpservlet继承自genericservlet, genericservlet实现了servlet(声明了init 、service。。等方法)和servletconfig(声明了getServletName、 getservletContext。等方法)接口。
getParameter :以字符串的形式返回请求参数的值,如果请求参数不存在,返回null,请求参数作为额外的信息和请求一起被发送。对于httpservlet来说,请求参数被存放与查询字符串或post表单中。
setAttribute :在本次请求中存放一个属性, 多个请求之间属性会被复位。
getRequestDispatcher :返回一个用于包装路径的类。
forward :转发请求到另一个资源(servlet, JSP file, or HTML file)
include :包含一个资源的上下文。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
下面是有关jdbc操作的辅助类(代码不足之处,请多多指正。)
DButil
package tutorial;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.Arrays;
/**
* 数据库操作工具类
*
* @author cong-px
*/
public class DButil {
private static DButil instance;
/*
* private 构造方法
*/
private DButil() {
}
/**
* 单例
*
* @return
*/
public synchronized static DButil getInstance() {
if (null == instance) {
instance = new DButil();
}
return instance;
}
/**
* 打开连接
*
* @return conn 连接
* @throws ClassNotFoundException
* @throws SQLException
*/
public Connection getConnection() throws ClassNotFoundException,
SQLException {
// 加载类
Class.forName("com.mysql.jdbc.Driver");
// H2Database 连接数据库
// Class.forName("org.h2.Driver");
// 获得连接
Connection conn = DriverManager
.getConnection("jdbc:mysql://localhost:3306/servletapp?user=root&password=123456&&useUnicode=true&characterEncoding=utf-8");
// Connection conn = DriverManager.getConnection("jdbc:h2:~/test", "sa", "");
// 返回连接
return conn;
}
/**
* 关闭连接
*
* @throws SQLException
*/
public static void closeConnection(Connection conn) throws SQLException {
if (null != conn) {
conn.close();
}
}
/**
* 获得PreparedStatement
*
* @param sql
* @return
* @throws SQLException
*/
public PreparedStatement getPreparedStatement(Connection conn, String sql)
throws SQLException {
PreparedStatement preparedStatement = conn.prepareStatement(sql);
return preparedStatement;
}
/**
* 关闭 PreparedStatement
*
* @throws SQLException
*/
public static void closePreparedStatement(
PreparedStatement preparedStatement) throws SQLException {
if (null != preparedStatement) {
preparedStatement.close();
}
}
/**
* 关闭ResultSet
*
* @throws SQLException
*/
public static void closeResultSet(ResultSet resultSet) throws SQLException {
if (null != resultSet) {
resultSet.close();
}
}
/**
* 查询操作<B>方法后不要忘记关闭连接</B>
*
* @param sql
* @param params
* @param preparedStatement
* @return resultSet 结果集
* @throws SQLException
* @throws ClassNotFoundException
*/
public ResultSet ExecuteQuery(PreparedStatement preparedStatement,
String sql, Object[] params) throws SQLException,
ClassNotFoundException {
ResultSet resultSet = null;
try {
this.fillStatement(preparedStatement, params);
resultSet = preparedStatement.executeQuery();
} catch (SQLException e) {
this.rethrow(e, sql, params);
}
return resultSet;
}
/**
* 更新操作
*
* @param sql
* @param params
* @return rows 更新条数
* @throws SQLException
* @throws ClassNotFoundException
*/
public int ExecuteUpdate(String sql, Object[] params) throws SQLException,
ClassNotFoundException {
// 影响的行数
int rows = 0;
PreparedStatement preparedStatement = null;
Connection conn = null;
try {
conn = this.getConnection();
preparedStatement = this.getPreparedStatement(conn, sql);
this.fillStatement(preparedStatement, params);
rows = preparedStatement.executeUpdate();
} catch (SQLException e) {
this.rethrow(e, sql, params);
} finally {
DButil.closePreparedStatement(preparedStatement);
DButil.closeConnection(conn);
}
return rows;
}
/**
* 参数化preparedStatement
*
* @param stmt
* @param params
* @throws SQLException
*/
protected void fillStatement(PreparedStatement stmt, Object[] params)
throws SQLException {
if (null == params) {
return;
}
/*
* 参数化preparedStatement
*/
for (int i = 0; i < params.length; i++) {
if (null != params[i]) {
stmt.setObject(i + 1, params[i]);
} else {
stmt.setNull(i + 1, Types.CHAR);
}
}
}
/**
* 重新抛出异常
*
* @param cause
* @param sql
* @param params
* @throws SQLException
*/
protected void rethrow(SQLException cause, String sql, Object params[])
throws SQLException {
StringBuilder msg = new StringBuilder();
msg.append(" Query :");
msg.append(sql);
if (null == params) {
msg.append("[]");
} else {
msg.append(Arrays.asList(params));
}
SQLException exception = new SQLException(msg.toString(), cause
.getSQLState(), cause.getErrorCode());
//
exception.setNextException(cause);
throw exception;
}
/**
* 不对异常进行处理
*
* @param conn
*/
public static void closeQuietly(Connection conn) {
try {
DButil.closeConnection(conn);
} catch (Exception e) {
// quiet
}
}
/**
* 不对异常进行处理
*
* @param preparedStatement
*/
public static void closeQuietly(PreparedStatement preparedStatement) {
try {
DButil.closePreparedStatement(preparedStatement);
} catch (Exception e) {
// quiet
}
}
/**
* 不对异常进行处理
*
* @param resultSet
*/
public static void colseQuietly(ResultSet resultSet) {
try {
resultSet.close();
} catch (Exception e) {
// quiet
}
}
/**
* 不对异常进行处理
*
* @param conn
* @param preparedStatement
* @param resultSet
*/
public static void colseQuietly(Connection conn,
PreparedStatement preparedStatement, ResultSet resultSet) {
try {
DButil.colseQuietly(resultSet);
} finally {
try {
DButil.closeQuietly(preparedStatement);
} finally {
DButil.closeQuietly(conn);
}
}
}
}
- 大小: 4.2 KB
分享到:
相关推荐
对于初学者来说,关注功能实现而非视觉效果是常见的。不过,了解基本的HTML和CSS布局知识,结合Bootstrap等前端框架,可以快速提升界面美观度。 文件列表中,`servlet_220301_day04.iml`是IntelliJ IDEA项目的配置...
这个"jsp+servlet写的一个crud(增删改查)培训的例子"是针对初学者或开发者的一个实践教程,它展示了如何利用这两项技术实现对数据库的基本操作:创建(Create)、读取(Read)、更新(Update)和删除(Delete),...
这个项目为初学者提供了学习Mybatis、Servlet和JSP集成应用的实战案例,有助于理解和掌握Web开发的基本流程。通过实际操作,可以更好地理解这三个技术在实际项目中的协作方式,为进阶的Web开发打下坚实的基础。
这个项目是一个典型的Web应用开发实例,对于初学者来说,可以通过它学习到如何使用Servlet、JSP、Oracle数据库以及DAO模式来实现CRUD操作,同时了解三层架构的设计思想。对于有经验的开发者,这样的项目也是一个快速...
总结起来,"Crud_Servlet.rar"项目为Java初学者提供了一个学习Web开发基础的实例。通过这个项目,你可以学习到Servlet、JSP如何与数据库配合完成CRUD操作,以及如何在IntelliJ IDEA中构建和运行Java Web应用。理解并...
在本文中,我们将深入探讨如何使用Servlet和JSP技术实现一个简单的网络交友平台,这是一个非常适合初学者进行学习和实践的项目。Servlet和JSP是Java Web开发中的核心技术,它们为构建动态网页提供了强大的支持。 ...
【初学者写留言本,带分页的java+servlet+oracle!】 在IT行业中,开发一个留言本系统是初学者入门Web开发的经典实践项目。这个项目涵盖了Java、Servlet和Oracle数据库这三个关键组件,它们共同构建了一个功能完善的...
【标题】"jsp+servlet+sqlserver2000网站源码"是一个针对初学者的实践项目,旨在帮助他们理解并掌握如何运用这些技术构建一个实际的web应用程序。这个项目结合了JavaServer Pages (JSP)、Servlet和SQL Server 2000...
在IT行业中,构建基于Web的应用程序是常见的任务,而Servlet、MySQL、HTML、CSS、JSP和EL表达式是实现这一...对于学习Java Web开发的初学者来说,这是一个很好的实践案例,可以帮助他们理解和掌握这些核心技术的使用。
本教程将重点讲解如何使用Servlet来实现数据库中的增删改查(CRUD)操作,这对于初学者理解Web应用程序的后端处理至关重要。 1. **Servlet基础知识** Servlet是Java Servlet API的核心组件,它是一个Java类,遵循...
对于初学者,理解这个简单CRUD应用的结构和工作原理是学习Java Web开发的基础。通过分析源代码,你可以了解到如何将用户输入转换为数据库操作,以及如何将查询结果展示给用户。这种实践性学习有助于深入理解Web应用...
JSP-CRUD 是一个针对初学者设计的项目,主要用于教授如何使用 JSP 技术实现数据库中的 CRUD(Create、Read、Update、Delete)操作。这个项目是用 myEclipse 开发工具构建的,可以直接运行,为学习者提供了一个实践的...
这个项目对于初学者来说是一个很好的实践平台,因为它涵盖了Java Web开发的核心技术,包括Java Servlet、JSP以及数据库交互。 首先,Java Servlet是Java EE(企业版)的一部分,它提供了一种服务器端编程模型,用于...
标签“java”和“初学者”表明文章将以Java为基础,讨论适合初学者的学习方法和阶段。 从提供的部分内容中,可以提炼以下详细知识点: 1. Java基础学习: - 建议初学者首先通过网络教程或视频课程学习Java基础。 ...
这个SSH CRUD项目为初学者提供了一个很好的学习平台,可以了解和实践Java Web开发中的核心技术和最佳实践。对于有经验的开发者,它也是一个快速开发基础CRUD功能的模板,可以在其基础上进行扩展和定制。
这个项目旨在帮助初学者理解Servlet如何与数据库交互,以及在Java EE工作流程中的角色。 【描述】中提到,开发环境为IntelliJ IDEA 12.1.4或Eclipse,这两个都是流行的Java集成开发环境。虽然它们各有特点,但用于...
Servlet是Java Web开发中的一个重要组件,它用于...对于初学者来说,这是一个很好的起点,对于有一定经验的开发者,也可以从中学习到最佳实践和优化技巧。在实际操作中,建议结合源码逐步调试,加深对每个环节的理解。
在本项目中,我们不会使用Servlet作为控制器,而是采用一种初学者友好的方法模拟控制器功能。 1. **创建(Create)**:在JSP中创建新数据通常涉及一个表单,用户可以输入数据并提交。你可以使用`<form>`标签创建...
《员工CRUD操作详解——基于Servlet、JSP与JDBC》 在Web开发领域,"CRUD"(Create,Read,Update,Delete)是数据库操作的...对于初学者来说,这是一个很好的实战练习项目,有助于加深对Servlet、JSP和JDBC的理解。
"JSP+Servlet+JavaBean增删改查实例"是一个非常适合初学者上手的项目,它涵盖了基础的CRUD(Create、Read、Update、Delete)操作,这是任何数据库应用的基础。 首先,JSP是一种服务器端脚本语言,它允许开发者在...