设计数据库表

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&amp;useSSL=false&amp;serverTimezone=GMT&amp;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 2019-06-15 16:27  会飞的金鱼  阅读(198)  评论(0)    收藏  举报