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