package com.lyq.bean;
public class User {
private int id; // 标识
private String username;// 用户名
private String password;// 密码
private String sex; // 性别
private String tel; // 电话
private String email; // 电子邮箱
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void getUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
package com.lyq.bean;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import com.mysql.jdbc.Connection;
import servlet.Connsql;
public class UserDao {
public void saveUser(User user){
// 插入用户注册信息的SQL语句
String sql = "insert into tb_user(username,password,sex,tel,photo,email) values(?,?,?,?,?,?)";
try {
// 获取PreparedStatement对象
PreparedStatement ps = Connsql.getConnection().prepareStatement(sql);
// 对SQL语句的占位符参数进行动态赋值
ps.setString(1, user.getUsername());
ps.setString(2, user.getPassword());
ps.setString(3, user.getSex());
ps.setString(4, user.getTel());
ps.setString(5, user.getEmail());
// 执行更新操作
ps.executeUpdate();
// 释放此 PreparedStatement 对象的数据库和 JDBC 资源
ps.close();
} catch (Exception e) {
e.printStackTrace();
}finally{
// 关闭数据库连接
// ConnectDB.closeConnection(conn);
}
}
/**
* 用户登录
* @param username 用户名
* @param password 密码
* @return 用户对象
*/
public User login(String username, String password){
User user = null;
// 根据用户名及密码查询用户信息
String sql = "select * from tb_user where username = ? and password = ?";
try {
// 获取PreparedStatement对象
PreparedStatement ps = Connsql.getConnection().prepareStatement(sql);
// 对SQL语句的占位符参数进行动态赋值
ps.setString(1, username);
ps.setString(2, password);
// 执行查询获取结果集
ResultSet rs = ps.executeQuery();
// 判断结果集是否有效
if(rs.next()){
// 实例化一个用户对象
user = new User();
// 对用户对象属性赋值
user.setId(rs.getInt("id"));
user.getUsername(rs.getString("username"));
user.setPassword(rs.getString("password"));
user.setSex(rs.getString("sex"));
user.setTel(rs.getString("tel"));
user.setEmail(rs.getString("email"));
}
// 释放此 ResultSet 对象的数据库和 JDBC 资源
rs.close();
// 释放此 PreparedStatement 对象的数据库和 JDBC 资源
ps.close();
} catch (Exception e) {
e.printStackTrace();
}finally{
// 关闭数据库连接
// ConnectDB.closeConnection(conn);
}
return user;
}
/**
* 判断用户名在数据库中是否存在
* @param username 用户名
* @return 布尔值
*/
public boolean userIsExist(String username){
// 根据指定用户名查询用户信息
String sql = "select * from tb_user where username = ?";
try {
// 获取PreparedStatement对象
PreparedStatement ps = Connsql.getConnection().prepareStatement(sql);
// 对用户对象属性赋值
ps.setString(1, username);
// 执行查询获取结果集
ResultSet rs = ps.executeQuery();
// 判断结果集是否有效
if(!rs.next()){
// 如果无效则证明此用户名可用
return true;
}
// 释放此 ResultSet 对象的数据库和 JDBC 资源
rs.close();
// 释放此 PreparedStatement 对象的数据库和 JDBC 资源
ps.close();
} catch (Exception e) {
e.printStackTrace();
}finally{
// 关闭数据库连接
// ConnectDB.closeConnection(conn);
}
return false;
}
}
package servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.lyq.bean.*;
/**
* 用户退出Servlet
*
* @author lixiyu
*/
public class ExitServlet extends HttpServlet {
private static final long serialVersionUID = 1599366365079846238L;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 获取session
HttpSession session = request.getSession();
// 获取用户对象
User user = (User)session.getAttribute("user");
// 判断用户是否有效
if(user != null){
// 将用户对象逐出session
session.removeAttribute("user");
// 设置提示信息
request.setAttribute("info", user.getUsername() + " 已成功退出!");
}
// 转发到message.jsp页面
request.getRequestDispatcher("message.jsp").forward(request, response);
}
}
package servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.lyq.bean.*;
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = -3009431503363456775L;
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 获取用户名
String username = request.getParameter("username");
// 获取密码
String password = request.getParameter("password");
// 实例化UserDao对象
UserDao userDao = new UserDao();
// 根据用户密码查询用户
User user = userDao.login(username, password);
// 判断user是否为空
if(user != null){
// 将用户对象放入session中
request.getSession().setAttribute("user", user);
// 转发到result.jsp页面
request.getRequestDispatcher("message.jsp").forward(request, response);
}else{
// 登录失败
request.setAttribute("info", "错误:用户名或密码错误!");
request.getRequestDispatcher("message.jsp").forward(request, response);
}
}
}
package servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.lyq.bean.User;
import com.lyq.bean.UserDao;
public class RegServlet extends HttpServlet {
private static final long serialVersionUID = 5280356329609002908L;
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 获取用户名
String username = request.getParameter("username");
// 获取密码
String password = request.getParameter("password");
// 获取性别
String sex = request.getParameter("sex");
// 获取联系电话
String tel = request.getParameter("tel");
// 获取电子邮箱
String email = request.getParameter("email");
// 实例化UserDao对象
UserDao userDao = new UserDao();
if(username != null && !username.isEmpty()){
if(userDao.userIsExist(username)){
// 实例化一个User对象
User user = new User();
// 对用户对象中的属性赋值
user.getUsername(username);
user.setPassword(password);
user.setSex(sex);
user.setTel(tel);
user.setEmail(email);
// 保存用户注册信息
userDao.saveUser(user);
request.setAttribute("info", "恭喜,注册成功!<br>");
}else{
request.setAttribute("info", "错误:此用户名已存在!");
}
}
// 转发到message.jsp页面
request.getRequestDispatcher("message.jsp").forward(request, response);
}
}