`
congpeixue
  • 浏览: 274694 次
  • 性别: Icon_minigender_1
  • 来自: ...
社区版块
存档分类
最新评论

servlet(CRUD)以飨初学者

阅读更多
用业余时间写成的使用servlet的一个DEMO,(希望对初学者有所帮助,末了我会把完整的程序代码都贴出来)


先简要回顾一下servlet的使用(具体的请参考servlet的apihttp://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
分享到:
评论

相关推荐

    原生servlet_CRUD

    对于初学者来说,关注功能实现而非视觉效果是常见的。不过,了解基本的HTML和CSS布局知识,结合Bootstrap等前端框架,可以快速提升界面美观度。 文件列表中,`servlet_220301_day04.iml`是IntelliJ IDEA项目的配置...

    jsp+servlet写的一个crud(增删改查)培训的例子

    这个"jsp+servlet写的一个crud(增删改查)培训的例子"是针对初学者或开发者的一个实践教程,它展示了如何利用这两项技术实现对数据库的基本操作:创建(Create)、读取(Read)、更新(Update)和删除(Delete),...

    基于Mybatis/servlet的简单CRUD

    这个项目为初学者提供了学习Mybatis、Servlet和JSP集成应用的实战案例,有助于理解和掌握Web开发的基本流程。通过实际操作,可以更好地理解这三个技术在实际项目中的协作方式,为进阶的Web开发打下坚实的基础。

    CRUD.zip_crud servlet oracle_jsp crud_oracle_oracle jsp crud

    这个项目是一个典型的Web应用开发实例,对于初学者来说,可以通过它学习到如何使用Servlet、JSP、Oracle数据库以及DAO模式来实现CRUD操作,同时了解三层架构的设计思想。对于有经验的开发者,这样的项目也是一个快速...

    Crud_Servlet.rar

    总结起来,"Crud_Servlet.rar"项目为Java初学者提供了一个学习Web开发基础的实例。通过这个项目,你可以学习到Servlet、JSP如何与数据库配合完成CRUD操作,以及如何在IntelliJ IDEA中构建和运行Java Web应用。理解并...

    基于servlet和jsp的网络交友java简单实现 毕业设计 毕业生 (适合初学者)

    在本文中,我们将深入探讨如何使用Servlet和JSP技术实现一个简单的网络交友平台,这是一个非常适合初学者进行学习和实践的项目。Servlet和JSP是Java Web开发中的核心技术,它们为构建动态网页提供了强大的支持。 ...

    初学者写留言本,带分页的java+servlet+oracle!

    【初学者写留言本,带分页的java+servlet+oracle!】 在IT行业中,开发一个留言本系统是初学者入门Web开发的经典实践项目。这个项目涵盖了Java、Servlet和Oracle数据库这三个关键组件,它们共同构建了一个功能完善的...

    jsp+servlet+sqlserver2000网站源码,适合初学者看

    【标题】"jsp+servlet+sqlserver2000网站源码"是一个针对初学者的实践项目,旨在帮助他们理解并掌握如何运用这些技术构建一个实际的web应用程序。这个项目结合了JavaServer Pages (JSP)、Servlet和SQL Server 2000...

    Servlet+MySql+Web(HTML+CSS+JSP技术+EL表达式)通过IDEA来实现数据库的增删改查(crud)

    在IT行业中,构建基于Web的应用程序是常见的任务,而Servlet、MySQL、HTML、CSS、JSP和EL表达式是实现这一...对于学习Java Web开发的初学者来说,这是一个很好的实践案例,可以帮助他们理解和掌握这些核心技术的使用。

    servlet实现增删改查

    本教程将重点讲解如何使用Servlet来实现数据库中的增删改查(CRUD)操作,这对于初学者理解Web应用程序的后端处理至关重要。 1. **Servlet基础知识** Servlet是Java Servlet API的核心组件,它是一个Java类,遵循...

    java web 简单的crud

    对于初学者,理解这个简单CRUD应用的结构和工作原理是学习Java Web开发的基础。通过分析源代码,你可以了解到如何将用户输入转换为数据库操作,以及如何将查询结果展示给用户。这种实践性学习有助于深入理解Web应用...

    JSP-CRUD.zip_crud源码_jsp crud

    JSP-CRUD 是一个针对初学者设计的项目,主要用于教授如何使用 JSP 技术实现数据库中的 CRUD(Create、Read、Update、Delete)操作。这个项目是用 myEclipse 开发工具构建的,可以直接运行,为学习者提供了一个实践的...

    java+servlet项目.zip

    这个项目对于初学者来说是一个很好的实践平台,因为它涵盖了Java Web开发的核心技术,包括Java Servlet、JSP以及数据库交互。 首先,Java Servlet是Java EE(企业版)的一部分,它提供了一种服务器端编程模型,用于...

    A一位资序员大牛给予Java初学者的学习路线建议

    标签“java”和“初学者”表明文章将以Java为基础,讨论适合初学者的学习方法和阶段。 从提供的部分内容中,可以提炼以下详细知识点: 1. Java基础学习: - 建议初学者首先通过网络教程或视频课程学习Java基础。 ...

    ssh_crud.rar_SSH CRUD

    这个SSH CRUD项目为初学者提供了一个很好的学习平台,可以了解和实践Java Web开发中的核心技术和最佳实践。对于有经验的开发者,它也是一个快速开发基础CRUD功能的模板,可以在其基础上进行扩展和定制。

    servlet实现的论坛极简代码

    这个项目旨在帮助初学者理解Servlet如何与数据库交互,以及在Java EE工作流程中的角色。 【描述】中提到,开发环境为IntelliJ IDEA 12.1.4或Eclipse,这两个都是流行的Java集成开发环境。虽然它们各有特点,但用于...

    简单的servlet例子新闻网站 全

    Servlet是Java Web开发中的一个重要组件,它用于...对于初学者来说,这是一个很好的起点,对于有一定经验的开发者,也可以从中学习到最佳实践和优化技巧。在实际操作中,建议结合源码逐步调试,加深对每个环节的理解。

    简单的实现分页查询功能,实现基础的增删改查功能(基于JSP但是不使用servlet控制器,使用初学者方法模拟控制器)

    在本项目中,我们不会使用Servlet作为控制器,而是采用一种初学者友好的方法模拟控制器功能。 1. **创建(Create)**:在JSP中创建新数据通常涉及一个表单,用户可以输入数据并提交。你可以使用`&lt;form&gt;`标签创建...

    employee-crud

    《员工CRUD操作详解——基于Servlet、JSP与JDBC》 在Web开发领域,"CRUD"(Create,Read,Update,Delete)是数据库操作的...对于初学者来说,这是一个很好的实战练习项目,有助于加深对Servlet、JSP和JDBC的理解。

    JSP+Servlet+JavaBean增删改查实例

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

Global site tag (gtag.js) - Google Analytics