一、代码如下
1.创建login.jsp
<%@ page import="com.sun.jndi.toolkit.url.UrlUtil" %>
<%@ page import="java.net.URLDecoder" %><%--
Created by IntelliJ IDEA.
User: Chen
Date: 2020/4/13
Time: 16:02
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
String err =request.getParameter("err");
if (err !=null) {
err = URLDecoder.decode(err, "UTF-8");
%>
<%=err%>
<%
}
%>
<form action="./login" method="post">
登入名称:<input type="text" name="loginName"><br>
登入密码:<input type="text" name="loginPwd"><br>
验证码:<input type="text" name="validCode"><br>
<img src='http://localhost:8081/captche' width=200 height=100 /> <br>
<input type="submit" value="登入">
<input type="reset" value="取消">
</form>
</body>
</html>
2.创建loginController.java
package cn.edu.mju.project1.controller;
import cn.edu.mju.project1.entity.User;
import cn.edu.mju.project1.service.UserService;
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;
import java.io.PrintWriter;
import java.net.URLEncoder;
@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");
System.out.print(saveCode+validCode);
String str= null;
if (validCode != 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");
} else {
loginFail(req,resp,"账号或密码错误,请重新输入");
}
} else{
loginFail(req,resp,"验证码错误");
}
} else{
loginFail(req,resp, "请输入验证码");
}
}
private void loginFail (HttpServletRequest req,HttpServletResponse resp, String str)throws ServletException, IOException{
resp.sendRedirect("./login?err=" + URLEncoder.encode(str,"UTF-8"));
}
}
3.创建跳转失败页面fall.jsp,成功页面main.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
登入失败,原因:<%=request.getAttribute("msg")%> 请重新<a href="login">登入</a>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
这是主页面,欢迎<%=((User)session.getAttribute("user")).getNickname()%>
</body>
</html>
4.创建User.java,使用构造方法
package cn.edu.mju.project1.entity;
import java.util.Date;
public class User {
private Integer id;//Integer默认值是null
private String name;
private String pwd;
private String nickname;;
private Date birthday;
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;
}
}
5.创建UserService.java
package cn.edu.mju.project1.service;
import cn.edu.mju.project1.entity.User;
public class UserService {
public User login(String loginName, String pwd){
//通过loginName条件到数据库中查询此用户信息
User saveUser =new User(1,"50","123","陈",null);
if(saveUser != null && saveUser.getName().equals(loginName)
&& saveUser.getPwd().equals(pwd)){
return saveUser;
}else{
return null;
}
}
}
6.创建MainCtroller.java
package cn.edu.mju.project1.controller;
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("/main")
public class MainController extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.getRequestDispatcher("/WEB-INF/template/main.jsp").forward(req,resp);
}
}
二、效果如下:
登入失败:
成功登入: