目录
登陆案例:
需求:
- 编写登录页面, 包含用户名,密码;
- 编写后台代码实现如下功能:
- 用户名密码正确, 登陆成功, 在页面显示: "登陆成功"。
- 用户名密码错误, 登陆失败, 在页面显示: "用户名密码不正确"。
1. 项目结构
2. 数据库结构
2.1 建立user表
CREATE TABLE `user` (
`id` int(11) NOT NULL,
`username` varchar(50) DEFAULT NULL,
`password` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
2.2 配置jbdc.properties文件
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/day421
username=root
password=root
# 连接池的最大初始连接量
initialSize=5Q
# 最大连接数
maxActive=10
# 最大等待时间
maxWait=3000
2.3 导入JDBCUtils工具类
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 ds; //数据源/连接池
static {
try {
//读取配置文件
InputStream input = JDBCUtils.class.
getClassLoader().getResourceAsStream("jdbc.properties");
//加载读取流
Properties pro = new Properties();
pro.load(input);
//根据Properties创建数据源
ds = DruidDataSourceFactory.createDataSource(pro);
} catch (Exception exception) {
exception.printStackTrace();
}
}
public static DataSource getDataSource(){
return ds;
}
public static Connection getConnection(){
try {
return ds.getConnection();
} catch (SQLException throwables) {
throwables.printStackTrace();
return null;
}
}
}
3. login.html页面的代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="http://localhost:8080/web/Servletlogin" method="post">
用户名:<input type="text" name="username">
<br>
密码:<input type="password" name="password">
<br>
<input type="submit" value="提交">
</form>
</body>
</html>
4. pojo层
User类:
public class User {
private Integer id;
private String username;
private String password;
public User() {
}
public User(Integer id, String username, String password) {
this.id = id;
this.username = username;
this.password = password;
}
public Integer getId() {
return id;
}
public void setId(Integer 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 + '\'' +
'}';
}
}
5. service层
UserService类:
import com.response.dao.UserDao;
import com.response.pojo.User;
public class UserService {
public User login(User user){
//调用dao
UserDao userDao = new UserDao();
User login = userDao.login(user);
if(login!=null){
login.setPassword("*****");
}
return login;
}
}
6. dao层
UserDao类:
import com.response.pojo.User;
import com.response.utils.JDBCUtils;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import java.util.List;
//和数据库交互
public class UserDao {
private JdbcTemplate jdbcTemplate = new JdbcTemplate(JDBCUtils.getDataSource());
//登录方法,验证传入的User对象,用户名密码是否正确
public User login(User user){
String sql = "select * from user where username=? and password=?";
List<User> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(User.class),
user.getUsername(),
user.getPassword());
if(list==null || list.size()==0){
return null;
}else{
return list.get(0);
}
}
}
7. web层
LoginServlet类:
package com.response.web;
import com.response.pojo.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;
import java.io.PrintWriter;
@WebServlet("/Servletlogin")
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.解决乱码(请求和响应)
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=utf-8");
//2.接收数据
String username = request.getParameter("username");
String password = request.getParameter("password");
//3.将数据封装成user对象
User user = new User(null, username, password);
//4.调用service层,传入user对象
UserService userService = new UserService();
User login = userService.login(user);
//5.判断查询结果是否为null
PrintWriter out = response.getWriter();
if(login==null){
//6.为null.就响应用户名密码不正确
out.write("用户名密码不正确");
}else{
//7.不为null,就响应登陆成功
out.write("登录成功");
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}
8. 效果图
8.1 当账号与密码都输入正确时:
8.2 当账号与密码输入不正确时:
如果对你有帮助,请帮我点一下赞,我才有动力继续创作,谢谢!