1 核心逻辑代码
public static void remember(HttpServletRequest request, HttpServletResponse response, String logonName, String logonPwd) { try { logonName = URLEncoder. encode(logonName, "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } Cookie nameCookie = new Cookie( "name",logonName); Cookie passwordCookie = new Cookie( "password",logonPwd); nameCookie.setPath(request.getContextPath()+ "/"); passwordCookie.setPath(request.getContextPath()+ "/"); String remeberMe = request.getParameter( "remeberMe"); if(remeberMe!= null && remeberMe.equals( "yes")){ nameCookie.setMaxAge(7*24*60*60); passwordCookie.setMaxAge(7*24*60*60); } else{ nameCookie.setMaxAge(0); passwordCookie.setMaxAge(0); } response.addCookie(nameCookie); response.addCookie(passwordCookie); }
}
|
2 创建自定义过滤器,实现doFilter方法。
3 获取访问页面时,需要先执行filter的页面路径
String path=request.getServletPath();
|
4 在访问menu/index.jsp页面之前,先加载记住我的功能属性,放置到request对象中,在index.jsp中进行显示
private void forwardIndexPage (String path, HttpServletRequest request) { if(path!= null && path.equals( "/index.jsp")){ String name = ""; String password = ""; String checked = ""; Cookie [] cookies = request.getCookies(); if(cookies!= null && cookies. length>0){ for(Cookie cookie:cookies){ if(cookie.getName().equals( "name")){ name = cookie.getValue(); try { name = URLDecoder. decode(name, "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } checked = "checked"; } if(cookie.getName().equals( "password")){ password = cookie.getValue(); } } } request.setAttribute( "name", name); request.setAttribute( "password", password); request.setAttribute( "checked", checked); } }
|
5 在web.xml中添加过滤器,要放在struts核心拦截器前,防止struts拦截器转发