设计数据库表
User表
create table user( id varchar(80) primary key, username varchar(20), password varchar(20), email varchar(20), birthday date )
使用C3P0数据库连接池
导入开发包:c3p0-0.9.1.2.jar。
配置c3p0-config.xml
<?xml version="1.0" encoding="UTF-8" ?> <c3p0-config> <default-config> <property name="driverClass">com.mysql.cj.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql://localhost:3306/testdb?characterEncoding=utf8&useSSL=false&serverTimezone=GMT&allowPublicKeyRetrieval=true </property> <property name="user">sa</property> <property name="password">admin</property> <property name="initialPoolSize">10</property> <property name="maxIdleTime">30</property> <property name="maxPoolSize">10</property> <property name="minPoolSize">10</property> <property name="maxStatements">200</property> </default-config> </c3p0-config>
写连接数据库的工具类
public class Utils { //它会自动寻找配置文件,没有指定节点就是默认的【如果指定,就找指定的节点的数据库】 private static ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource(); public static DataSource getDataSouce() { return comboPooledDataSource; } public static Connection getConnection() throws Exception { return comboPooledDataSource.getConnection(); } }
写一个操作数据库的Dao实现
定义一个接口
public interface UserDao { User find(String name,String password); void register(User user); }
使用DBUtils框架
导入DBUtils的开发包:commons-dbutils-1.7.jar
public class UserImplDataBase implements UserDao { @Override public User find(String name, String password) { try { DataSource dataSource = Utils.getDataSouce(); QueryRunner queryRunner = new QueryRunner(dataSource); String sql = "select * from user where username=? and password=?"; Object[] params = new Object[2]; params[0] = name; params[1] = password; User user = (User) queryRunner.query(sql, new BeanHandler<>(User.class), params); return user; } catch (SQLException e) { e.printStackTrace(); } return null; } @Override public void register(User user) { try { DataSource dataSource = Utils.getDataSouce(); QueryRunner queryRunner = new QueryRunner(dataSource); String sql = "insert user(id,username,password,email,birthday) values(?,?,?,?,?)"; Object[] params = new Object[5]; params[0] = user.getId(); params[1] = user.getUserName(); params[2] = user.getPassword(); params[3] = user.getEmail(); params[4] = user.getBirthday(); int update = queryRunner.update(sql, params); } catch (SQLException e) { e.printStackTrace(); } } }
Service层
public class UserService { private UserDao userDao=new UserImplDataBase(); public User find(String name,String password){ User user=userDao.find(name,password); return user; } public void register(User user){ userDao.register(user); } }
domain层
public class User { private String id; private String userName; private String password; private String email; private Date birthday; //getter和setter //toString() }
注册Servlet及jsp页面
RegisterUIServlet
protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException { RequestDispatcher requestDispatcher = request.getRequestDispatcher("/WEB-INF/Register.jsp"); requestDispatcher.forward(request,response); }
Register.jsp
<form method='POST' action='/RegisterServlet'> 用户名 <input type='text' name='username'/><br/> 密码 <input type='password' name='password'/><br/> 确认密码 <input type='password' name='confirmPassword'><br/> 邮箱 <input type='text' name='mail'/><br/> 生日 <input type='text' name='birthday'/><br/> <input type='submit'value='提交'/> <input type='button' value='重置'/> </form>
RegisterServlet
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); User user=new User(); String username = request.getParameter("username"); String password=request.getParameter("password"); String mail=request.getParameter("mail"); String birthday=request.getParameter("birthday"); String id = UUID.randomUUID().toString(); user.setId(id); user.setUserName(username); user.setPassword(password); user.setEmail(mail); try { SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd"); user.setBirthday(format.parse(birthday)); } catch (ParseException e) { e.printStackTrace(); } UserService userService=new UserService(); userService.register(user); System.out.println(username); response.setContentType("text/html;charset=UTF8"); response.getWriter().write("注册成功了"); }
登录Servlet和jsp页面
LoginUIServlet
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { RequestDispatcher requestDispatcher = request.getRequestDispatcher("/WEB-INF/Login.jsp"); requestDispatcher.forward(request,response); }
Login.jsp
<form method='POST' action='/LoginServlet'> 用户名 <input type='text' name='username'/><br/> 密码 <input type='password' name='password'/><br/> <input type='submit'value='登录'/> <input type='button' value='重置'/><br/> </form>
LoginServlet
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); String name = request.getParameter("username"); String password = request.getParameter("password"); UserService userService = new UserService(); User user = userService.find(name, password); String msg; if(user!=null) { System.out.println(user); msg="登录成功"; }else{ msg="登录失败"; } response.setContentType("text/html;charset=UTF8"); response.getWriter().write(msg); }
注:
要导入开发包还有:servlet-api.jar和mysql-connector-java-8.0.12.jar
posted on
浙公网安备 33010602011771号