MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式,这种模式用于应用程序的分层开发。
Model(模型):模型代表一个存取数据的对象。它也可以带有逻辑,在数据变化时更新控制器。
View(视图):视图代表模型包含的数据的可视化。
Controller(控制器):控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图,它使视图与模型分离开。
首先创建一个UserService类,用于判断登入是否成功
public class UserService {
public User login(String loginName, String pwd){
User saveUser = new User(1, "02", "1234","张三",null );
if(saveUser != null && saveUser.getName().equals(loginName)
&& saveUser.getPwd().equals(pwd)){
return saveUser;
}else {
return null;
}
}
}
添加一个实体类User
public class User {
private Integer id;
private String name;
private String pwd;
private String nickname;
private Date birthday;
public User() {
}
public User(Integer id, String name, String pwd, String nickname, Date birthday) {
this.id = id;
this.name = name;
this.pwd = pwd;
this.nickname = nickname;
this.birthday = birthday;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
}
MainController类:
@WebServlet("/main")
public class MainController extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//准备界面中的数据,放置到req对象里面
req.getRequestDispatcher("/WEB-INF/template/main.jsp").forward(req, resp);
}
}
LoginController类:
@WebServlet("/login")
public class LoginController extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.getRequestDispatcher("WEB-INF/template/login.jsp").forward(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String loginName = req.getParameter("loginName");
String loginPwd = req.getParameter("loginPwd");
String validCode = req.getParameter("validCode");
String saveCode = (String) req.getSession().getAttribute("code");
String str = null;
if (saveCode != null) {
if (saveCode.equals(validCode)) {
UserService service = new UserService();
User user = service.login(loginName, loginPwd);
if (user != null) {
req.getSession().setAttribute("user",user);
resp.sendRedirect("./main");
// req.setAttribute("name",str);
// req.getRequestDispatcher("/WEB-INF/template/main.jsp").forward(req,resp);
} else {
loginFail(req,resp,"账号或密码错误");
}
} else {
loginFail(req,resp,"验证码输入错误,请重新输入");
}
} else {
loginFail(req,resp,"请输入验证码");
}
}
private void loginFail(HttpServletRequest req, HttpServletResponse resp,String str)throws ServletException, IOException{
// req.setAttribute("msg", str);
resp.sendRedirect("./login?err=" + URLEncoder.encode(str,"UTF-8"));
// req.getRequestDispatcher("/WEB-INF/template/fail.jsp").forward(req, resp);
}
}
main.jsp:
<%@ page import="Java.cn.edu.mju.project1.project1.entity.User" %><%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2020/4/15 0015
Time: 22:14
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
欢迎:<%=((User)session.getAttribute("user")).getNickname()%>登录该界面!
</body>
</html>
登录界面:
登陆成功:
账号或密码错误:
验证码错误: