站点经常使用的记住我,或是一周内自己主动登录,这些功能一般都是是用cookie进行登录的!以下对此功能进行分析:

package cookielogin;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class CookieLogin implements Filter { private static final String USERNAME = "username";
private static final String PASSWORD = "password"; @Override
public void destroy() {
// TODO Auto-generated method stub } @Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response; Cookie username = this.getCookie(req, USERNAME);
Cookie password = this.getCookie(req, PASSWORD); if (null != username && null != password) { System.out.println("用户登录");
// userService.login(username.getValue,password.getValue());
System.out.println("username:" + username.getValue() + ",password:"
+ password.getValue()); } else {
//保存cookie
resp.setCharacterEncoding("UTF-8"); Cookie nameCookie = new Cookie(USERNAME, "username"); Cookie passCookie = new Cookie(PASSWORD, "password"); resp.addCookie(nameCookie);
resp.addCookie(passCookie);
}
chain.doFilter(req, resp);
} public Cookie getCookie(HttpServletRequest request, String cookieName) { Cookie[] cookies = request.getCookies(); if (null == cookies) {
return null;
} for (Cookie c : cookies) {
if (c.getName().equals(cookieName)) {
return c;
}
} return null;
} @Override
public void init(FilterConfig arg0) throws ServletException { } }

測试时须要在web.xm增加拦截器!

最新文章

  1. 百度api短信开发
  2. sql2000添加表注释,列注释 及修改 删除 注释
  3. android 资讯阅读器(二)
  4. mysql简介
  5. Escape Sequences
  6. 剑指Offer:面试题17——合并两个排序的链表
  7. Querying mergeinfo requires version 3 of the FSFS filesystem schema
  8. 《DDNS服务器的搭建和案例解决方法》
  9. [转]IIS7.5 添加expires头 提高性能
  10. Linux 自动更新时间
  11. Delphi 调试BPL包中引用另外的BPL的方法。
  12. C 本地文件夸网文件Cp操作
  13. POJ 2533-Longest Ordered Subsequence(DP)
  14. NHProfiler使用方法
  15. chrome的功能Copy as cURL
  16. javascript的字符串操作
  17. 获取登陆用户的ip
  18. AI数据分析(二)
  19. python 实现wav的波形显示(时域和频域)
  20. 二十、Linux 进程与信号---非局部跳转

热门文章

  1. SDK应该包括什么东西
  2. [Node] Define MongoDB Model with Mongoose
  3. [Node.js] Provide req.locals data though middleware
  4. Linux下多线程查看工具(pstree、ps、pstack),linux命令之-pstree使用说明, linux 查看线程状态。 不指定
  5. thinkphp3.2.3 excel导出,下载文件,包含图片
  6. (一)RabbitMQ消息队列-RabbitMQ的优劣势及产生背景
  7. 【77.78%】【codeforces 625C】K-special Tables
  8. LinearLayout的一些注意事项 分类: H1_ANDROID 2013-10-26 23:01 856人阅读 评论(0) 收藏
  9. 最全面的iOS和Mac开源项目和第三方库汇总
  10. jquery修改获取radio的选中项