一、用户登录与注册使用了如下技术:
1、Jsp+Servlet+JavaBean+Jdbc+Mysql+DAO单例工厂设计模式+属性文件配置。
2、在JavaBean中注册了日期转化函数。
3、MySql的日期类型与Java的日期类型之间的处理。
二、类结构图和需导入的包如下图所示:
三、具体代码
1、DbConfig.properties:
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/mydb3
user=root
password=root
2、IUserDao.java:
packagecom.gnnuit.web.login.dao;importcom.gnnuit.web.login.domain.UserInfo;public interfaceIUserDao {//查询用户名、密码是否存在
public booleanfind(String username, String password);//增加用户
public booleanadd(UserInfo userinfo);
}
3、UserDao.java:
packagecom.gnnuit.web.login.dao;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importcom.gnnuit.web.login.domain.UserInfo;importcom.gnnuit.web.login.util.JDBCUtil;public class UserDao implementsIUserDao {
@Overridepublic booleanfind(String username, String password) {boolean flag = false;
Connection conn= null;
PreparedStatement pstmt= null;
ResultSet rs= null;
String sql= "select * from user where username=? and password=?";try{
conn=JDBCUtil.getMySqlConnection();
pstmt=conn.prepareStatement(sql);
pstmt.setString(1, username);
pstmt.setString(2, password);
rs=pstmt.executeQuery();if(rs.next()) {
flag= true;
}
}catch(Exception e) {
e.printStackTrace();
}finally{
JDBCUtil.close(rs);
JDBCUtil.close(pstmt);
JDBCUtil.close(conn);
}returnflag;
}
@Overridepublic booleanadd(UserInfo userinfo) {boolean flag = false;
Connection conn= null;
PreparedStatement pstmt= null;
String sql= "insert into user(username,password,birthday,salary) values(?,?,?,?)";try{
conn=JDBCUtil.getMySqlConnection();
pstmt=conn.prepareStatement(sql);
pstmt.setString(1, userinfo.getUsername());
pstmt.setString(2, userinfo.getPassword());
pstmt.setDate(3,newjava.sql.Date(userinfo.getBirthday().getTime()));
pstmt.setInt(4, userinfo.getSalary());
pstmt.executeUpdate();
flag= true;
}catch(Exception e) {
}finally{
JDBCUtil.close(conn);
JDBCUtil.close(pstmt);
}returnflag;
}
}
4、user.sql:
drop table ifexists user;
create tableifnot exists user(
id INTEGER primary key auto_increment,
username VARCHAR(100) not null,
password VARCHAR(100) not null,
birthday DATE,
salary INTEGER
);
insert into user(username,password) values('jack','000000');
insert into user(username,password) values('marry','111111');
5、UserInfo.java:
packagecom.gnnuit.web.login.domain;importjava.util.Date;public classUserInfo {privateString username;privateString password;privateDate birthday;private intsalary;publicUserInfo() {
}publicString getUsername() {returnusername;
}public voidsetUsername(String username) {this.username =username;
}publicString getPassword() {returnpassword;
}public voidsetPassword(String password) {this.password =password;
}publicDate getBirthday() {returnbirthday;
}public voidsetBirthday(Date birthday) {this.birthday =birthday;
}public intgetSalary() {returnsalary;
}public void setSalary(intsalary) {this.salary =salary;
}
}
6、DaoFactory.java:
packagecom.gnnuit.web.login.factory;importcom.gnnuit.web.login.dao.IUserDao;importcom.gnnuit.web.login.dao.UserDao;//访问数据库的工厂(单例)
public classDaoFactory {privateDaoFactory() {
}private staticDaoFactory daoFactory;public staticDaoFactory getDaoFactory() {if (daoFactory == null) {
daoFactory= newDaoFactory();
}returndaoFactory;
}publicIUserDao getUserDao() {return newUserDao();
}
}
7、UserService.java:
packagecom.gnnuit.web.login.service;importcom.gnnuit.web.login.dao.IUserDao;importcom.gnnuit.web.login.domain.UserInfo;importcom.gnnuit.web.login.factory.DaoFactory;public classUserService {private IUserDao dao =DaoFactory.getDaoFactory().getUserDao();public booleanlogin(String username, String password) {boolean flag = false;
flag=dao.find(username, password);returnflag;
}public booleanregister(UserInfo userinfo) {boolean flag = false;
flag=dao.add(userinfo);returnflag;
}
}
8、JDBCUtil.java:
packagecom.gnnuit.web.login.util;importjava.io.IOException;importjava.io.InputStream;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjava.util.Properties;public final classJDBCUtil {private staticString driver;private staticString url;private staticString user;private staticString password;//静态块:加载配置文件
static{
Properties prop= newProperties();
InputStream is= JDBCUtil.class.getClassLoader().getResourceAsStream("com/gnnuit/web/login/config/DbConfig.properties");try{
prop.load(is);
driver= prop.getProperty("driver");
url= prop.getProperty("url");
user= prop.getProperty("user");
password= prop.getProperty("password");
}catch(IOException e) {
e.printStackTrace();
}
}//静态块:注册驱动
static{try{
Class.forName(driver);
}catch(ClassNotFoundException e) {
e.printStackTrace();
}
}//获取MySql数据库的连接
public static Connection getMySqlConnection() throwsSQLException {
Connection conn=DriverManager.getConnection(url, user, password);returnconn;
}//关闭数据库
public static voidclose(ResultSet rs) {if (rs != null) {try{
rs.close();
}catch(SQLException e) {
e.printStackTrace();
}
}
}public static voidclose(Statement stmt) {if (stmt != null) {try{
stmt.close();
}catch(SQLException e) {
e.printStackTrace();
}
}
}public static voidclose(Connection conn) {if (conn != null) {try{
conn.close();
}catch(SQLException e) {
e.printStackTrace();
}
}
}
}
9、UserServlet.java:
packagecom.gnnuit.web.login.web;importjava.io.IOException;importjava.lang.reflect.InvocationTargetException;importjava.util.Enumeration;importjava.util.Locale;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.apache.commons.beanutils.BeanUtils;importorg.apache.commons.beanutils.ConvertUtils;importorg.apache.commons.beanutils.locale.converters.DateLocaleConverter;importcom.gnnuit.web.login.domain.UserInfo;importcom.gnnuit.web.login.service.UserService;public class UserServlet extendsHttpServlet {private static final long serialVersionUID = 1L;public voiddoGet(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {
}public voiddoPost(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {
request.setCharacterEncoding("utf-8");
String method= request.getParameter("method");if (method != null) {if ("login".equals(method)) {
login(request, response);
}else if ("register".equals(method)) {
register(request, response);
}
}
}private voidlogin(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {
String username= request.getParameter("username");
String password= request.getParameter("password");
UserService userService= newUserService();boolean flag =userService.login(username, password);if(flag) {
request.setAttribute("message", "登录成功");
}else{
request.setAttribute("message", "登录失败");
}
request.getRequestDispatcher("/message.jsp").forward(request, response);
}private voidregister(HttpServletRequest request,
HttpServletResponse response)throwsServletException, IOException {
UserInfo userinfo= newUserInfo();
Enumeration names =request.getParameterNames();
ConvertUtils.register(newDateLocaleConverter(Locale.getDefault(),"yyyy-MM-dd"), java.util.Date.class);while(names.hasMoreElements()) {
String name=names.nextElement();try{
BeanUtils.setProperty(userinfo, name,
request.getParameterValues(name));
}catch(IllegalAccessException e) {//TODO Auto-generated catch block
e.printStackTrace();
}catch(InvocationTargetException e) {//TODO Auto-generated catch block
e.printStackTrace();
}
}
UserService userService= newUserService();boolean flag =userService.register(userinfo);if(flag) {
request.setAttribute("message", "注册成功");
}else{
request.setAttribute("message", "注册失败");
}
request.getRequestDispatcher("/message.jsp").forward(request, response);
}
}
10、login.jsp:
My JSP 'index.jsp' starting page用户名 | |
密码 | |
11、message.jsp:
My JSP 'message.jsp' starting page12、register.jsp:
My JSP 'register.jsp' starting page用户名 | |
密码 | |
生日 | |
期望薪水 | |