收藏 分销(赏)

实验三DBCP数据库连接池配置的应用.doc

上传人:仙人****88 文档编号:12026238 上传时间:2025-08-29 格式:DOC 页数:13 大小:733KB 下载积分:10 金币
下载 相关 举报
实验三DBCP数据库连接池配置的应用.doc_第1页
第1页 / 共13页
实验三DBCP数据库连接池配置的应用.doc_第2页
第2页 / 共13页


点击查看更多>>
资源描述
实验三DBCP数据库连接池配置的应用 实验内容和要求: 总所周知建立数据库连接是一个非常耗时耗资源的行为,因此现代的Web中间件,无论是开源的Tomcat、Jboss还是商业的websphere、weblogic都提供了数据库连接池功能,可以毫不夸张的说,数据库连接池性能的好坏,不同厂商对连接池有着不同的实现。本实验要求掌握数据库连接池的配置和使用。 项目运行如下图: 实验步骤如下: 1.准备需要访问的数据库 n 下载并安装MySQL5.0 n Copy MySQL5.0驱动mysql-connector-java-5.0.8-bin.jar到%TOMCAT%\lib文件夹下 n 创建数据库及表: 数据库的设计如下表: 数据库采用MySQL5.0,数据库名:rj12,表名:usertab(用户表) 数据库表usertab中数据如下: 2. 配置tomcat,将apache-tomcat-6.0.20.zip压缩文件解压缩,在MyEclipse中配置tomcat6,如图所示: 在windows-〉Preferences-〉MyEclipse-〉Servers-〉Tomcat-〉Tomcat 6.x 配置好以后在Server面板中出现: 3. 驱动mysql-connector-java-5.0.8-bin.jar拷贝到%TOMCAT%\lib文件夹下,在%TOMCAT%\config文件夹下,找到server.xml文件,修改此文件,在<GlobalNamingResources>和</ GlobalNamingResources>之间添加如下代码: <Resource name="jdbc/mysqls" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="root" password="root" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/rj12"/> 4. 在%TOMCAT%\conf文件夹下编辑web.xml文件,在<web-app>和</web-app >之间添加如下代码: <resource-ref> <res-ref-name>jdbc/mysqls</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> 5. 在Tomcat安装目录下的\conf\Catalina\localhost文件夹下,找到要配置的Web应用的xml文件,例如web应用为empproject,既是empproject.xml 在<Context>和</ Context >之间添加如下代码: <Context antiResourceLocking="false" privileged="true" > <ResourceLink name="jdbc/mysqls" global="jdbc/mysqls" type="javax.sql.DataSource"/> </Context> 若没有这句,就可能出现 “Cannot create JDBC driver of class for connect URL ‘null’ “的错误. 6. 开发过程如下: Step1:在com.pojo包中创建JavaBean: User.java,内容如下: package com.pojo; public class User { private int id; private String username; private String password; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } } Step2:在com.util包中创建访问数据库的工具类—JdbcUti.java,内容如下: package com.util; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.naming.Context; import javax.naming.InitialContext; import javax.sql.DataSource; public class JdbcUtil { private static final String DSNAME = "java:comp/env/jdbc/mysqls"; private static JdbcUtil instance = new JdbcUtil(); private JdbcUtil() { } public static JdbcUtil getInstance() { return instance; } private static Context ctx=null; private static DataSource ds=null; // 加载驱动 static { try { //Class.forName(DIVER); ctx=new InitialContext(); ds=(DataSource)ctx.lookup(DSNAME); } catch (Exception e) { // TODO Auto-generated catch block // e.printStackTrace(); System.out.println("数据库驱动加载失败!"); } } // 创建连接 public Connection getConn() { Connection conn = null; try { conn=ds.getConnection(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); System.out.println("连接数据库失败!"); } return conn; } // 关闭资源 public void free(Connection conn, Statement stmt, ResultSet rs) { try { if (rs != null) { rs.close(); } else if (stmt != null) { stmt.close(); } else if (conn != null) { conn.close(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } Step3:采用DAO设计模式 在com.dao包下创建UserDao接口,代码如下: package com.dao; import java.util.List; import com.pojo.User; public interface UserDao { //查询全部信息 List<User> findAll(); //登录 User findOne(String username,String password); //通过Id查一个数据 User findOne(int id); //注册 int insertOne(User user); } 在com.dao.impl包下创建UserDao接口的实现类UserDaoImpl.java,代码如下: package com.dao.impl; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; import com.dao.UserDao; import com.pojo.User; import com.util.JdbcUtil; public class UserDaoImpl implements UserDao{ public List<User> findAll() { Connection conn=JdbcUtil.getInstance().getConn(); String sql="select * from usertab"; List<User> list=new ArrayList<User>(); Statement stmt=null; ResultSet rs=null; try { stmt=conn.createStatement(); rs=stmt.executeQuery(sql); while(rs.next()){ User user=new User(); user.setId(rs.getInt("id")); user.setUsername(rs.getString("username")); user.setPassword(rs.getString("password")); list.add(user); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ JdbcUtil.getInstance().free(conn, stmt, rs); } return list; } //登录 public User findOne(String username, String password) { Connection conn=JdbcUtil.getInstance().getConn(); String sql="select * from usertab where username=? and password=?"; PreparedStatement pstmt=null; ResultSet rs=null; User user=null; try { pstmt=conn.prepareStatement(sql); pstmt.setString(1, username); pstmt.setString(2, password); rs=pstmt.executeQuery(); if(rs.next()){ user=new User(); user.setId(rs.getInt("id")); user.setUsername(rs.getString("username")); user.setPassword(rs.getString("password")); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ JdbcUtil.getInstance().free(conn, pstmt, rs); } return user; } public User findOne(int id) { // TODO Auto-generated method stub return null; } public int insertOne(User user) { // TODO Auto-generated method stub return 0; } } Step4:根据MVC设计模式,在com.service包下创建UserService.java 接口,代码如下: package com.service; import java.util.List; import com.pojo.User; public interface UserService { List<User> findAll(); } 在com.service.impl包下创建实现了UserService接口的实现类UserServiceImpl.java,代码如下: package com.service.impl; import java.util.List; import com.dao.UserDao; import com.dao.impl.UserDaoImpl; import com.pojo.User; import com.service.UserService; public class UserServiceImpl implements UserService{ private UserDao ud=new UserDaoImpl(); public List<User> findAll() { // TODO Auto-generated method stub return ud.findAll(); } } Step5:修改在WebRoot下的index.jsp页面。代码如下: <body> <a href="UserServlet?flag=1">查看所有用户信息</a> </body> 其中flag是在UserServlet中接收的一个标志参数,flag=1时所实现的功能是到数据库中查询全部信息。 Step6:在com.servlet包下创建一个Servlet,UserServlet.java代码如下: package servlet; import java.io.IOException; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.pojo.User; import com.service.UserService; import com.service.impl.UserServiceImpl; public class UserServlet extends HttpServlet { private UserService us=new UserServiceImpl(); public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); String flag=request.getParameter("flag"); int select=0; if(flag!=null){ select=Integer.parseInt(flag); } switch (select) { case 1: findAll(request,response); break; default: break; } } //查询全部用户信息 public void findAll(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { List<User> list=us.findAll(); request.setAttribute("list", list); request.getRequestDispatcher("list.jsp").forward(request, response); } } 注意:在servlet中只能调用service层中的方法,遵循MVC设计原则。 Step6:在WebRoot下增加list.jsp页面,显示从数据库中查到的所有数据。代码如下: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@taglib prefix="c" uri=" <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'list.jsp' starting page</title> </head> <body> 显示用户信息 <br> <table border="1"> <tr> <td> 用户ID </td> <td> 用户名 </td> <td> 用户密码 </td> </tr> <c:forEach items="${requestScope.list}" var="u"> <tr> <td> ${u.id } </td> <td> ${u.username} </td> <td> ${u.password} </td> </tr> </c:forEach> </table> </body> </html> 总结:本实验要求对MVC设计模式的各个层深刻理解,要求会写连接数据库的工具类JdbcUtil类。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服