1.创建一个login表单
<div class="lowin lowin-blue">
<div class="lowin-wrapper">
<div class="lowin-box lowin-login">
<div class="lowin-box-inner">
<form action="costomer?action=logins" method="post">
<H1>登录页面</h1>
<div class="lowin-group">
<label>用户名:</label>
<input type="text" name="cname" class="lowin-input">
</div>
<div class="lowin-group password-group">
<label>密码:</label>
<input type="password" name="pass" class="lowin-input">
</div>
<label>记住用户:</label>
<input type="checkbox" name="userName" value="userName" class="lowin-input">
<label>自动登录:</label>
<input type="checkbox" name="autologin" value="autologin" class="lowin-input" >
<input type="submit" value="登录" class="lowin-btn login-btn">
</form>
</div>
</div>
?2.实现用户登录且校验和自动登录
@WebServlet("/costomer") public class CostomerSevrlet extends BaseServlet{ ?? ?Costomerservice ?s=new CostomerserviceImpl(); ?? ? ?? ?//用户登录 ?? ??? ?public String logins(HttpServletRequest req, HttpServletResponse resp){ ?? ??? ??? ? ? Costomer costomer = ConvertBeanUtils.toBean(req.getParameterMap(), Costomer.class); ?? ??? ??? ? ?Costomer c= s.queryLogins(costomer.getCname()); ?? ??? ??? ? ?String autologin = req.getParameter("autologin"); ?? ??? ??? ? ?HttpSession session = req.getSession(); ?? ??? ??? ? ?if(c!=null){ ?? ??? ??? ??? ? if(costomer.getPass().equals(c.getPass())){ ?? ??? ??? ??? ??? ? if(c.getStatus()==1){ ?? ??? ??? ??? ??? ??? ? //说明用户勾选了自动登录 ?? ??? ??? ??? ??? ??? ? if("autologin".equals(autologin)){ ?? ??? ??? ??? ??? ??? ??? ? //把账号和密码存在cookie里面 ?? ??? ??? ??? ??? ??? ??? ? Cookie u=new Cookie("u",c.getCname()); ?? ??? ??? ??? ??? ??? ??? ? Cookie p=new Cookie("p",c.getPass()); ?? ??? ??? ??? ??? ??? ??? ? u.setMaxAge(60*60*24*7); ?? ??? ??? ??? ??? ??? ??? ? p.setMaxAge(60*60*24*7); ?? ??? ??? ??? ??? ??? ??? ? //响应到客户端 ?? ??? ??? ??? ??? ??? ??? ? resp.addCookie(u); ?? ??? ??? ??? ??? ??? ??? ? resp.addCookie(p); ?? ??? ??? ??? ??? ??? ??? ??? ??? ? ?? ??? ? ?? ??? ??? ??? ??? ??? ? } ?? ??? ??? ??? ??? ??? ? //登录成功把c对象存到session作用域 ?? ??? ??? ??? ??? ??? ? session.setAttribute("c", c); ?? ??? ??? ??? ??? ??? ? //如何为1表示已激活 ?? ??? ??? ??? ??? ??? ? return "r:index.jsp"; ?? ??? ??? ??? ??? ? }else{ ?? ??? ??? ??? ??? ??? ? //未激活 ?? ??? ??? ??? ??? ??? ? return "r:error.jsp?msg=m"; ?? ??? ??? ??? ??? ? } ?? ??? ??? ??? ? } else{ ?? ??? ??? ??? ??? ? //密码错误 ?? ??? ??? ??? ??? ? return "r:error.jsp?msg=log"; ?? ??? ??? ??? ? } ?? ??? ??? ??? ? ? ?? ??? ??? ? ?}else{ ?? ??? ??? ??? ? ?//用户或者邮箱不存在 ?? ??? ??? ??? ? ?return "r:error.jsp?msg=u"; ?? ??? ??? ? ?} ?? ??? ??? ? ?? ??? ?}
3.根据mvc架构
@Override ?? ?public Costomer queryLogins(String cname) { ?? ??? ?try { ?? ??? ??? ?//多条件查询 ?? ??? ??? ?String sql ="select * from customer where cname=? or email=?"; ?? ??? ??? ?return run.query(sql, new BeanHandler<Costomer>(Costomer.class), cname,cname); ?? ??? ?} catch (SQLException e) { ?? ??? ??? ?throw new RuntimeException(e.getMessage()); ?? ??? ?} ?? ?}
4.自动登录
@Override ?? ?public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) ?? ??? ??? ?throws IOException, ServletException { ? ? ? ? ? ? ? HttpServletRequest req=(HttpServletRequest) request; ? ? ? ? ? ? ? HttpServletResponse resp=(HttpServletResponse) response; ? ? ? ? ? ? ? HttpSession session = req.getSession(); ? ? ? ? ? ? ? Costomer costomer = (Costomer) session.getAttribute("c"); ? ? ? ? ? ? ? String user=""; ? ? ? ? ? ? ? String pass=""; ? ? ? ? ? ? if(costomer==null){ ? ? ? ? ? ? ?? ?//先从cookie取值 ? ? ? ? ? ? ?? ?Cookie[] cookies = req.getCookies(); ? ? ? ? ? ? ?? ?//如果不为空,遍历 ? ? ? ? ? ? ?? ?if(cookies!=null){ ? ? ? ? ? ? ?? ??? ?for (Cookie cookie : cookies) { ?? ??? ??? ??? ??? ??? ? ? if("u".equals(cookie.getName())){ ?? ??? ??? ??? ??? ??? ??? ? ? user+=cookie.getValue(); ?? ??? ??? ??? ??? ??? ? ? } ?? ??? ??? ??? ??? ??? ? ? if("p".equals(cookie.getName())){ ?? ??? ??? ??? ??? ??? ??? ? ? pass+=cookie.getValue(); ?? ??? ??? ??? ??? ??? ? ? } ?? ??? ??? ??? ??? ?} ? ? ? ? ? ? ?? ?} ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ?? ?//判断密码和账号是否正确 ? ? ? ? ? ? ?? ?Costomerservice s=new CostomerserviceImpl(); ? ? ? ? ? ? ?? ?Costomer c = s.queryLogins(user); ? ? ? ? ? ? ?? ?//如果用户不等于空判断密码是否相等如果相等判断状态码是否为1如果为1表示已激活 ? ? ? ? ? ? ? ?if(c!=null){ ? ? ? ? ? ? ?? ? ? if(c.getPass().equals(pass)){ ? ? ? ? ? ? ?? ??? ? ? if(c.getStatus()==1){ ? ? ? ? ? ? ?? ??? ??? ? ? //账号和密码正确 ? ? ? ? ? ? ?? ??? ??? ? ? session.setAttribute("c", c); ? ? ? ? ? ? ?? ??? ? ? } ? ? ? ? ? ? ?? ? ? } ? ? ? ? ? ? ?? ? ?? ? ? ? ? ? ? ? ?}else{ ? ? ? ? ? ? ?? ? ? //如果密码或者账号错误或者状态码为0都跳转到登录界面 ? ? ? ? ? ? ?? ? ? resp.sendRedirect(req.getContextPath()+"/login.jsp"); ? ? ? ? ? ? ? ?} ? ? ? ? ? ? ?? ? ? ? ? ? ? ? } ? ? ? ? ? ? //如果不为空直接放行 ?? ??? ?chain.doFilter(req, resp); ?? ?}
|