java验证用户是否已经登录 java实现自动登录_java

本文为大家分享了java验证用户是否已经登录与实现自动登录的详细代码,供大家参考,具体内容如下

1、验证用户是否已经登录

package cn.hongxin.filter;

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.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

public class LoginFilter implements Filter{

  public void init(FilterConfig filterConfig) throws ServletException {

  }

  public void doFilter(ServletRequest request, ServletResponse response,

      FilterChain chain) throws IOException, ServletException {

    //将request强转成htt...

    HttpServletRequest req = (HttpServletRequest) request;

    //获取session

    HttpSession ss = req.getSession();

    //从session中获取user

    if(ss.getAttribute("user")==null){

      System.err.println("你还没有登录");

      req.getSession().setAttribute("msg", "请你先登录");

      //重定向到登录

      HttpServletResponse resp = (HttpServletResponse) response;

      resp.sendRedirect(req.getContextPath()+"/index.jsp");[W2] 

    }else{

      //放行

      chain.doFilter(request, response);

    }

  }

  public void destroy() {

  }

}

配置到web.xml中且对jsps/*进行过虑:

<filter>

  <filter-name>login</filter-name>

  <filter-class>cn.itcast.filter.LoginFilter</filter-class>

 </filter>

 <filter-mapping>

  <filter-name>login</filter-name>

  <url-pattern>/jsps/*</url-pattern>

  <url-pattern>/views/*</url-pattern>

 </filter-mapping>

2、实现自动登录 

自动登录,是为了帮助用户多次使用这个网页时,不用再次输入用户名和密码就可以登录。

是指用户将用户的登录信息,人,保存到本地的文件中Cookie中。

 Name,value – 声明时 new Cookie(key,value);

 Path        - 默认值,即为当前保存cookie的这个serlvet所在的路径。

如果Cookie在这样的路径:http://loclhost:8080/project/abc/AServlet,则Cookie的路径为: http://loclhost/project/abc

 则说明:

所在在http://loclhost/project/abc目录下的servlet才可以读取这个cookie的值。

如果:

保存Cookie类:http://loclhost:8080/project/a/b/AServlet,则Cookie的默认path为;http://loclhost/project/a/b

第一步:开发一个登录页面

<c:choose>

  <c:when test="${empty sessionScope.name}">

    <form name="x" method="post" action="<c:url value='/LoginServlet'/>">

      Name:<input type="text" name="name"/><br/>

      auto:

      <input type="radio" name="auto" value="-1">不自动登录

      <br/>

      <input type="radio" name="auto" value="1">1天<br/>

      <input type="radio" name="auto" value="7">1周<br/>

      <input type="submit"/>

    </form>

  </c:when>

  <c:otherwise>

    你已经登录了:${name}<br/>

    <a href="<c:url value='/LoginServlet'/>">退出</a>

  </c:otherwise>

</c:choose>

第二步:成功保存cookie

  public void doPost(HttpServletRequest request, HttpServletResponse response)

      throws ServletException, IOException {

    //接收用户姓名

    String name = request.getParameter("name");

    String auto = request.getParameter("auto");

    //将用户信息放到session

    request.getSession().setAttribute("name",name);

    //判断auto是否是-1

    if(!auto.equals("-1")){

      int day = Integer.parseInt(auto);//1|7

      int seconds = 60*60*24*day;

      //声明cookie

      Cookie c = new Cookie("autoLogin",name);

      c.setMaxAge(seconds);

      c.setPath(request.getContextPath());

      //保存cookie

      response.addCookie(c);

    }

  }

第三步:要求访问本网点中任何一个页面都应该实现自动登录

写一个过虑器,对所有url=/*进行过虑。在doFilter中读取所有cookie。是否存在名称为autoLogin的名称cookie。

永远都放行。

 

public void doFilter(ServletRequest request, ServletResponse response,

      FilterChain chain) throws IOException, ServletException {

    //在这儿读取cookie

    HttpServletRequest req = (HttpServletRequest) request;

    //获取所的有cookie

    Cookie[] cs = req.getCookies();

    if(cs!=null){

      for(Cookie c:cs){

       if(c.getName().equals("autoLogin")){//如果存在自动登录的cookie

         String value = c.getValue();//用户名称

         //登录成功是指

         req.getSession().setAttribute("name", value);

         break;

       }

      }

    }

    //不管是否自动登录成

    chain.doFilter(request, response);

  }

第四涉:配置到web.xml中对所有url=/*

<filter>

  <filter-name>auto</filter-name>

  <filter-class>cn.itcast.filter.AutoFilter</filter-class>

 </filter>

 <filter-mapping>

  <filter-name>auto</filter-name>

  <url-pattern>/*</url-pattern>

 </filter-mapping>

 第五步:开发退出

System.err.println("用户退出");

    //删除整个session

    request.getSession().invalidate();

    Cookie c = new Cookie("autoLogin", "ddd");

    c.setMaxAge(0);

    c.setPath(request.getContextPath());

    response.addCookie(c);

//   request.getSession().removeAttribute("name");

    response.sendRedirect(request.getContextPath()+"/index.jsp");

第六步:优化代码

    由于用户在做手工登录时,也会进入AutoFiilter的doFilter方法,且读取所有Cookie遍历一次。而这次遍历对用户来说是多余。

    所以应该将LoginServet这个url在doFiler中不过过虑。

    且对退出也不能自动登录。

以上就是本文的全部内容,希望对大家的学习有所帮助。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java自动登录
java实现验证用户登录、java登录验证码实现、ajax实现用户登录验证、ssh实现用户登录验证、java实现ldap登录验证,以便于您获取更多的相关知识。

时间: 2024-09-13 08:49:02

java验证用户是否已经登录 java实现自动登录_java的相关文章

java实现扫描条码上的工号后自动登录如何实现?

问题描述 我以前没有接触过条码扫描,本人现在在做一个系统,现在有个功能是用条码扫描枪扫描条码后就登录成功,想知道是怎么实现的?是不是还有写什么接口?还需要什么开发包吗? 解决方案 解决方案二:帮顶吧解决方案三:这个不就简单吗,一个程序专门用来获取设备扫描过来的数据,获取数据之后进行查询比对,找到之后进行自动登录.呵呵~~可能我理解有误?

Win8怎么设置自动登录,Win8自动登录设置方法

电脑只有一个人使用时,每次开机就不需要输入密码,清除密码能实现自动登录系统,除此之外还有什么方法可以实现呢,本教程为大家介绍在win8中怎么设置自动登录方法. 方法一: 右键点击"开始"--"运行"打开运行对话框. 在运行对话框中输入"Rundll32 Netplwiz.dll,UsersRunDll"命令,点击确定.打开用户账户对话框 把"要使用本计算机,用户必须输入用户名和密码"选框的勾选取消掉.电脑常识 方法二: 右键点

phpMyAdmin自动登录和取消自动登录的配置方法_php实例

一.如何设置phpMyAdmin自动登录? 首先在根目录找到config.sample.inc.php复制一份文件名改为config.inc.php(如果已经存在 config.inc.php 文件,则直接修改该文件即可).打开config.inc.php 找到 $cfg['Servers'][$i]['auth_type'],将 复制代码 代码如下: $cfg['Servers'][$i]['auth_type'] = 'cookie'; 改成 复制代码 代码如下: $cfg['Servers

ios程序杀掉之后必须重新登录或调用自动登录接口?

问题描述 ios,程序完全杀掉了之后无法收到推送,再次点击程序,处于未登录状态,触发调用自动登录接口才会登录.这样的话是不是代表程序杀掉之后会将token和id解绑?如果这样如何收到离线推送?证书确认是正确的,因为我们后台走APNS直接推送给我能收到,前台.后台.程序杀掉都能收到.登录用户的证书名称也是对的,管理后台上能看到,与程序一致,请问是神马问题? 解决方案 app杀死后账号的devicetoken不会解绑,这样是可以收到离线推送的,只有手动退出登录才会解绑devicetoken,这个时候

ios 设置自动登录之后一直自动登录失败

问题描述 设置为自动登录之后,一直自动登录失败. 解决方案 error不是为空吗?解决方案二:自动登录成功和失败都会回调这个代理.error为空就是成功.

更改vss默认登录名或自动登录教程

最简单的办法: 右键点 Microsoft Visual SourceSafe 6.0 启动的快捷方式,属性,修改目标栏 用 -y 参数输入用户名和密码(无密码的可以只输入和用户名,在-y之前加个空格) 最方便,可随时修改(用这个方法还可以通过多个快捷方式登录不同权限的用户),推荐. "C:\Program Files\Microsoft Visual SourceSafe\ssexp.exe" -yMyName,MyPassword 比如我的截图

电脑怎么掉登录密码开机自动登录设置

1.在开始菜单搜索框输入"rundll32 netplwiz.dll,UsersRunDll"(Windows7下可以输入"netplwiz")按回车,打开高级用户控制面板: 2.在高级用户控制面板中,取消对"要使用本机,用户需输入用户名和密码(E)"项的勾选: 3.系统将弹出窗口要求输入默认登录系统的用户名和密码,输入完成后点击确定: 4.重启Windows,即可发现系统自动以默认用户登录.

JavaWeb-过滤器Filter学习(三)实现用户的自动登录与IP黑名单过滤

实现用户的自动登录: 解决方案: 设置一个全站拦截的过虑器. 在此过虑器中,读取用户带过来的Cookie信息,然后从中读取用户的用户名和密码,自动帮助用户登录. 即可实现自动登录功能. 用Filter验证用户是否已经登录过.已经登录过了,我们就根据他选择的自动登录来选择让他在多久内能自动登录. IP黑名单过滤就很简单了,只要在Filter过滤器防范一下就OK. 在init方法中,我们先把黑名单的IP加载进Set<String> set集合, Set集合有如下特点: Java.util.Hash

详解JavaEE使用过滤器实现登录(用户自动登录 安全登录 取消自动登录黑用户禁止登录)_java

在我们生活中,对于账户的自动登录已经很常见了,所以利用过滤器实现这个功能. 主要介绍用户的自动登录和取消自动登录,以及实现一天自动登录或者n天实现自动登录,当用户ip被加入到黑名单之后,直接利用过滤器返回一个警告页面. 过滤器的功能很是强大,我们只需要在写好的前台后servlet之后进行添加就可以实现这个功能 Ps:这个仅仅只是一个演示而已,里面的访问数据库的部分,自己随意模拟了下,主要是突出实现自动登录的功能. 前台代码: 前台代码是成功与否都在这个页面显示.用到的技术:jstl标签的应用,s