`

java 过滤未登录的用户

    博客分类:
  • java
阅读更多

  <filter> 
    <filter-name>onlineFilter</filter-name> 
    <filter-class>com.filter.OnlineFilter</filter-class> 
     <init-param>
  <param-name>notCheckURLList</param-name>
  <param-value>/userManager.do</param-value>
  </init-param>
</filter> 
 
<filter-mapping> 
    <filter-name>onlineFilter</filter-name> 
    <url-pattern>*.do</url-pattern> 
</filter-mapping> 

 

 

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.RequestDispatcher;
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 OnlineFilter  implements Filter {
 private static final long serialVersionUID = 1L;
 
 private List notCheckURLList = new ArrayList();

 public void init(FilterConfig filterConfig) throws ServletException {
  String notCheckURLListStr = filterConfig.getInitParameter("notCheckURLList");
   if (notCheckURLListStr != null) {
             StringTokenizer st = new StringTokenizer(notCheckURLListStr, ";");
             notCheckURLList.clear();
             while (st.hasMoreTokens()) {
                 notCheckURLList.add(st.nextToken());
             }
         }
 }

 public void doFilter(ServletRequest request, ServletResponse response,
   FilterChain chain) throws IOException, ServletException {
  RequestDispatcher dispatcher = request
    .getRequestDispatcher("login.jsp");// 这里设置如果没有登陆将要转发到的页面
  HttpServletRequest req = (HttpServletRequest) request;
  HttpServletResponse res = (HttpServletResponse) response;
  HttpSession session = req.getSession(true);

  // System.out.println(((HttpServletRequest) request).getRequestURI());
  // 从session里取的用户名信息
  String username = (String) session
    .getAttribute("userId");// 这里获取session,为了检查session里有没有保存用户信息,没有的话回转发到登陆页面
  if(username==null){
   username = request.getParameter("userId");
   session.setAttribute("userId", username);
  }
  // 判断如果没有取到用户信息,就跳转到登陆页面
    if ((checkRequestURIIntNotFilterList(req))
                 && username == null) {
     chain.doFilter(request, response);
         }
  if (username == null || "".equals(username)) {
   // 跳转到登陆页面
   response.setCharacterEncoding("GBK");
         PrintWriter out=null;
          try{
     out= response.getWriter();
    } catch(Exception e){e.printStackTrace();}
    out.println("<script>location.href='login.jsp';</script>");
   // System.out.println("用户没有登陆,不允许操作");
   res.setHeader("Cache-Control", "no-store");
   res.setDateHeader("Expires", 0);
   res.setHeader("Pragma", "no-cache");
  } else {
   // 已经登陆,继续此次请求
   chain.doFilter(request, response);
   // System.out.println("用户已经登陆,允许操作");
  }
 }

    public void destroy() {
        notCheckURLList.clear();
    }

    private boolean checkRequestURIIntNotFilterList(HttpServletRequest request) {
        String uri = request.getServletPath()
                + (request.getPathInfo() == null ? "" : request.getPathInfo());
        boolean url =  notCheckURLList.contains(uri);
        return url;
    }

}

分享到:
评论

相关推荐

    Java过滤器,字符过滤,标签过滤

    首先,让我们了解一下Java过滤器的基础知识。在Java Servlet规范中,Filter接口定义了过滤器的行为。一个过滤器可以通过实现`doFilter()`方法来拦截请求和响应,并对其进行处理。通过在web.xml配置文件中定义过滤器...

    JAVA过滤器标准代码

    ### JAVA过滤器标准代码解析与应用 在Java Web开发中,过滤器(Filter)是一种用于拦截请求和响应的重要机制,可以实现对用户请求的预处理和后处理,以及对响应的处理。本文将深入解析“JAVA过滤器标准代码”,探讨...

    java协同过滤推荐算法

    - 预测评分:对目标用户未评分的物品,利用相似度计算预测其可能的评分。 - 推荐生成:选择预测评分最高的若干物品作为推荐结果。 4. 优点:协同过滤算法简单易懂,能够捕捉用户的实时兴趣变化,且适用于大规模...

    java敏感词过滤功能

    在Java开发中,实现敏感词过滤功能是一项常见的需求,特别是在社交媒体、论坛或评论系统中,以防止用户发布不当或违规内容。本项目的核心是通过Java编程实现敏感词的检测和替换,确保信息的安全和合规性。 `...

    java过滤html代码

    在Java编程中,"java过滤html代码"是一个常见的需求,主要目的是为了安全考虑,比如防止XSS(跨站脚本攻击)或者为了提取纯文本内容。这个任务可以通过使用正则表达式来实现,正如描述中提到的那样。下面我们将详细...

    accp java过滤器 PPT

    - **权限验证**:过滤器可以检查用户是否已登录,未登录的请求会被拦截。 - **字符编码转换**:确保请求和响应的数据使用正确的字符编码。 - **日志记录**:记录用户请求和响应信息,便于分析和调试。 - **性能...

    基于用户协同过滤算法代码实现Java

    - **预测评分**:对于目标用户未评分的电影,UCF会找到与其最相似的一些用户,然后根据这些用户的评分预测目标用户对该电影的评分。 - **Top-N推荐**:根据预测评分,为每个用户推荐N个未评价但预测评分最高的项目...

    servlet过滤器验证用户登录

    如果`username`不存在或为空,即用户未登录,则重定向到登录页面;反之,则允许请求继续通过`FilterChain`传递给目标资源。 3. **销毁**:`destroy()`方法用于在Web应用停止或过滤器被卸载时释放资源,本例中未做...

    java-根据过滤条件显示树形结构

    未通过过滤的节点将不会在视图中出现。 5. **显示树形结构**:使用`JTree`组件,将过滤后的节点列表传递给它。可以设置`TreeModel`来改变树的结构,并通过监听`TreeModelListener`来实时更新视图。 在这个过程中,...

    SQL注入过滤 (Java版)

    为了解决这个问题,我们可以创建一个名为`SqlInjectionFilter`的Java过滤器,该过滤器将在HTTP请求到达实际处理请求的Servlet之前运行。过滤器的主要任务是检查请求参数,确保它们不包含任何可能导致SQL注入的恶意...

    JAVA过滤器及原理

    Java过滤器(Filter)是Java Web开发中的一个重要概念,它主要应用于Servlet容器中,如Tomcat、Jetty等。过滤器允许我们在数据处理前后插入自定义逻辑,对请求和响应进行拦截、修改或增强。本教程将深入讲解Java过滤...

    java过滤器的使用

    Java过滤器(Filter)是Java Web开发中的一个重要概念,它主要应用于Servlet容器中,如Tomcat、Jetty等。过滤器允许我们在请求被发送到目标资源(如Servlet、JSP页面)之前或之后进行预处理和后处理。在这个场景中,...

    Filter-四个有用的Java过滤器

    - `redirectURL`:如果用户未登录,重定向的URL(不包括ContextPath)。 - `notCheckURLList`:一个以分号分隔的URL列表,表示这些URL不需要进行登录检查(同样不包含ContextPath)。 过滤器检查每个请求的...

    用户登陆过滤器

    在这个过滤器中,我们可以看到它主要由两部分组成:一部分是web.xml中的配置,另一部分是Java代码中的实现。 首先,在web.xml中,我们可以看到filter的配置,包括filter-name和filter-class两个参数。filter-name是...

    java日志文件过滤

    3. **过滤条件设置**:用户可以设定过滤规则,比如只显示ERROR级别的日志,或者只显示包含特定关键字的日志。这些条件通常通过构造函数或配置文件传递给程序。 4. **过滤操作**:根据设定的规则,FilterFile会遍历...

    java 常用过滤器

    `CheckLoginFilter` 过滤器用于检查用户是否已登录,如果未登录则重定向到登录页面。配置参数包括 `checkSessionKey`,用于检查的会话(Session)关键字;`redirectURL`,未登录时重定向的URL(不包含ContextPath)...

    JAVA登录拦截器,查看用户是否登录过,未登录禁止访问页面

    如果用户未登录,则拦截器会重定向用户到登录页面;如果已登录,则放行请求,让用户可以正常访问资源。 #### 三、实现细节 以下是对给定代码片段的详细解析: 1. **包声明与导入** ```java package util; ...

    java过滤器

    ### Java过滤器实现原理与应用 #### 过滤器概述 在Java Web开发中,过滤器(Filter)是一种非常实用的技术,它可以在客户端发送请求到服务器端的过程中进行一系列的预处理工作,比如设置字符编码、身份认证等。...

    使用Java原生jdk实现的协同过滤推荐系统

    协同过滤的核心思想是通过分析用户的历史行为(如购买记录、评分、浏览历史等),找出具有相似行为模式的用户群体,然后将这些用户喜欢的但目标用户还未接触过的物品推荐给目标用户。协同过滤可分为用户-用户协同...

    java的xxsProtect过滤xss

    XSS攻击是一种常见的网络安全问题,攻击者通过注入恶意脚本,利用用户浏览器执行,从而窃取用户的敏感信息,如cookies、登录凭证等。XXSProtect通过过滤输入数据,防止恶意代码在网页上被执行。 在提供的描述中,...

Global site tag (gtag.js) - Google Analytics