Servlet JDBC 数据库 实现用户登陆注册
LoginServlet
package com.itheima.demo;
import org.apache.commons.beanutils.BeanUtils;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;
@WebServlet(name = "LoginServlet", value = "/login")
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
//获取请求参数
Map<String, String[]> parameterMap = request.getParameterMap();
User user = new User();
BeanUtils.populate(user,parameterMap);
//System.out.println(user);
//登录
UserDao userDao = new UserDao();
User user1 = userDao.login(user);
if(user1!=null){
//登录成功
request.setAttribute("username",user1.getUsername());
request.getRequestDispatcher("/WEB-INF/page/Home.jsp").forward(request, response);
}else{
//登录失败
request.setAttribute("msg","用户名或密码错误");
request.getRequestDispatcher("/login.jsp").forward(request, response);
}
int i = userDao.register(user);
if(i>0){
// request.setAttribute("username",user2);
//request.setAttribute("username",user2.getUsername());
request.getRequestDispatcher("/WEB-INF/page/Home.jsp").forward(request, response);
}else{
//System.out.println("注册失败");
request.setAttribute("msg","请重新注册");
request.getRequestDispatcher("/regist.jsp").forward(request,response);
}
} catch (Exception e) {
e.printStackTrace();
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
User类
package com.itheima.demo;
public class User {
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
UserDao类
package com.itheima.demo;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
public class UserDao {
private static DataSource ds;
static {
try {
Properties properties = new Properties();
InputStream in = UserDao.class.getClassLoader().getResourceAsStream("druid.properties");
properties.load(in);
ds = DruidDataSourceFactory.createDataSource(properties);
} catch (Exception e) {
e.printStackTrace();
}
}
//登录
public User login(User user) throws SQLException {
String username = user.getUsername();
String password = user.getPassword();
QueryRunner queryRunner = new QueryRunner(ds);
User user1 = queryRunner.query("select * from user where username=? and password=?", new BeanHandler<User>(User.class), username, password);
return user1;
}
//注册
private int i;
public int register(User user) throws SQLException {
String username = user.getUsername();
String password = user.getPassword();
Connection connection = ds.getConnection();
String sql1="select * from user where username=?";
PreparedStatement preparedStatement1 = connection.prepareStatement(sql1);
preparedStatement1.setString(1,username);
ResultSet resultSet = preparedStatement1.executeQuery();
if(resultSet.next()){
//查询在,所以执行登录的方发
login(user);
}else{
String sql = "insert into user(username,password) values (?,?)";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1,username);
preparedStatement.setString(2,password);
i = preparedStatement.executeUpdate();
}
return i;
}
}