基于mvc的Servlet登录页面
引言
学习到JavaWeb之后,我们可以通过页面进行登陆,然后获取页面输入的账号密码信息,在数据库进行验证,如果验证成功,那么会跳转到成功登录页面,如果验证失败,会跳转到登陆失败页面。
正文
文件夹结构
SQL代码
/*
Navicat MySQL Data Transfer
Source Server : fiveGods
Source Server Version : 80016
Source Host : localhost:3306
Source Database : db9
Target Server Type : MYSQL
Target Server Version : 80016
File Encoding : 65001
Date: 2021-12-24 09:08:57
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for stu
-- ----------------------------
DROP TABLE IF EXISTS `stu`;
CREATE TABLE `stu` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(20) NOT NULL,
`password` varchar(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of stu
-- ----------------------------
INSERT INTO `stu` VALUES ('1', '2019000', '2019000');
INSERT INTO `stu` VALUES ('2', '2019001', '2019001');
entry包下的User
package doMainAgain.entry;
public class User {
// 数据库实体类
private int id;
private String username;
private String password;
@Override
public String toString() {
return "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;
}
public User() {
}
public User(int id, String username, String password) {
this.id = id;
this.username = username;
this.password = password;
}
}
dao包下的UserDao
package doMainAgain.dao;
import doMainAgain.entry.User;
import doMainAgain.util.JdbcUtils;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
public class UserDao {
JdbcTemplate jdbcTemplate=new JdbcTemplate(JdbcUtils.getDataSource());
// 连接方法
public User login(User user){
try {
// 将获取到的user信息输入到执行语句
String sql="select * from stu where username=? and password=?";
jdbcTemplate.queryForObject(sql,new BeanPropertyRowMapper<User>(User.class),
user.getUsername(),
user.getPassword());
// 如果获取到了便将user对象返回
return user;
} catch (DataAccessException e) {
e.printStackTrace();
}
// 没有获取到便返回空对象
return null;
}
}
util包下的JdbcUtils工具类
package doMainAgain.util;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.IOException;
import java.sql.Connection;
import java.util.Properties;
//工具类
public class JdbcUtils {
private static DataSource dataSource;
static {
Properties properties = new Properties();
try { properties.load(JdbcUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
dataSource = DruidDataSourceFactory.createDataSource(properties);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
public static Connection gerConnnection() {
Connection connection = null;
try {
connection = dataSource.getConnection();
return connection;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static DataSource getDataSource() {
return dataSource;
}
//释放资源
public static void closeAll(AutoCloseable... autoCloseables) {
for (AutoCloseable s : autoCloseables) {
if (s != null) {
try {
s.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
web包下的loginservlet
package doMainAgain.servlet;
import doMainAgain.dao.UserDao;
import doMainAgain.entry.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( "/LoginServletDemo")
public class LoginServletDemo extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取页面账号密码
// 方法一
// String username = request.getParameter("username");
// String password= request.getParameter("password");
将获取到的账号密码写入到stu对象
// Stu stu=new Stu();
// stu.setUsername(username);
// stu.setPassword(password);
// 方法一结束
// 方法二BeanUtils的封装
// 介绍:BeanUtils用于封装javabean、
// 要求:必须满足一般实体类的所有信息(toString除外)
// 功能:
Map<String, String[]> parameterMap = request.getParameterMap();
Stu stu=new Stu();
try {
BeanUtils.populate(stu,parameterMap);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
// 方法二结束
// 判断是否连接成功
if (login==null){
// 跳转到失败页面
request.getRequestDispatcher("/FailServletDemo").forward(request,response);
}else {
// 跳转到成功页面,并附带传入user对象
request.setAttribute("user",user);
request.getRequestDispatcher("/SuccessServletDemo").forward(request,response);
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
faillogin
package doMainAgain.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( "/FailServletDemo")
public class FailServletDemo extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
// 页面展示信息
response.getWriter().write("fail to login");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
successlogin
package doMainAgain.servlet;
import doMainAgain.entry.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( "/SuccessServletDemo")
public class SuccessServletDemo extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
User user = (User)request.getAttribute("user");
// 页面展示信息
response.getWriter().write("success to login "+user.getUsername());
System.out.println("success to login");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
h5页面
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="log" method="post">
<input name="username">
<br>
<input type="password" name="password">
<br>
<!-- <input type="checkbox" name="hobby" value="game">game-->
<!-- <input type="checkbox" name="hobby" value="play">play-->
<!-- <input type="checkbox" name="hobby"value="read">read-->
<input type="submit" name="submit"value="submit">
</form>
</body>
</html>