实现servlet
package servlet;
import dao.UserDao;
import domain.User;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/loginservlet")
public class LoginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//设置文件编码
req.setCharacterEncoding("utf-8");
//从输入框获得用户名和密码
String username = req.getParameter("username");
String password = req.getParameter("password");
//创建登录用户
User loginUser = new User();
loginUser.setUsername(username);
loginUser.setPassword(password);
//查看数据库有无此人
UserDao dao = new UserDao();
User user = dao.login(loginUser);
if(user == null){
//转发
req.getRequestDispatcher("/failServlet").forward(req , resp);
}else {
//将用户加载进请求域与其他servlet共享
req.setAttribute("user",user);
req.getRequestDispatcher("/successServlet").forward(req , resp);
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req , resp);
}
}
login.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/user/loginservlet" method="post">
用户名:<input type="text" name="username"><br>
密码:<input type="text" name="password"><br>
<input type="submit" value="登录" name="submit">
</form>
</body>
</html>
User类
package domain;
public class User {
//与数据库属性相对应
private Integer id;
private String username;
private String password;
@Override
public String toString() {
return "domain.User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + 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;
}
}
操作数据库UserDao类
package dao;
import JDBCTemplate.JDBCUtils;
import domain.User;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import java.util.zip.DataFormatException;
public class UserDao {
private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
public User login(User loginuser){
try{
String sql = "select * from user where username = ? and password = ?";
//将数据库数据对应User成员封装为User对象返回
User user = template.queryForObject(sql, new BeanPropertyRowMapper<>(User.class),
loginuser.getUsername(), loginuser.getPassword()
);
return user;
}catch (DataAccessException e){
System.out.println(e);
return null;
}
}
}
成功登陆的转发servlet
package servlet;
import domain.User;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/successServlet")
public class SuccessServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html ; charset = utf-8");
//从请求域获得User对象
User user = (User)req.getAttribute("user");
resp.getWriter().write("登录成功" + user.getUsername() + "欢迎您!");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req , resp);
}
}
登录失败servlet
package servlet;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/failSerclet")
public class FailServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("html/text ; charset = utf-8");
resp.getWriter().write("用户名或密码输入错误!!!");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req , resp);
}
}
自己定义的JDBCUtils工具类
package util;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
public class JDBCutil {
private static DataSource bs;
static {
try {
//加载配置文件
Properties pro = new Properties();
InputStream is = JDBCutil.class.getClassLoader().getResourceAsStream("druid.properties");
pro.load(is);
//获得连接池
bs = DruidDataSourceFactory.createDataSource(pro);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
//获得链接池
public static DataSource getDataSource(){
return bs;
}
//获得Connection
public static Connection getConnection() throws SQLException {
return bs.getConnection();
}
}