index.jsp
注: 用户登录成功之后 , 显示的状态.
<div class="col-md-3" style="padding-top:20px">
<ol class="list-inline">
<%
// 获取到用户的状态.
Users user = (Users) session.getAttribute("user");
// 判断是否为空
if (user!=null){
out.print("<font color=red>"+user.getName()+"</font>·欢迎你!");
}else {
out.print("<li><a href=\"login.jsp\">登录</a></li>\n" +
"<li><a href=\"register.htm\">注册</a></li>");
}
%>
<li><a href="cart.htm">购物车</a></li>
</ol>
</div>
login.jsp
注: 错误信息的显示位置.
<div style="color: red">
<%
out.print(session.getAttribute("msg")==null ? "" : session.getAttribute("msg"));
%>
</div>
CodeServlet.java
注: CodeServlet代码可看: https://blog.youkuaiyun.com/qq_42986107/article/details/83016747
// 获取图片上的验证码 , 设置session中.
request.getSession().setAttribute("sessionCode",msg);
LoginServlet.java(要点)
注: 在之前登录的基础上,添加验证码 验证功能.
https://blog.youkuaiyun.com/qq_42986107/article/details/83013194
分析:
验证码为空: 提示用户验证码不能为空.
验证码错误: 提示用户验证码错误.
用户名或密码错误: 提示用户.
登录成功: 跳转到登录页面.
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 设置响应的编码格式
response.setContentType("text/html; charset=utf-8");
//////////////////////添加验证码 start ////////////////////////
// 获取session对象.
HttpSession session = request.getSession();
// 获取用户输入的验证码 .
String parmeCode = request.getParameter("parmeCode");
// 拿到session中保存的验证码
String sessionCode = (String) request.getSession().getAttribute("sessionCode");
session.removeAttribute("sessionCode");
if(sessionCode==null){
session.setAttribute("msg","请重新获取验证码...");
response.sendRedirect(request.getContextPath()+"/login.jsp");
return;
}
// 先判断验证码是否输入.
if (parmeCode == null || parmeCode.trim().length() == 0) {
// 如果没有输入 , 提示用户 验证码不能为空.
session.setAttribute("msg", "验证码不能为空 , 请输入验证码!");
// 重定向到登录页面.
response.sendRedirect(request.getContextPath() + "/login.jsp");
return;
}
// 判断输入的验证码是否正确
if (!parmeCode.equalsIgnoreCase(sessionCode)) {
// 如果输入错误,提示用户 验证码错误.
session.setAttribute("msg", "验证码错误 , 请重新输入!");
// 重定向到登录页面
response.sendRedirect(request.getContextPath() + "/login.jsp");
return;
}
//////////////////////验证码 end ////////////////////////
// 1. 获取账号密码.
String username = request.getParameter("username");
String password = request.getParameter("password");
// 2. 调用service方法 , login
UsersService ls = new UsersService();
Users user = ls.login(username, password);
// 3. 判断user是否为空.
if (user != null) {
response.getWriter().print("<h1>恭喜" + username + ",登录成功...</h1>");
response.sendRedirect(request.getContextPath()+"/index.jsp");
// 保留用户状态.
session.setAttribute("user",user);
} else {
// 开始验证用户和密码
session.setAttribute("msg","账号或密码错误,请重新输入!");
// 重定向到登录页面
response.sendRedirect(request.getContextPath()+"/login.jsp");
return;
}
}
}