JDBC----c3p0



C3P0
Dbcp 做连接池 jdbctmplatce


spring 和 hibernate 对c3p0进行支持。

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


查看文档        



通用Jdbcutils.java 工具



在src下面创建 c3p0-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
	<!-- 我们希望在配置文件中,出现链接的参数信息 -->
	<default-config>
		<!-- name 属性定义 链接参数的key 标签的内容 代表值-->
		<property name="driverClass">com.mysql.jdbc.Driver</property>
		<property name="jdbcUrl">jdbc:mysql:///day03</property>
		<property name="user">root</property>
		<property name="password">root</property>
	</default-config> 
</c3p0-config>

测试:



测试结果




登录——注册
登录
准备工作:
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包



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



创建一个jdbc工具类。

在src下创建c3p0-config.xml




jdbcutils工具类:
连接池:

获取链接:



释放资源:





dao层
定义dao接口



定义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层
接口定义



类实现




web层
页面


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{	//欢迎<font color='red' >大乔</font>登录
			response.getWriter().println("欢迎<font color='red' >"+resUser.getRealname()+"</font>登录");
		}
	}


注册

注册其实就是添加,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里面。



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



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

注册业务:

页面准备:

dao层代码实现


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



service层代码实现


web层代码实现

















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值