JSP整合Servlet实现信息分页功能

本期博客主要实现JSP整合Servlet实现用户信息的分页功能,采用JDBC连接数据库,简单应用了BootStrap作为前端页面模板,具体细节如下所示。

Util层

DBUtil类

该层主要用于对JDBC连接Mysql数据库进行方法的封装,方便其他类进行调用,代码如下:

package cn.chen.web2.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class DBUtil {
   
	
		//声明连接的时候,需要用的内容:驱动地址  连接地址  用户名  密码
		private static final String DRIVER = "com.mysql.jdbc.Driver";
		private static final String NAME = "root";
		private static final String PWD = "123456";
		private static final String URL = "jdbc:mysql://127.0.0.1:3306/db_ordermeal?characterEncoding=utf-8";
		//声明连接对象   预编译对象(进行SQL操作时使用)  结果集对象(查询时使用)
		private static Connection con = null;
		private static PreparedStatement ps = null;
		private static ResultSet rs = null;
		//1.使用静态代码块加载驱动,驱动只需要加载一次
		static{
   
			try {
   
				Class.forName(DRIVER);
			} catch (ClassNotFoundException e) {
   
				e.printStackTrace();
			}
		}
		//2.获取数据库连接的方法,使用 protected进行修饰,其他包中,只有子类可以使用这些方法,保护了当前类的方法
		protected static void getConnection(){
   
			try {
   
				con = DriverManager.getConnection(URL, NAME, PWD);
			} catch (SQLException e) {
   
				e.printStackTrace();
			}
		}
		//3.关闭连接的方法,回收资源
		protected static void closeAll(){
   
			if(null!=rs){
   
				try {
   
					rs.close();
				} catch (SQLException e) {
   
					e.printStackTrace();
				}
			}
			if(null!=ps){
   
				try {
   
					ps.close();
				} catch (SQLException e) {
   
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			if(null!=con){
   
				try {
   
					con.close();
				} catch (SQLException e) {
   
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
		//4.开启事务的方法
		protected static void beginTransacation(){
   
			//获取连接
			getConnection();
			//对于mysql数据库而言,只是将自动提交功能关闭
			try {
   
				con.setAutoCommit(false);
			} catch (SQLException e) {
   
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		//5.提交事务
		protected static void commit(){
   
			try {
   
				con.commit();//提交
				con.setAutoCommit(true);//打开自动提交功能
			} catch (SQLException e) {
   
				// TODO Auto-generated catch block
				e.printStackTrace();
			}	
		}
		//6.回滚事务
		protected static void rollback(){
   
			try {
   
				con.rollback();
				con.setAutoCommit(true);//打开自动提交功能
			} catch (SQLException e) {
   
				// TODO Auto-generated catch block
				e.printStackTrace();
			}	
		}
		
		//7.公共的增,删,改的方法
		protected static int executeUpdate(String sql,Object[] obj){
   
			int count = 0;//用于统计  有多少条记录被操作了,最为返回值
			beginTransacation();//开启事务    包含了获取数据库连接及开启事务的功能
			try {
   
				ps = con.prepareStatement(sql);//将sql语句传递给预编译对象,让sql语句可以在预编译对象中进行重新组装
				/*
				 * 例如  :insert into student values (1,'刘',20,0,'2000-1-1','911')   数值会变化
				 * 我们会传入sql语句改为insert into student values (?,?,?,?,?,?)
				 * ?的值是从Object[]数组中取出来的进行组装
				 */
				//obj有内容进行sql语句拼装
				if(null!=obj){
   
					for(int i=0;i<obj.length;i++){
   
						ps.setObject(i+1, obj[i]);//将Object[]数组中  每个位置的内容  替换? 内容  
					}
				}
				//如果Object[]中没有内容,则认为sql文是完整的,可以直接使用 
				count = ps.executeUpdate();
				commit();//提交事务
			} catch (SQLException e) {
   
				// 如果操作失败,肯定会发生异常,这个时候进行回滚事务
				e.printStackTrace();
				System.out.println(e);
				rollback();//回滚事务
			}finally{
   //操作完成后,无论是否发生异常,都需要关闭资源进行回收
				closeAll();//调用关闭连接的方法
			}
			return count;
		}
		
		//8.公共的查询方法
		protected static ResultSet executeQuery(String sql,Object[] obj){
   
			beginTransacation();
			try {
   
				ps = con.prepareStatement(sql);
				//obj有内容,进行sql语句拼装
				if(null!=obj){
   
					for(int i=0;i<obj.length;i++){
   
						ps.setObject(i+1, obj[i]);//将Obje
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值