`
niedj
  • 浏览: 31036 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

过滤器-登录

阅读更多

        接着昨天的项目继续,在用户登录前是无法浏览网站内的其他页面的,强制用户登录。

        首先,我们需要了解什么是过滤器?过滤器是一个程序,它在与之相关的servlet或JSP页面之前运行在服务器上。过滤器可附加到一个或多个servlet或JSP页面上,并且可以检查进入这些资源的请求信息。在这之后,过滤器可以作如下的选择:
      ①以常规的方式调用资源(即,调用servlet或JSP页面)。
      ②利用修改过的请求信息调用资源。
      ③调用资源,但在发送响应到客户机前对其进行修改。
      ④阻止该资源调用,代之以转到其他的资源,返回一个特定的状态代码或生成替换输出。
       接着,过滤器的基本原理,在Servlet作为过滤器使用时,它可以对客户的请求进行处理。处理完成后,它会交给下一个过滤器处理,这样,客户的请求在过滤链里逐个处理,直到请求发送到目标为止。例如,某网站里有提交“修改的注册信息”的网页,当用户填写完修改信息并提交后,服务器在进行处理时需要做两项工作:判断客户端的会话是否有效;对提交的数据进行统一编码。这两项工作可以在由两个过滤器组成的过滤链里进行处理。当过滤器处理成功后,把提交的数据发送到最终目标;如果过滤器处理不成功,将把视图派发到指定的错误页面。

 

    具体操作如下:

    在src下面添加一个名称为“com.niedj.filters”的package;

    在这个包下面增加一个class,这个类需要继承HttpServlet类,同时还要继承Filter接口,定义一个protected FilterConfig config,在初始化的地方(init方法)里面设置config的值(this.config = filterConfig;)。

    主要过滤的步骤在doFilter方法里完成的。

HttpServletRequest userRequest = (HttpServletRequest) request;
  HttpServletResponse userResponse = (HttpServletResponse) response;
  HttpSession sess = userRequest.getSession();//获取Session,如果登录成功将设置登录用户对象到Session中
  //当前请求页面如果不是登录页面,则检查Session的User属性中是否有内容
  if ("/form/login.jsp".equals(userRequest.getServletPath()))
   chain.doFilter(request, response);
  else {
   //如果没有内容,则说明用户还没有登录过,需要跳转到登录页面
   if (sess == null
     || sess.getAttribute("UserName") == null) {
    System.out.println("用户未登录!");
    userResponse.sendRedirect("http://"+userRequest.getHeader("Host")+userRequest.getContextPath()+"/form/login.jsp");
    return;
   }
   //否则说明用户已登录,继续执行页面请求
   System.out.println("用户已登录!");
   chain.doFilter(request, response);
  }

    在web.xml配置文件里分别增加“filter”和“filter-mapping”的节点

     <filter>
          <filter-name>userLoginedFilter</filter-name>
          <filter-class>com.niedj.filters.UserLoginedFilter</filter-class>
     </filter>
     <filter-mapping>
          <filter-name>userLoginedFilter</filter-name>
          <url-pattern>*.jsp</url-pattern>
     </filter-mapping> 

 

    以下为个人理解,如果有错误的地方还请大家指出来。

  1. “filter”节点主要是在配置文件中定义一个过滤器,设置过滤器的名称,并且指出此过滤器的位置;在这个节点内还可以添加一些初始化参数列表<init-param>
       <param-name>encoding</param-name>
       <param-value>UTF-8</param-value>
      </init-param>节点。
  2. “filter-mapping”节点,是通知网站需要采用何种过滤器(filter-name),过滤什么类型(url-pattern)的文件或内容。

 

分享到:
评论
1 楼 lulan5642 2011-09-07  
终于解决问题了。

相关推荐

    过滤器--控制不同权限用户访问不同文件夹代码.rar

    1. **身份验证**:首先,过滤器需要识别用户身份,这通常通过验证用户的登录凭据(如用户名和密码)来实现。常见的身份验证方法包括基于表单的认证和基于令牌的认证。 2. **权限获取**:一旦用户身份被确认,过滤器...

    Spring MVC过滤器-登录过滤的代码实现

    本文将深入探讨如何实现一个登录过滤器,该过滤器旨在拦截需要登录才能访问的页面,并确保用户已登录才能继续操作。 登录过滤器的主要作用是在用户访问特定资源(如后台管理界面)之前检查其是否已经登录。如果用户...

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

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

    Asp.NetCore示例代码-权限验证-过滤器-设计模式等

    Asp.NetCore中的过滤器类型包括授权过滤器、异常过滤器、结果过滤器和操作过滤器。它们可以全局应用,也可以针对特定控制器或操作进行配置。过滤器机制使得代码复用和逻辑分离变得容易,提高了代码的可维护性。 4. ...

    带过滤器的登录系统jsp+myeclipse+mysql

    标题中的“带过滤器的登录系统jsp+myeclipse+mysql”表明这是一个使用Java服务器页面(JSP)、MyEclipse集成开发环境以及MySQL数据库构建的登录系统,其中整合了过滤器(Filter)技术。这样的系统通常用于实现用户...

    带验证码的登录功能-基于自定义过滤器-demo

    这个"带验证码的登录功能-基于自定义过滤器-demo"项目提供了一个实际的案例,演示了如何在Spring Boot、Spring Security、Mybatis、MySQL和Vue.js集成环境中实现带有验证码的登录功能。以下是对该项目中涉及的技术点...

    过滤器进行登录操作

    在Java Web开发中,过滤器(Filter)是一个强大的工具,常用于实现各种需求,如登录操作的处理。本文将深入探讨如何使用过滤器进行登录操作,以及这一过程中的相关知识点。 首先,我们要理解过滤器的基本概念。在...

    servlet+jsp实现过滤器 防止用户未登录访问

    在本例中,要实现一个简单的登录验证过滤器,可以阻止未登录用户访问除了登录页面以外的其他后台管理页面。通过实现javax.servlet.Filter接口,我们创建了一个LoginFilter类。这个过滤器会在每个请求到达目标页面...

    servlet 过滤器做的简单登陆demo

    如果用户未登录,过滤器将拦截请求并重定向到登录页面。一旦用户成功登录,通常会将用户信息(如用户名或ID)存储在会话(session)中。 3. **Session和Cookie**: - **Session**:在Java Web中,session用于在...

    Servlet过滤器的简单使用源码+文档

    通过这个简单的登录示例,你可以学习到如何利用Servlet过滤器检查用户登录状态,确保只有已登录的用户才能访问特定的受保护资源。过滤器提供了一种灵活的方式来增强应用程序的功能,无需修改原有的Servlet代码,对于...

    servlet过滤器验证用户登录

    在IT领域,特别是Java Web开发中,Servlet过滤器(Filter)是实现用户权限管理、登录状态验证等关键功能的重要机制之一。本文将深入探讨如何利用Servlet过滤器来验证用户是否已登录,以及如何配置过滤器以针对特定的...

    .NET MVC授权过滤器验证登录

    在这个场景中,我们将探讨如何利用授权过滤器来验证用户的登录状态。 首先,了解.NET MVC过滤器的基本概念。过滤器在.NET MVC中扮演着拦截器的角色,可以应用于控制器或特定的动作,执行预处理和后处理任务。主要有...

    使用过滤器实现判断用户是否登录验证.

    在这个场景下,我们讨论的是如何使用过滤器来实现用户登录验证的功能。下面将详细解释这一过程。 首先,我们需要了解过滤器的基本概念。在Java Web应用中,过滤器是实现了javax.servlet.Filter接口的类。它们通过在...

    使用过滤器完成用户登录验证

    在本主题中,我们将重点讨论如何使用过滤器来实现用户登录验证。这在保护网站资源、确保只有已登录的用户才能访问特定页面时尤其重要。 过滤器的工作原理是基于Servlet规范中的Filter接口。当一个HTTP请求到达...

    jsp-14-过滤器

    在Java Web开发中,JSP(JavaServer Pages)是一种用于创建动态网页的技术,而过滤器(Filter)是Servlet规范的一部分,允许我们在请求处理前后插入逻辑,以实现诸如数据验证、字符编码转换、日志记录等功能。...

    servlet过滤器实例经典过滤器

    2. **登录检查过滤器**:此过滤器可以防止未登录用户访问特定资源。通过检查请求中的session信息,如果用户未登录,则重定向到登录页面。 3. **日志过滤器**:记录请求和响应信息,有助于调试和监控应用。在...

    idea+maven+springmvc 登录过滤器

    在IT行业中,构建一个安全的Web应用程序是至关重要的,而登录过滤器和请求拦截器是实现这一目标的关键组件。本文将详细讲解如何使用IntelliJ IDEA(Idea)、Maven和Spring MVC框架来创建一个登录过滤器,以及如何将...

    Java SpringBoot实现的过滤器(和拦截器)控制登录页面跳转

    本项目主要关注的是如何使用过滤器(Filter)和拦截器(Interceptor)来实现登录页面的控制与跳转。以下是对这些知识点的详细说明: 1. **SpringBoot**: SpringBoot是Spring框架的一个子项目,旨在简化Spring应用...

    struts2配置过滤器

    ### Struts2配置过滤器详解 #### 一、概述 Struts2是基于MVC模式的一个开源框架,它能够帮助开发者构建出结构清晰且易于维护的Web应用。在实际开发过程中,为了实现某些功能(例如用户认证、权限控制等),往往...

Global site tag (gtag.js) - Google Analytics