C3P0
Dbcp 做连接池 jdbctmplatce
spring 和 hibernate 对c3p0进行支持。
新建web项目 C3p0Test
使用c3p0的连接池,导入jar包
查看文档
通用Jdbcutils.java 工具
在src下面创建 c3p0-config.xml
com.mysql.jdbc.Driver
jdbc:mysql:///day03
root
root
测试:
测试结果
登录——注册
登录
准备工作:
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','大乔');
5、新建一个user类。
Domain javabean pojo
必须是私有,提供getter setter方法
创建一个jdbc工具类。
在src下创建c3p0-config.xml
获取链接:
释放资源:
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;
}
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工具类介绍
在页面上的form表单提交数据之后,一般都需在Servlet中的使用request.getParameter方法获取表单中的所有数据。如果提交的数据量过大,获取的重复代码会很多。并且一般都需要在Servlet中把获取到的数据封装到JavaBean中,然后把这个JavaBean交给service层,service层再交给dao层,最后把数据插入到数据库中。
这个用户专门封装页面提交数据的工具类就是BeanUtils。
Apache提供的很多技术之间通过都会有jar包的相互依赖。
解压压缩包:
复制到当前项目的WEB-INF下的lib中。
使用BeanUtils工具类中的populate方法就可以把Map集合中的数据封装到指定的bean上。
注意:Map中的key名称(表达中name值)必须和bean对象的属性名一致。
request.getParamterMap(); 获取用户提交所有数据,并且封装到map中返回,map中key就是表单标签的name的值。
如果使用beanUtils.popublate 需要表单中的name属性的值, 和bean里面的属性的名字要一致,才可把表单数据自动的封装到bean里面。如果map的值是多个内容。只会封装第一个。 如果是复选框,还需要自己去处理。
BeanUtils工具类中核心需要使用的接口和类:
BeanUtils是核心类。
注册业务:
如果注册的两个用户名相同不允许注册
service层代码实现