JDBC数据库应用开发
《J2EE企业级软件开发》教学课件:(2014-03)JDBC和MySQL数据库

DriverManager(java.sql.DriverManager):装载驱动程 序,管理应用程序与驱动程序之间的连接。 Driver(由驱动程序开发商提供):将应用程序的API 请求转换为特定的数据库请求。 Connection(java.sql.Connection):将应用程序连接到 特定的数据库。 Statement(java.sql.Statement):在一个给定的连接中 ,用于执行一个静态的数据库SQL语句。
数据库连接池使用方法2独立于web服务器的数据库连接池尽管现在大部分的应用服务器都提供了自己的数据库连接池方案但有些时候若我们的web应用是一个独立的应用程序并不是普通的webjavaee应用而且是单独运行的无须应用服务器的支持
Java EE企业级软件开发
JDBC与MySQL数据库
2014 洛阳师范学院 吕延庆
使用JDBC API访问数据库
(5)关闭相关连接 操作数据库完毕后,需要关闭相应连接以释放 资源,具体方法如下。
//关闭ResultSet实例rs rs.close(); //关闭Statement实例statement statement.close(); //关闭Connection实例con con.close();
数据库连接池简介
在实际应用开发中,如果JSP、Servlet等使用JDBC直 接访问数据库中的数据,每一次数据访问请求都必须 经历建立数据库连接、操作数据和关闭数据库连接等 步骤。
连接并打开数据库是一件既消耗资源又费时的工作。 如果频繁发生这种数据库操作,系统的性能必然会急剧下降 ,甚至会导致系统崩溃。 所谓数据库连接池,就是在一个虚拟的池中,预先创建好一 定数量的Connection对象等待客户端的连接,当有客户端连 接时,则分配一个空闲的Connection对象给客户端连接数据 库;当这个客户端请求结束时,则将Connection对象归还给 池中,用来等待下一个客户端的访问。
jdbc基本使用步骤_概述及解释说明

jdbc基本使用步骤概述及解释说明1. 引言1.1 概述在开发数据库应用程序时,我们经常需要与数据库进行交互。
Java Database Connectivity(JDBC)是Java平台提供的一种标准API,它允许我们通过Java 程序连接和操作各种类型的数据库。
JDBC提供了一组接口和类,使得开发者可以很方便地执行SQL语句、访问和更新数据库中的数据。
本文将介绍JDBC的基本使用步骤,并对每个步骤进行详细解释说明,旨在帮助读者快速入门并掌握JDBC编程技巧。
1.2 文章结构本文共分为五个部分,具体内容如下:第一部分是引言部分,在这部分中我们将对文章的整体内容进行概要介绍,并说明本文的目的和意义。
第二部分是JDBC基本使用步骤,包括连接数据库的准备工作、加载JDBC驱动程序以及建立数据库连接等。
第三部分是JDBC基本操作示例,我们将通过插入数据、查询数据和更新数据等示例来演示JDBC的基本操作。
第四部分是关于JDBC异常处理和事务管理的内容,我们将介绍异常处理机制、事务管理概念及其使用方法,并探讨数据库连接池在实际应用中的使用场景和优势。
最后一部分是结论部分,我们将总结文章的内容与意义,并进一步探讨JDBC在实际应用中的价值与局限性,展望未来JDBC的发展方向或相关趋势。
1.3 目的本文旨在帮助读者全面了解和掌握JDBC的基本使用步骤。
通过清晰地介绍每个步骤的具体操作和相关概念,读者可以学会如何连接数据库、执行SQL语句以及处理异常和事务等常见操作。
文章还将探讨JDBC在实际应用中的价值与局限性,并对未来JDBC的发展趋势进行展望,使读者能够更好地利用JDBC技术开发高效、稳定的数据库应用程序。
2. JDBC基本使用步骤:2.1 连接数据库的准备工作:在进行JDBC操作之前,需要确保以下几个方面的准备工作:- 确保已经安装了适当的数据库服务器,并且运行正常。
- 确认数据库服务器的连接地址、端口号以及数据库名称等信息。
基于JDBC的数据库技术及应用

务器联成网络。客户机上存放应用程序 , 而远程服务器上运行数 据引擎。客户 机应用 程序向数据库发出请求 , 而数据库又把数据 返回给客户机 。客 户机 / 服务 器结构是 一大进步 , 因为它把处理 工作从中央计算机卸载 到客户机上。 但是客户机 / 服务器模型具 有 以下的局 限性 : 缺乏 伸缩性 ; 须保 持数 据库 的连接 ; 必 缺乏代码 复用 性 ; 缺乏中间层处 理事物和安全性等 。 B (rw r evr S / Bo e Sre) / 模式是对 C 模式 的扩充 。 S / 这种模式下 , 客 户机不直 接与服务器 的应用 程序通讯 , 而是使用网络浏览器与服 务器 应用程序进行数据传递。 B 模式下开发的网络应用程序 在 / S 具有 C 无法 比拟 的优越性 , S / 如在 BS中 , 用浏览器作 为用户 / 采 与系 统交互 的界面 , 由于浏览 器支 持 T PI C/ P协议 , 解决 了异构系 统的连接 问题 ; B 模式 中, 限制访 问系统 的用户数 , 在 / S 不 因而具 有 良好 的开发性 ; 以及 浏览器界面统一 、 直观而易于使用等优点 。 基于 B 模式 的三层体 系中 , 两层是 一组 独立的 同类对象 f S / 前 每 个对象解决一个小 问题)它们可 以共 同解决一个庞大 的问题 ; , 三
太原 002 ) 304
JDBC实验报告

实验报告
学院计算机学院班级学号姓名
课程名称Java程序设计实验日期
实验名称数据库应用开发成绩
实验目的:深入理解JDBC数据库驱动程序的概念,掌握JDBC提供的访问数据库相关接口和类的应用,掌握使用JDBC的Java数据库应用程序开发的基本步骤和方法。
实验条件:使用JDK和Eclipse
实验目的
本实验要求学生使用JDBC提供的接口和类编写一个Java应用程序,实现对学生数据信息的查询、删除、插入、更新等操作。
学生数据库(student)在MySQL数据库服务器中创建。
1. 在MySQL中创建学生数据库student,其中一个学生信息表stuinfo结构如下:
图1 stuinfo表结构
2. 设计一个Java程序,界面如图2所示,实现以下功能:
(1)点击“全部检索”按钮,检索stuinfo表的所有记录,显示在上面的JTable组件中;
(2)输入查询学号,点击“查询”按钮,查询该学生信息显示在左边面板中,查询不到时弹出信息提示。
(3)左边面板中输入学生信息,点击“添加”按钮,将此学生信息插入stuinfo表中,弹出插入是否成功的提示框。
(4)点击“删除”按钮,依据上边学号值删除该学生记录,弹出删除是否成功的提示框。
(5)点击“更新”按钮,依据上边学号值更新该学生的其它信息,弹出更新是否成功的提示框。
实验结果
实验总结
每次对学生进行增删改查后,表要实时变化。
我在界面的代码中写了一个refresh函数,每当有有数据变化,它都会将当前表所在的JScrollPane移除,之后TableModel再从数据库中读取数据,重新建立一个表格,再将其添加到新建的JScrollPane中,放到界面中去。
jdbc教案

JDBC数据库编程及应用课程教案2. 课次为授课次序,填1、2、3……等。
3. 方法及手段如:举例讲解、多媒体讲解、模型讲解、实物讲解、挂图讲解、音像讲解等。
2. 课次为授课次序,填1、2、3……等。
3. 方法及手段如:举例讲解、多媒体讲解、模型讲解、实物讲解、挂图讲解、音像讲解等。
2. 课次为授课次序,填1、2、3……等。
3. 方法及手段如:举例讲解、多媒体讲解、模型讲解、实物讲解、挂图讲解、音像讲解等。
2. 课次为授课次序,填1、2、3……等。
3. 方法及手段如:举例讲解、多媒体讲解、模型讲解、实物讲解、挂图讲解、音像讲解等。
2. 课次为授课次序,填1、2、3……等。
3. 方法及手段如:举例讲解、多媒体讲解、模型讲解、实物讲解、挂图讲解、音像讲解等。
2. 课次为授课次序,填1、2、3……等。
3. 方法及手段如:举例讲解、多媒体讲解、模型讲解、实物讲解、挂图讲解、音像讲解等。
2. 课次为授课次序,填1、2、3……等。
3. 方法及手段如:举例讲解、多媒体讲解、模型讲解、实物讲解、挂图讲解、音像讲解等。
2. 课次为授课次序,填1、2、3……等。
3. 方法及手段如:举例讲解、多媒体讲解、模型讲解、实物讲解、挂图讲解、音像讲解等。
2. 课次为授课次序,填1、2、3……等。
3. 方法及手段如:举例讲解、多媒体讲解、模型讲解、实物讲解、挂图讲解、音像讲解等。
2. 课次为授课次序,填1、2、3……等。
3. 方法及手段如:举例讲解、多媒体讲解、模型讲解、实物讲解、挂图讲解、音像讲解等。
2. 课次为授课次序,填1、2、3……等。
3. 方法及手段如:举例讲解、多媒体讲解、模型讲解、实物讲解、挂图讲解、音像讲解等。
2. 课次为授课次序,填1、2、3……等。
3. 方法及手段如:举例讲解、多媒体讲解、模型讲解、实物讲解、挂图讲解、音像讲解等。
达梦接口编程实例——JDBC 篇

DM JDBC 是 DM 数据库的 JDBC 驱动程序,能够支持基本 SQL 功能的通用低层应用程序编 程接口,支持一般的 SQL 数据库访问。DM JDBC 驱动程序属于第 4 类纯 Java 驱动程序,即 属于 Native-protocol pure Java 驱动程序,它直接将 JDBC 请求转换成 DM 数据库协议所能 接受的请求,并将数据库返回的结果转换为用户能够识别的形式发送给用户。
Class.forName(jdbcString);}
catch (ClassNotFoundException e) {throw new SQLException("Load JDBC Driver Error : " +
e.getMessage());}
catch(Exception ex) {throw new SQLException("Load JDBC Driver Error : " + ex.getMessage());}
然后我们介绍下 JDBC 是如何来完成对数据库的访问? JDBC 有一个非常独特的动态连接结构,它使得系统模块化。使用 JDBC 来完成对数据 库的访问包括以下四个主要组件:Java 的应用程序、JDBC 驱动器管理器、驱动器和数据源。 其中,驱动程序管理器为应用程序提供了统一的调用接口,驱动程序管理器使用与特定数据 库相匹配的驱动程序来访问该数据库,实现了应用程序独立于特定数据库。程序员编程时, 可以不关心它所要操作的数据库是哪个厂家的产品,从而提高了软件的通用性。只要系统上 安装了正确的驱动器组,JDBC 应用程序就可以访问其相关的数据库。
1.启动 DM4服务器。可以点击:开始-所有程序-DMDBMS-达梦服务器,或直 接启动:C:\DMDBMS\dm\dmServer\ dmServer.exe(默认路径);
简述jdbc实现步骤

简述JDBC实现步骤
JDBC(Java Database Connectivity)是Java语言用于连接和操作数据库的标准API。
下面是简要的JDBC实现步骤:
1. 加载数据库驱动程序:首先,需要加载适当的数据库驱动程序,以便能够与数据库建立连接。
可以使用`Class.forName()`方法加载驱动程序类。
2. 建立数据库连接:使用`DriverManager.getConnection()`方法创建与数据库的连接。
需要提供数据库的URL、用户名和密码等连接参数。
3. 创建Statement对象:使用连接对象的`createStatement()`方法创建一个Statement对象。
Statement对象用于执行SQL语句并与数据库进行交互。
4. 执行SQL语句:使用Statement对象的`executeQuery()`方法执行查询语句,或者使用`executeUpdate()`方法执行更新语句(如插入、更新、删除等)。
执行查询语句后,可以使用`ResultSet`对象获取查询结果。
5. 处理查询结果:如果执行的是查询语句,可以使用ResultSet对象
的方法(如`next()`、`getString()`等)遍历和获取查询结果。
6. 关闭连接和资源:在完成数据库操作后,需要关闭ResultSet、Statement和Connection等资源,以释放数据库连接和其他资源。
这是JDBC的基本实现步骤。
当然,实际应用中可能还涉及事务管理、预编译语句、连接池等更复杂的操作。
此外,还可以使用JDBC的高级特性,如批处理、存储过程、元数据查询等。
Java数据库连接(JDBC)实现与数据库的交互

Java数据库连接(JDBC)实现与数据库的交互Java数据库连接(JDBC)是Java语言用于与关系型数据库进行交互的标准API。
通过JDBC,我们可以实现与数据库的连接、查询、更新等操作,使得应用程序可以有效地与数据库进行数据交流和处理。
本文将介绍JDBC的基本概念、连接数据库的步骤、执行SQL语句的方法以及异常处理等相关内容。
一、JDBC的概念JDBC是Java语言中用于与数据库进行交互的API。
它提供了一组类和接口,用于连接数据库、执行SQL语句、访问数据库结果集等操作。
JDBC允许开发人员使用Java编写与数据库交互的代码,从而实现数据的存储、查询和更新。
二、连接数据库要使用JDBC与数据库进行交互,首先需要建立与数据库的连接。
连接数据库的步骤如下:1. 加载数据库驱动:根据不同的数据库,需要加载相应的驱动程序。
如MySQL数据库可以使用com.mysql.jdbc.Driver类作为驱动程序。
2. 指定数据库连接URL:URL是用于指定数据库连接位置和参数的字符串。
不同数据库的URL格式可能会有所不同。
3. 建立数据库连接:使用DriverManager类的getConnection()方法,传入数据库连接URL、用户名和密码等参数,建立与数据库的连接。
三、执行SQL语句连接数据库成功后,我们可以使用Statement或PreparedStatement接口的实例执行SQL语句。
其中,Statement接口适用于静态SQL语句,而PreparedStatement接口适用于动态SQL语句。
1. 执行查询:对于查询操作,可以使用Statement或PreparedStatement的executeQuery()方法执行SQL查询语句。
结果将以ResultSet对象的形式返回,我们可以通过ResultSet对象获取查询结果。
2. 执行更新:对于插入、更新和删除等操作,可以使用Statement或PreparedStatement的executeUpdate()方法执行SQL更新语句。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JDBC数据库应用开发JDBC技术原理JDBC是Sun公司提出的Java API中的一部分,其含义是用Java语言来访问数据库,是java程序访问数据库的标准接口。
在使用JDBC访问不同的数据库时,需要加载数据库的驱动程序,这些驱动程序由数据库厂商提供。
下面给出JDBC连接各种主流数据库的连接方式:1、连接Oracle 8/8i/9i/10g/11g(thin模式)[html]view plain copy1.Class.forName("oracle.JDBC.driver.OracleDriver").newInstance();2.String url="JDBC:oracle:thin:@localhost:1521:orcl" //orcl为Oracle数据库的SID3.String user="test";4.String password="test";5.Connection con=DriverManager.getConnection(url,user,password);2、连接DB2数据库[html]view plain copy1.Class.forName("com.ibm.db2.jcc.DB2Driver");2.String url="JDBC:db2://localhost:5000/testDb";3.String user="test"; String password="test";4.Connection con=DriverManager.getConnection(url,user,password);3、连接MySQL数据库[html]view plain copy1.Class.forName("com.mysql.jdbc.Driver");2.String url="JDBC:mysql://localhost:8080/testDB";3.String user="test"; String password="test";4.Connection con=DriverManager.getConnection(url,user,password);4、连接SQL Server2000数据库[html]view plain copy1.Class.forName("com.microsoft.JDBC.sqlserver.SQLServerDriver");2.String url="JDBC:microsoft:sqlserver://localhost:1433;DatabaseName=testDb";3.String user="test"; String password="test";4.Connection con=DriverManager.getConnection(url,user,password);5、连接PostgreSQL数据库[html]view plain copy1.Class.forName("org.postgresql.Driver");2.String url="JDBC:postgresql://localhost/testDb";3.String user="test"; String password="test";4.Connection con=DriverManager.getConnection(url,user,password);6、连接Access数据库[html]view plain copy1.Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");2.String url="JDBC:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="+application.getRealPath("/Data/testDb/mdb");3.Connection conn=DriverManager.getConnection(url,"","");7、连接Sybase数据库[html]view plain copy1.Class.forName("com.sybase.JDBC.SybDriver");2.String url="JDBC:sybase:Tds:localhost:5007/testDb";3.Properties pro=System.getProperties();4.pro.put("user","userId");5.pro.put("password","user_password");6.Connection con=DriverManager.getConnection(url,pro);8、连接informix数据库[html]view plain copy1.Class.forName("rmix.JDBC.ifxDriver");2.String url="JDBC:informix-sqli:localhost:1533/testDb:INFORMIXSERVER=myserver"user=testUser;password=testpassword"; Connection con=DriverManager.getConne ction(url);JDBC连接数据库的过程很简单,以连接MySQL数据库为例,具体步骤如下:(1)加载MySQL数据库连接的驱动程序。
可以到MySQL的官网上下载该驱动程序jar 包,然后把jar包放到工程项目的WEB-INF/lib目录下。
加载数据库驱动程序使用的是Class.forName()方法,调用此方法会将制定的类加载到JVM中,其关键代码如下:[html]view plain copy1.Class.forName("com.mysql.jdbc.Driver")(2) 设置访问数据库的用户名、密码及连接URL。
不同的数据库其连接URL有所不同,但基本格式都是“JDBC协议+数据库的IP地址+数据库端口号+数据库名”。
关键代码如下:[html]view plain copy1.String user = "root";2.String password = "root";3.String url = "jdbc:mysql://localhost:3306/database";(3)通过JDBC API的DriverManager类的getConnection()方法来创建与数据库之间的连接,getConnection()方法需要接受的参数有URL、用户名和密码,关键代码如下:[html]view plain copy1.Connection conn = DriverManager.getConnction(url,user,password);(4)建立连接之后,使用该连接对象创建用户操作SQL语句的PreparedStatement对象,使用的是prepareStatement()方法,关键代码如下:[html]view plain copy1.PreparedStatement ps = conn.prepareStatement(sql);(5)关闭数据库连接,释放系统资源,代码如下:[html]view plain copy1.conn.close();下面给出一个JDBC连接MySQL数据库的完整代码示例,这个示例采用了MVC设计模式,单例模式。
JSP作为表现层,Servlet是业务控制层,Dao是操作实体类的持久层,详细代码如下:User.java ---- 用户实体类[html]view plain copy1.package com.kj.test;2.3.public class User {4.5. private Long id;6. /** 姓名 */7. private String name;8. /** 性别 */9. private String sex;10. /** 年龄 */11. private String age;12.13.14. public Long getId() {15. return id;16. }17.18. public void setId(Long id) {19.this.id = id;20. }21.22. public String getName() {23. return name;24. }25.26. public void setName(String name) { = name;28. }29.30. public String getSex() {31. return sex;32. }33.34. public void setSex(String sex) {35.this.sex = sex;36. }37.38. public String getAge() {39. return age;40. }41.42. public void setAge(String age) {43.this.age = age;44. }45.46.}DBConn.java ---- MySQL数据库连接类[html]view plain copy1.package com.kj.test;2.3.import java.sql.Connection;4.import java.sql.DriverManager;5.6.public class DBConn {7.8. /** 加载连接 */9. private static Connection conn = null;10. /** MySQL数据库驱动名 */11. private static final String DRIVERNAME = "com.mysql.jdbc.Driver";12. /** 用户 */13. private static final String USERNAME = "root";14. /** 密码 */15. private static final String PASSWORD = "root";16. /** 连接URL */17. private static final String URL = "jdbc:mysql://localhost:3306/test";18.19. public static Connection getConn() {20. try {21. Class.forName(DRIVERNAME);22.conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);23. } catch (Exception e) {24. e.printStackTrace();25. }26. return conn;27. }28.29. public static void main(String[] args) {30.31. //测试是否已经连接成功32. Connection conn = DBConn.getConn();33. System.out.println("conn:"+conn);34.35. }36.37.}UserDao.java ---- 持久化User模型到数据库[html]view plain copy1.package com.kj.test;2.3.import java.sql.Connection;4.import java.sql.PreparedStatement;5.import java.sql.ResultSet;6.import java.util.ArrayList;7.import java.util.List;8.9.public class UserDao {10.11. private static UserDao userDao = null;12.13. /***14. * 单例模式获取userDao15. * @return16. */17. public static UserDao getInstance() {18. if (userDao == null) {erDao = new UserDao();20. }21. return userDao;22. }23.24. /**25. * 保存一个user对象到数据库26. * @param user27. * @return28. */29. public boolean saveUser(User user) {30. boolean result = false;31. Connection conn = null;32. PreparedStatement ps = null;33. try {34.conn = DBConn.getConn();35. String sql = "insert into user(name,sex,age) values(?,?,?)";36.ps = conn.prepareStatement(sql);37. ps.setString(1, user.getName());38. ps.setString(2, user.getSex());39. ps.setString(3, user.getAge());40. int n = ps.executeUpdate();41. if (n == 1) {42.result = true; //保存成功43. }44. } catch (Exception e) {45. e.printStackTrace();46. } finally {47. try {48. ps.close();49. conn.close();50. } catch (Exception e) {51. e.printStackTrace();52. }53. }54. return result;55. }56.57. /**58. * 从数据库中加载表数据放入对象列表59. * @return60. */61. public List<User> getUserList() {62. List<User>userList = new ArrayList<User>();63. Connection conn = null;64. PreparedStatement ps = null;65. ResultSet rs = null;66. try {67.conn = DBConn.getConn();68. String sql = "select * from user";69.ps = conn.prepareStatement(sql);70.rs = ps.executeQuery();71. while (rs.next()) {72. User user = new User();73. user.setId(rs.getLong("id"));74. user.setName(rs.getString("name"));75. user.setSex(rs.getString("sex"));76. user.setAge(rs.getString("age"));77. userList.add(user);78. }79. } catch (Exception e) {80. e.printStackTrace();81. } finally {82. try {83. rs.close();84. ps.close();85. conn.close();86. } catch (Exception e) {87. e.printStackTrace();88. }89. }90.91. return userList;92. }93.94. /**95. * 修改user对象信息并持久化到数据库96. * @param args97. */98. public boolean updateUser(User user) {99. boolean result = false;100. Connection conn = null;101. PreparedStatement ps = null;102. try {103.conn = DBConn.getConn();104. String sql = "update user set age = ?, sex = ? where name = ?"; 105.ps = conn.prepareStatement(sql);106. ps.setString(1, user.getAge());107. ps.setString(2, user.getSex());108. ps.setString(3, user.getName());109. int n = ps.executeUpdate();110. if (n == 1) {111.result = true; //更新成功112. }113. } catch (Exception e) {114. e.printStackTrace();115. } finally {116. try {117. ps.close();118. conn.close();119. } catch (Exception e) {120. e.printStackTrace();121. }122. }123. return result;124. }125.126. /**127. * 删除一条user对象对应的数据库记录128. * @param args129. */130. public boolean deleteUser(User user) {131. boolean result = false;132. Connection conn = null;133. PreparedStatement ps = null;134. try {135.conn = DBConn.getConn();136. String sql = "delete from user where name = ?"; 137.ps = conn.prepareStatement(sql);138. ps.setString(1, user.getName());139. int n = ps.executeUpdate();140. if (n == 1) {141.result = true; //删除成功142. }143. } catch (Exception e) {144. e.printStackTrace();145. } finally {146. try {147. ps.close();148. conn.close();149. } catch (Exception e) {150. e.printStackTrace();151. }152. }153. return result;154. }155.156. public static void main(String[] args) {157. UserDao ud = UserDao.getInstance();158. User user = new User();159. user.setAge("1岁");160. user.setSex("男");161. user.setName("测试");162. ud.saveUser(user);163. ud.deleteUser(user);164. }165.166.}MyFilter.java ---- 过滤JSP页面传递过来的中文字符[html]view plain copy1.package com.kj.test;2.3.import java.io.IOException;4.import javax.servlet.Filter;5.import javax.servlet.FilterChain;6.import javax.servlet.FilterConfig;7.import javax.servlet.ServletException;8.import javax.servlet.ServletRequest;9.import javax.servlet.ServletResponse;10.11.public class MyFilter implements Filter {12.13. private String encode;14.15. public MyFilter() {16.17. }18.19. public void destroy() {20.21. }22.23. public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {24.25. if (encode != null) {26. request.setCharacterEncoding(encode);27. response.setContentType("text/html;charset="+encode);28. }29. chain.doFilter(request, response);30.31. }32.33. public void init(FilterConfig fConfig) throws ServletException {34.encode = fConfig.getInitParameter("encode");35. }36.37.}AddUserServlet.java ---- 添加用户Servlet[html]view plain copy1.package com.kj.test;2.import java.io.IOException;3.import javax.servlet.RequestDispatcher;4.import javax.servlet.ServletException;5.import javax.servlet.http.HttpServlet;6.import javax.servlet.http.HttpServletRequest;7.import javax.servlet.http.HttpServletResponse;8.9.public class AddUserServlet extends HttpServlet {10. private static final long serialVersionUID = 1L;11.12. public AddUserServlet() {13. super();14. }15.16. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {17. String name = request.getParameter("name");18. String sex = request.getParameter("sex");19. String age = request.getParameter("age");20. User user = new User();21. user.setAge(age);22. user.setName(name);23. user.setSex(sex);24. UserDao userDao = UserDao.getInstance();25. boolean result = userDao.saveUser(user);26. String url;27. if (result) {28.url = "/showUser";29. } else {30.url = "error.jsp";31. }32. RequestDispatcher dispathcer = request.getRequestDispatcher(url);33. dispathcer.forward(request, response);34. }35.}ShowUserServlet.java ---- 显示用户列表Servlet[html]view plain copy1.package com.kj.test;2.import java.io.IOException;3.import java.util.List;4.5.import javax.servlet.RequestDispatcher;6.import javax.servlet.ServletException;7.import javax.servlet.http.HttpServlet;8.import javax.servlet.http.HttpServletRequest;9.import javax.servlet.http.HttpServletResponse;10.11.public class ShowUserServlet extends HttpServlet {12.13. private static final long serialVersionUID = 1L;14.15. public ShowUserServlet() {16. super();17. }18.19. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {20.21. UserDao userDao = UserDao.getInstance();22. List<User>userList = userDao.getUserList();23. request.setAttribute("users", userList);24. String url = "manageUser.jsp";25. RequestDispatcher dispathcer = request.getRequestDispatcher(url);26. dispathcer.forward(request, response);27.28. }29.}web.xml ---- 配置Servlet和过滤器Filter[html]view plain copy1.<?xml version="1.0"encoding="UTF-8"?>2.<web-app xmlns:xsi="http://www.w/2001/XMLSchema-instance"xmlns="http:///xml/ns/javaee"3.xsi:schemaLocation="/xml/ns/javaee /xml/ns/javaee/web-app_3_0.xsd"id="WebApp_ID"version="3.0">4.<display-name>servletTest</display-name>5.<!-- servlet配置示例 -->6.<servlet>7.<!-- 增加用户Servlet -->8.<servlet-name>AddUserServlet</servlet-name>9.<servlet-class>com.kj.test.AddUserServlet</servlet-class>10.</servlet>11.<servlet-mapping>12.<servlet-name>AddUserServlet</servlet-name>13.<url-pattern>/addUser</url-pattern>14.</servlet-mapping>15.<servlet>16.<!-- 显示用户Servlet -->17.<servlet-name>ShowUserServlet</servlet-name>18.<servlet-class>com.kj.test.ShowUserServlet</servlet-class>19.</servlet>20.<servlet-mapping>21.<servlet-name>ShowUserServlet</servlet-name>22.<url-pattern>/showUser</url-pattern>23.</servlet-mapping>24.<!-- filter配置示例 -->25.<filter>26.<filter-name>MyFilter</filter-name>27.<filter-class>com.kj.test.MyFilter</filter-class>28.<init-param>29.<param-name>encode</param-name>30.<param-value>UTF-8</param-value>31.</init-param>32.</filter>33.<filter-mapping>34.<filter-name>MyFilter</filter-name>35.<url-pattern>/*</url-pattern>36.</filter-mapping>37.<welcome-file-list>38.<welcome-file>index.html</welcome-file>39.<welcome-file>index.htm</welcome-file>40.<welcome-file>index.jsp</welcome-file>41.<welcome-file>default.html</welcome-file>42.<welcome-file>default.htm</welcome-file>43.<welcome-file>default.jsp</welcome-file>44.</welcome-file-list>45.</web-app>index.jsp ---- 添加用户入口页面[html]view plain copy1.<%@ page language="java"contentType="text/html; charset=UTF-8"2.pageEncoding="UTF-8"%>3.<!DOCTYPE html PUBLIC "-//W3C//DTD HTML4.01 Transitional//EN" "http://www.w/TR/html4/loose.dtd">4.<html>5.<head>6.<meta http-equiv="Content-Type"content="text/html; charset=UTF-8">7.<title>添加用户入口</title>8.</head>9.<body>10.<form action="addUser"method="post">11.<div style="margin-top:100px;text-align:center;margin-bottom:10px;font-size:24px;font-weight:bolder">添加用户页面</div>12.<table align="center"cellpadding="0"cellspacing="0">13.<tr>14.<td style="text-align:right">姓名:</td>15.<td style="text-align:left"><input type="text"name="name"value=""/></td>16.</tr>17.<tr>18.<td style="text-align:right">性别:</td>19.<td style="text-align:left"><input type="radio"name="sex"value="男"/>男<input type="radio"name="sex"value="女"/>女</td>20.</tr>21.<tr>22.<td style="text-align:right">年龄:</td>23.<td style="text-align:left"><input type="text"name="age"value=""/></td>24.</tr>25.</table>26.<div style="margin-top:10px;text-align:center;"><input type="submit"value="增加"/></div>27.</form>28.</body>29.</html>manageUser.jsp ---- 用户管理列表页面[html]view plain copy1.<%@page import="er"%>2.<%@page import="java.util.List"%>3.<%@ page language="java"contentType="text/html; charset=UTF-8"4.pageEncoding="UTF-8"%>5.<%@ taglib prefix="c"uri="/jsp/jstl/core"%>6.<%@ taglib prefix="fmt"uri="/jsp/jstl/fmt"%>7.<%@ taglib prefix="fn"uri="/jsp/jstl/functions" %>8.<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w/TR/html4/loose.dtd">9.<html>10.<head>11.<meta http-equiv="Content-Type"content="text/html; charset=UTF-8">12.<title>管理用户页面</title>13.</head>14.<body>15.<div style="margin-top:100px;text-align:center;margin-bottom:10px;font-size:24px;font-weight:bolder">管理用户页面</div>16.<table align="center"border="1"cellpadding="0"cellspacing="0">17.<c:set var="userList"value="${ers }"/>18.<c:if test="${not empty userList }">19.<tr>20.<th style="text-align:center;width:100px;">主键ID</th>21.<th style="text-align:center;width:100px;">姓名</th>22.<th style="text-align:center;width:100px;">性别</th>23.<th style="text-align:center;width:100px;">年龄</th>24.</tr>25.<c:forEach items="${userList }"var="user">26.<tr>27.<td style="text-align:center;width:100px;"><c:out value="${user.id }"/></td>28.<td style="text-align:center;width:100px;"><c:out value="${ }"/></td>29.<td style="text-align:center;width:100px;"><c:out value="${user.sex }"/></td>30.<td style="text-align:center;width:100px;"><c:out value="${user.age }"/></td>31.</tr>32.</c:forEach>33.</c:if>34.<c:if test="${empty userList }">35.<div style="margin-top:20px;text-align:center;margin-bottom:10px;font-size:18px;font-weight:bolder;color:red">对不起,当前还没有用户记录,请先返回添加页面进行添加。