dao层
JDBCUtils工具类
用于使用druid连接池的初始化和获取连接池对象
package RequestDemo.login.util;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.sqlException;
import java.util.Properties;
public class JDBCUtils {
//创建连接池对象。
private static DataSource dataSource;
/**
* 静态代码块用于读取配置文件,初始化连接池对象。
* 注意:在该项目中lib文件夹位于WEB-INF文件夹下,否则会报找不到class异常。
*/
static {
//加载配置文件
try {
Properties properties = new Properties();
InputStream resourceAsstream = JDBCUtils.class.getClassLoader().getResourceAsstream("druid.properties");
properties.load(resourceAsstream);
//使用连接池工厂创建连接池对象
dataSource = DruidDataSourceFactory.createDataSource(properties);
} catch (Exception e) {
e.printstacktrace();
}
}
/**
* 工具类,构造方法私有化
*/
private JDBCUtils(){}
/**获取连接池对象
* @return
*/
public static DataSource getDataSource(){
return dataSource;
}
/**
* 获取连接对象
* @return
* @throws sqlException
*/
public static Connection getConnection() throws sqlException {
return dataSource.getConnection();
}
}
UserDao类
package RequestDemo.login.dao;
import RequestDemo.login.bean.User;
import RequestDemo.login.util.JDBCUtils;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
public class UserDao {
//创建JdbcTemplate对象用于将查询到的数据封装为User对象。
private JdbcTemplate jdbcTemplate = new JdbcTemplate(JDBCUtils.getDataSource());
public User login(User loginUser){
try {
//创建sql语句
String sql = "select * from user where username = ? and password = ?";
//查询数据库并返回查询结果。
User user = jdbcTemplate.queryForObject(sql,
new BeanPropertyRowMapper<User>(User.class),
loginUser.getUsername(),
loginUser.getpassword());
//返回查询到的User对象
return user;
} catch (DataAccessException e) {
//如果查询结果为0,则会抛出异常,代表没有该用户,或者用户名和密码不匹配。
return null;
}
}
}
UserDaoTest类
用于测试UserDao的功能能否正确执行,只是用来测试功能,和登陆验证无关。
package RequestDemo.login.dao;
import RequestDemo.login.bean.User;
import org.junit.Test;
/**
* UserDao测试类,用于测试UserDao类是否正常连接数据库并查询结果。
*/
public class UserDaoTest {
@Test
public void demo(){
User loginUser = new User();
loginUser.setUsername("admin");
loginUser.setPassword("1234");
UserDao userDao = new UserDao();
User user = userDao.login(loginUser);
System.out.println(user);
}
}
Bean
User类
用于封装用户对象,成员变量对应数据库user表中的各个字段。
package RequestDemo.login.bean;
/**
* 用户类,用于封装用户对象,字段对应数据库user表中的字段。
* 提供get/set方法,因为没有用到构造方法就没有生成。
*/
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 + '\'' +
'}';
}
}
Servlet
LoginServlet类
用于接收html页面传递的参数,并封装为user对象,调用UserDao类验证用户名和密码。
package RequestDemo.login.servlet;
import RequestDemo.login.bean.User;
import RequestDemo.login.dao.UserDao;
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;
@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对象
User loginUser = new User();
loginUser.setUsername(username);
loginUser.setPassword(password);
//创建userDao类对象,用于验证用户名和密码是否正确
UserDao userDao = new UserDao();
//调用方法传递loginUser,只有用户名和密码
//返回user包含数据库中查询到的user的所有信息,如果用户名和密码错误,返回null
User user = userDao.login(loginUser);
if(user!=null){
//登陆成功,向req中设置域变量,用于在成功页面打印用户名
req.setAttribute("user",user);
//进行请求转发
req.getRequestdispatcher("/successServlet").forward(req,resp);
}else{
//登陆失败,请求转发到失败servlet中。
req.getRequestdispatcher("/failServlet").forward(req,resp);
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws servletexception, IOException {
this.doGet(req,resp);
}
}
SeccessServlet类
package RequestDemo.login.servlet;
import RequestDemo.login.bean.User;
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;
@WebServlet("/successServlet")
public class SuccessServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws servletexception, IOException {
this.doGet(request,response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws servletexception, IOException {
//通过变量名,获取域变量
User user = (User) request.getAttribute("user");
if(user!=null){
//设置回送页面的类型
response.setContentType("text/html;charset=utf-8");
//显示登陆成功,并结合用户名。
response.getWriter().write("登陆成功,"+user.getUsername()+",欢迎您!");
}
}
}
FailServlet类
package RequestDemo.login.servlet;
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;
@WebServlet("/failServlet")
public class FailServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws servletexception, IOException {
this.doGet(request,response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws servletexception, IOException {
response.setContentType("text/html;charset=utf-8");
//提示登录失败信息
response.getWriter().write("登录失败,用户名或密码错误");
}
}
前端页面
<!DOCTYPE html>
<html lang="en">
<head>
<Meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/Servlet/loginServlet" method="post">
用户名:<input type="text" name="username"> <br>
密码:<input type="password" name="password"><br>
<input type="submit" value="登录">
</form>
</body>
</html>
特别注意
在该项目中,操作数据库的依赖jar包的lib文件夹位于WEB-INF文件夹下,否则会报找不到class异常。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。