【servlet】基于MVC的Servlet登录验证页面

52 篇文章 0 订阅
22 篇文章 0 订阅

基于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>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

君问归期魏有期

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值