案例需求描述
案例准备
《登陆页面示例(包含请求转发、重定向解析及MVC应用)》文章中相关资源引入,并修改相应配置,微调。
代码实现——登陆页面完善
- 登录页,登陆成功后添加保存用户信息步骤
//4.页面展示
if(existUser == null) {
//登录失败
//向request域中保存一个错误信息
request.setAttribute("msg", "用户名或密码错误!");
//使用请求转发进行页面跳转
request.getRequestDispatcher("/login.jsp").forward(request, response);
}else {
//登陆成功 重定向
//保存用户登陆数据:保存到会话当中。
HttpSession session = request.getSession();
session.setAttribute("existUser", existUser);
response.sendRedirect("/web_cookie/success.jsp");
}
- 登陆成功页面,登陆判断
<%
if(request.getSession().getAttribute("existUser") == null){
%>
<h1>您还未登录,请先<a href = "/web_cookie/login.jsp">点击登录</a></h1>
<%
}else{
User existUser = (User)request.getSession().getAttribute("existUser");
%>
<h1>用户登录成功页面</h1>
<h3>欢迎您,<%= existUser.getNickname() %></h3>
<%
}
%>
代码实现——一次性验证码
- 百度一个生成一次性验证码图片的servlet文件,做微调,目的是取得生成验证码的字符串,用来校验登录。
- 校验一次性验证码(在loginServlet中)
//一次性验证码的校验
//接收验证码
String checkcode1 = request.getParameter("checkcode");
//从Session中获取一次性验证码的值
String checkcode2 = (String) request.getSession().getAttribute("checkCode");
//为了保证验证码只使用一次,应该将session中的验证码值清空
request.getSession().removeAttribute("checkCode");
//校验一次性验证码
if(!checkcode1.equalsIgnoreCase(checkcode2)) {
request.setAttribute("msg", "验证码输入错误");
request.getRequestDispatcher("/login.jsp").forward(request, response);
return;
}
- 一次性验证码的点击切换
首先在登录页面添加点击事件
其次,利用js函数修改生成图片的src即可,time为了改变提交的参数,防止浏览器读取相同路径的缓存,这样验证码就不会改变了。
代码实现——记住用户名
如果在登陆的过程中,将记住登录名的复选框勾选了,并且在登陆成功的情况下,需要记住用户名,在关闭浏览器下次访问的时候,会在用户名文本框中自动呈现出用户名。
- 后台代码(LoginServlet文件)
//记住用户名的后台代码:
//判断复选框是否已经勾选
String remember = request.getParameter("remember");
if("true".equals(remember)) {
//说明勾选了
Cookie cookie = new Cookie("username", existUser.getUsername());
//设置有效路径:
cookie.setPath("/web_cookie");
//设置有效时长:
cookie.setMaxAge(60*60*24*7); //7天
//cookie回写到浏览器
response.addCookie(cookie);
}
- 在页面的文本框中回显用户名(login.jsp文件,使用EL表达式,添加了value属性)
<tr>
<td>用户名</td>
<td><input type="text" name="username" value="${cookie.username.value}"></td>
</tr>
代码实现——系统退出
- 提供一个退出的链接(success.jsp文件下)
<h1>用户登录成功页面</h1>
<h3>欢迎您,<%= existUser.getNickname() %><a href="/web_cookie/logoutServlet">退出</a></h3>
- 新建logoutServlet文件
//销毁session
request.getSession().invalidate();
//页面跳转
response.sendRedirect("/web_cookie/success.jsp");