Filter----自动登录

来源:互联网 发布:货标打印软件 编辑:程序博客网 时间:2024/05/21 00:20
Filter 相关知识点-----自动登录
index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"  prefix="c"%>
  <body>
  <c:if test="${empty name}" var="boo"><!-- 没有登录才显示 from表单-->
    <form action="<c:url value='/AutoServlet'/>" method="post">
    Name:<input type="text" name="name"/><br/>
    Pwd:<input type="password" name="pwd"/><br/>
    <input type="radio" name="time" vaule="0" />不自动登录
    <input type="radio" name="time" vaule="1" />1天
    <input type="radio" name="time" vaule="7" />1周<br/>
    <input type="submit" value="登录"/>
    </form>
  </c:if>
  <c:if test="!boo">
  </c:if>
  </body>
总结:
<!-- Filter:优先级高;项目一启动就初始化;只要看到request和 response就会自动
  进入Filter;根据其配置的URL看是不是他想拦截过滤的资源;不是就放行;是就进过处理再放行-->
  <!-- 第一次请求index.jsp界面:没有cookie(AutoLogin);没有session(name)
  先进入filter,是执行chain.doFilter();访问LoginServlet;登录成功后添加 session(name)
  cookie(AutoLogin)-->
  <!-- 第二次请求index.jsp(没关浏览器)界面:有cookie(AutoLogin);有session(name)
  进入filter进入拦截功能,这时Filter会来做登录的操作;再chain.doFilter()-->
  <!-- 第三次请求index.jsp(关浏览器)界面:有cookie(AutoLogin);没有session(name)
  先进入filter进入拦截功能,这时Filter会来找cookie(AutoLogin)做登录的操作;再chain.doFilter()-->

AutoServlet.java(cn.hucu.servlet包)
public class AutoLogin extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String name=request.getParameter("name");
String pwd=request.getParameter("pwd");
String stime=request.getParameter("time");
if(name.contains("hncu")){
//这里本来是调用dao层;
request.getSession().setAttribute("name", name);
}
//--------------自动登录----------------
name=URLEncoder.encode(name, "utf-8");
pwd=URLEncoder.encode(pwd, "utf-8");
Cookie c=new Cookie("AutoLogin", name+"@#"+pwd);
c.setPath("/");
int time=60*60*24*(Integer.valueOf(stime));
c.setMaxAge(time);//设置cookie的生命周期
response.addCookie(c);
}
}
AutoLoginFilter.java(cn.hucu.filter包)
public class AutoLoginFilter implements Filter{
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req=(HttpServletRequest) request;
if(req.getSession().getAttribute("name")==null){
Cookie cookies[]=req.getCookies();
if(cookies!=null){
for(Cookie c:cookies){
if("AutoLogin".equals(c.getName())){
//来做的登录的事
String vals[]=c.getValue().split("@#");
String name=URLDecoder.decode(vals[0], "utf-8");
String pwd=URLDecoder.decode(vals[1], "utf-8");
if(name.contains("hncu")){
//转到登录后的界面
}
}
}
}
}
chain.doFilter(request, response);
}

}

//注释仅仅代表个人观点

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手机百度用微盘下载不了文件怎么办 无法读取源文件或磁盘怎么办 文件中转站未安装上传控件怎么办 手机外国网址网速太差怎么办 istpng里显示不出图片怎么办 电脑上保持登录状态后怎么办 电脑打游戏闪退怎么办 实训老师教不好怎么办 善心汇损失的钱怎么办 去陌生的地方怕传销怎么办 被执行人不提供财产线索怎么办 宽带ip地址改了怎么办 移动宽带恢复出厂设置了怎么办 移动100兆网速慢怎么办 手机显示无法解析dns地址怎么办 台式电脑宽带连接不上怎么办 电信宽带账号登录密码忘记了怎么办 电信校园宽带超时了怎么办 宽带连接账号密码忘了怎么办 移动宽带路由器上不了网怎么办 移动宽带太卡了怎么办 电信adsl密码忘记了怎么办 移动宽带无法连接网络怎么办 移动宽带电视无信号怎么办 联通网线故障电话打不通怎么办 w10系统ip地址错误怎么办 移动流量太贵了怎么办 修改wifi密码ip地址怎么办 苹果6s接电话声音小怎么办 k歌录音器失败怎么办 想报警但不能说话怎么办 微粒贷要家人电话怎么办 4g网络信号差怎么办 手机移动网络信号不好怎么办 移动的4g网络差怎么办 4g移动网络慢怎么办 房间没有4g网络怎么办 oppo显示2g网络怎么办 oppo只有2g网络怎么办 移动卡4g网络慢怎么办 易信专线电话用完了怎么办