JDBC----c3p0



C3P0
Dbcp 做连接池 jdbctmplatce

JDBC----c3p0_第1张图片

spring 和 hibernate 对c3p0进行支持。

新建web项目 C3p0Test
使用c3p0的连接池,导入jar包


查看文档        

JDBC----c3p0_第2张图片

通用Jdbcutils.java 工具

JDBC----c3p0_第3张图片


在src下面创建 c3p0-config.xml



	
	
		
		com.mysql.jdbc.Driver
		jdbc:mysql:///day03
		root
		root
	 

测试:

JDBC----c3p0_第4张图片

测试结果

JDBC----c3p0_第5张图片


登录——注册
登录
准备工作:
1、数据库;
2、数据表用户表user

create table user(
	id int primary key auto_increment,
	username varchar(30),
	password varchar(20),
	realname varchar(20),
	hobbys varchar(60),
	sex varchar(10),
	age int
);
insert into user(username,password,realname) values('daqiao','123456','大乔');

新创建web项目
3、把mysql的驱动包导入到工程中
4、使用c3p0的连接池,导入jar包

JDBC----c3p0_第6张图片


5、新建一个user类。
Domain javabean pojo
必须是私有,提供getter setter方法

JDBC----c3p0_第7张图片


创建一个jdbc工具类。

在src下创建c3p0-config.xml


JDBC----c3p0_第8张图片


jdbcutils工具类:
连接池:
JDBC----c3p0_第9张图片

获取链接:


JDBC----c3p0_第10张图片

释放资源:


JDBC----c3p0_第11张图片



dao层
定义dao接口

JDBC----c3p0_第12张图片


定义dao接口的实现


@Override
	public User queryUserByUsernameAndPassword(User user) {
		/*
		 *不要倒错包, 下面的三个对象 java.sql 
		 */
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		
//		1、获取链接
		try {
			conn = JDBCUtil.getConnection();
//			问号表示占位符,需要使用真的值,去替代
			String sql = " select * from user where username=? and password=? ";
	//		2、获取statment对象
			pstmt = conn.prepareStatement(sql);
			//第一个参数,问号的顺序,第二个参数,要替换的值
			pstmt.setString(1, user.getUsername());
			pstmt.setString(2, user.getPassword());
	//		3、执行sql --- 当前的数据库username,password同时进行使用的时候,查询结果只有两种可能要么1个,要么没有
			rs = pstmt.executeQuery();
	//		4、遍历结果姐
			if(rs.next()){
//				表示查询到了结果
//				从rs中取出数据,并且封装到user中
				User resUser = new User();
//				取出用户名,并且把用户名放到User对象中
				resUser.setUsername(rs.getString("username"));
//				取出密码,把密码放入到user中
				resUser.setPassword(rs.getString("password"));
//				取出真实姓名,并且放入到user总
				resUser.setRealname(rs.getString("realname"));
				
//				把这个user返回
				return resUser;
			}else{
//				没有查询到结果
				return null;
			}
	//		5、释放资源
			
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			JDBCUtil.release(conn, pstmt, rs);
		}
		return null;
	}

servcie层
接口定义

JDBC----c3p0_第13张图片


类实现

JDBC----c3p0_第14张图片


web层
页面
JDBC----c3p0_第15张图片


servlet

/**
	 * 处理post请求
	 */
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		response.setContentType("text/html;charset=utf-8");
		
//		1、获取用户提交的内容
//		1、1获取用户名
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		
//		2、简单验证用户名和密码是否输入
		//如果用户名是null,或者username是空字符,都表示没有输入用户名
		if(username == null || "".equals(username)){
//			输出内容,请出入用户名
			response.getWriter().println("请输入用户名");
			return ;
		}
		if(password == null || "".equals(password)){
			response.getWriter().println("请输入密码");
			return ;
		}
		
//		3、把输入的信息,封装user
		User user = new User();
		user.setUsername(username);
		user.setPassword(password);
		
//		4、调用servcie方法,进行登录的验证
		IUserService userService = new UserServiceImpl();
		User resUser = userService.login(user);
		
//		如果resUser是null 表示登录失败,否则登录成功
		if(resUser == null ){
			response.getWriter().println("用户名或者密码错误");
		}else{	//欢迎大乔登录
			response.getWriter().println("欢迎"+resUser.getRealname()+"登录");
		}
	}


注册

注册其实就是添加,insert

1.注册的页面

2.Servlet接受用户发送过来的信息,对传来的参数据进行封装

3.对这个信息进行判断(用户可用,用户名已注册)

4.调用service

5.调用 dao

6.Dao层jdbc去数据库操作



BeanUtils的使用

BeanUtils工具类介绍

在页面上的form表单提交数据之后,一般都需在Servlet中的使用request.getParameter方法获取表单中的所有数据。如果提交的数据量过大,获取的重复代码会很多。并且一般都需要在Servlet中把获取到的数据封装到JavaBean中,然后把这个JavaBean交给service层,service层再交给dao层,最后把数据插入到数据库中。

 

 

这个用户专门封装页面提交数据的工具类就是BeanUtils。

 

 

Apache提供的很多技术之间通过都会有jar包的相互依赖。

解压压缩包:



复制到当前项目的WEB-INF下的lib中。


BeanUtils类使用

BeanUtils类的功能是把一个Map集合中的数据,封装到一个JavaBean上。


使用BeanUtils工具类中的populate方法就可以把Map集合中的数据封装到指定的bean上。

         注意:Map中的key名称(表达中name值)必须和bean对象的属性名一致。


request.getParamterMap(); 获取用户提交所有数据,并且封装到map中返回,map中key就是表单标签的name的值。

如果使用beanUtils.popublate 需要表单中的name属性的值, 和bean里面的属性的名字要一致,才可把表单数据自动的封装到bean里面。


JDBC----c3p0_第16张图片

如果map的值是多个内容。只会封装第一个。 如果是复选框,还需要自己去处理。

JDBC----c3p0_第17张图片


BeanUtils工具类中核心需要使用的接口和类:
BeanUtils是核心类。

注册业务:

页面准备:
JDBC----c3p0_第18张图片

dao层代码实现

JDBC----c3p0_第19张图片

如果注册的两个用户名相同不允许注册

JDBC----c3p0_第20张图片

service层代码实现

JDBC----c3p0_第21张图片

web层代码实现

JDBC----c3p0_第22张图片
JDBC----c3p0_第23张图片

JDBC----c3p0_第24张图片














你可能感兴趣的:(JDBC----c3p0)