MVC设计模式登陆验证

mvc设计模式下验证的流程:
浏览器请求Servlet,Servlet获取表单中username和passwd,通过UserService接口中selectUsernameByName方法查询返回用户对象,UserServiceImpl通过调用UserDAO接口中的selectUsernameByname方法在数据库中查询并返回user对象(通过UserDAOImpl实现),一层一层返回给Servlet进行校验。

1.新建实体类User

实体类与数据库中表对应

public class User {
    private Integer id;
    private String username;
    private String passwd;

    public User() {
    }

    public User(Integer id, String username, String passwd) {
        this.id = id;
        this.username = username;
        this.passwd = passwd;
    }

    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 getPasswd() {
        return passwd;
    }

    public void setPasswd(String passwd) {
        this.passwd = passwd;
    }
}

2.新建UserDAO接口以及他的实现类

UserDAOImpl类连接数据库查询username,返回user对象

public interface UserDAO {
    public User selectUserByName(String username);
    
}

public class UserDAOImpl implements UserDAO {
    @Override
    public User selectUserByName(String username) {
        Connection conn=null;
        PreparedStatement pstmt=null;
        ResultSet rs=null;
        User user=null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn=DriverManager.getConnection("jdbc:mysql:///test","root","123456");
            String sql="select * from t_user where username=?";
            pstmt= conn.prepareStatement(sql);
            pstmt.setString(1,username);
            rs=pstmt.executeQuery();
            if (rs.next()){
                Integer id = rs.getInt("id");
                String name=rs.getString("username");
                String passwd=rs.getString("passwd");
                user=new User();
                user.setId(id);
                user.setUsername(name);
                user.setPasswd(passwd);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return user;
    }
}

3.新建UserService接口以及他的实现类

调用UserDAO接口中的selectUsernameByName方法

public interface UserService {
    public  User selectUserByName(String username);
}

    public class UserServiceImpl implements UserService {
 private UserDAO userDAO=new UserDAOImpl();


 @Override
 public User selectUserByName(String username) {
  //调用userDAO的根据用户名查询用户的方法
  return userDAO.selectUserByName(username);
 }
}

4 .新建Servlet

对dao层返回来的user对象进行校验

@WebServlet(name = "Servlet",urlPatterns = "/Servlet")
public class Servlet extends HttpServlet {
    private UserService userService = new UserServiceImpl();

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.获取用户名和密码
        String username = request.getParameter("username");
        String passwd = request.getParameter("passwd");
        System.out.println(username);
        //2.调用Service的根据用户名查询用户对象的方法,返回用户对象
        User user = userService.selectUserByName(username);
        //3.判断如果用户对象为null则请求转发到login.jsp中,否则校验密码,如果校验成功则请求重定向到index.jsp,否则转发到Login.jsp
        if (user!= null) {
            if (passwd.equals(user.getPasswd())) {
                response.sendRedirect("a.jsp");
            } else {
                request.getRequestDispatcher("Login.jsp").forward(request, response);
            }
        } else {
            request.getRequestDispatcher("Login.jsp").forward(request, response);
        }

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}

**

5.Login.jsp

请求Servlet,提供数据

<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8" %>
<html>
<head>
    <meta charset="UTF-8">
    <style type="text/css">
        body {
            text-align: center;
        }

        span {
            color: red;
            font-size: 200%
        }

        hr {
            margin-bottom: 30px
        }
    </style>
</head>
<body>
<span> 登录 </span>
<hr color="red" />
<form action="Servlet" method="post">
    <table border="1" bordercolor="blue" width="40%" cellspacing="0" align="center">
        <tr>
            <td>请输入用户名:</td>
            <td><input type="text" name="username" /></td>
        </tr>
        <tr>
            <td>请输入密码:</td>
            <td><input type="password" name="passwd" /></td>
        </tr>
        <tr align="center">
            <td colspan="2">
                <input type="submit" value="登陆" /> <input type="reset" value="重置" />
                <a href="RegistView.html">注册</a>
            </td>
        </tr>
    </table>
</form>
</body>
</html>

结果展示

密码正确情况下重定向到a.jsp

在这里插入图片描述
在这里插入图片描述
密码不正确转发到Login.jsp
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值