过滤过滤,实际就是把需要和不需要的东西分开!

今天来说道说道我们程序中的‘登录过滤器’ ,首先我们看看一下面的问题:

1、“登录过滤器”是干什么用的?

1)“登录过滤器”就是为了防止在用户没有登录的情况下来访问我们的网站。

2)举例:main.html 这个网页是需要通过login.html这个网页登录后才可以访问的,现在有一个用户没有登录,直接访问main.html成功了。那么,这样的网站是不是觉得不安全呢?用户不用登录随随便便就访问了。so,we have to need a filter.我们需要用过滤器来过滤一些需要登录后才可以访问的页面.

2、我们要怎么过滤呢?

1)at first ! 我们肯定要过滤掉需要登录的页面

2)我们拿到了需要登录的页面后,我们怎么判断用户有没有登录呢?so,we need a session .

3)已session为依据,来判断用户是不是登录过了。登录过了我们就让他继续访问,没有登录的我们就让他返回到登录界面。

下面我们来看看代码是如何实现的:

package com.haojieli.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 destroy() {
        // TODO Auto-generated method stub
    }

public void doFilter(ServletRequest arg0, ServletResponse arg1,
            FilterChain arg2) throws IOException, ServletException {
        // TODO Auto-generated method stub
        HttpServletRequest req = (HttpServletRequest)arg0;
        HttpServletResponse resp =(HttpServletResponse) arg1;
        HttpSession session = req.getSession();
           // 获得用户请求的URI
        String path = req.getRequestURI();
        // 从session取得已经登录验证的凭证 我这里的demo用的是password来作为登录凭证
        String password = (String) session.getAttribute("password");
        // login.jsp页面无需过滤(根据自己项目的要求来)

   //也可以path.contains("login.jsp")  反正怎么精确怎么来就不多说了
        if(path.indexOf("/login.jsp") > -1) {//注意:登录页面千万不能过滤  不然过滤器就。。。。。自行调试不要偷懒!这样记忆深刻
            arg2.doFilter(req, resp);
            return;
        } else {//如果不是login.jsp进行过滤
              if (password == null || "".equals(password)) {
                  // 跳转到登陆页面
                  resp.sendRedirect("login.jsp");
            } else {
                // 已经登陆,继续此次请求
                arg2.doFilter(req, resp);
            }
        }
    }
    public void init(FilterConfig arg0) throws ServletException {
        // TODO Auto-generated method stub
    }
}

在这里就不用解释代码了,代码中有详细的注释,但是重要的一点 我们过滤器是写好了 ,还需要配置啊,不然怎么运行呢?followe me。

将过滤器配置到web.xml里面

<filter>
      <filter-name>Login</filter-name>
      <filter-class>com.haojieli.filter.LoginFilter</filter-class>
  </filter>
  <filter-mapping>
      <filter-name>adminLogin</filter-name>

<!--这里的/admin/* 表示是指定路径下的文件需要过滤   也可以写为 <url-pattern>/*</url-pattern> 表示所有文件都需要过滤-->
      <url-pattern>/admin/*</url-pattern>
  </filter-mapping>

注意:登录页面不能过滤。。。自行调试不要偷懒!这样记忆深刻......

博文到此结束,感谢您的观看,希望对各位读者有所帮助,如果有什么意见以及建议请在评论留言......

======祝各位读者生活愉快======

Java丨简单的登录过滤器实现方法的更多相关文章

  1. 【知了堂学习笔记】java web 简单的登录

    最近皮皮潇在学习java web,刚接触了简单的东西,所以今天给大家带来一个简单的登录实现. 页面: 页面代码: <%@ page language="java" conte ...

  2. JAVA web简单的登录界面jsp实现

    此次试验所用到的软件是myeclipse10,tomcat7,Dreamweaver,sqlserver2008数据库.可以实现用户使用用户名和密码登录.如果登录成功,页面会显示登录成功,如果密码错误 ...

  3. 第一次Java作业——简单的登录界面

    千里之行,始于足下,从小做起,一点一滴学编程. import javax.swing.*; import java.awt.*; public class Homework{ public stati ...

  4. java web 简单的登录注册

    --sql文件 create database studentgouse studentgocreate table stuinfo(--stuid int primary key identity( ...

  5. .NET MVC中登录过滤器拦截的两种方法

    今天给大家介绍两种ASP中过滤器拦截的两种方法. 一种是EF 的HtppModule,另一种则是灵活很多针对MVC的特性类 Attribute 具体什么是特性类可以参考着篇文章:https://www ...

  6. Spring MVC 架构的java web工程如何添加登录过滤器

    发布到外网的web工程必须添加登录过滤器来阻挡一些非法的请求,即只有登录的用户才能对web工程进行请求,否则无论请求什么资源都需要调整到登录页面进行登录操作.这时就需要用到过滤器,其实非常简单,只需要 ...

  7. java实现简单的单点登录

    java实现简单的单点登录 摘要:单点登录(SSO)的技术被越来越广泛地运用到各个领域的软件系统当中.本文从业务的角度分析了单点登录的需求和应用领域:从技术本身的角度分析了单点登录技术的内部机制和实现 ...

  8. Java结合SpringBoot拦截器实现简单的登录认证模块

    Java结合SpringBoot拦截器实现简单的登录认证模块 之前在做项目时需要实现一个简单的登录认证的功能,就寻思着使用Spring Boot的拦截器来实现,在此记录一下我的整个实现过程,源码见文章 ...

  9. Java设计模式之【工厂模式】(简单工厂模式,工厂方法模式,抽象工厂模式)

    Java设计模式之[工厂模式](简单工厂模式,工厂方法模式,抽象工厂模式) 工厂模式出现的原因 在java中,创建一个对象最简单的方法就是使用new关键字.但在一些复杂的业务逻辑中,创建一个对象不只需 ...

随机推荐

  1. 004-shiro简介

    一.什么是shiro shiro是apache的一个开源框架,是一个权限管理的框架,实现 用户认证.用户授权. spring中有spring security (原名Acegi),是一个权限框架,它和 ...

  2. JetBrains ReSharper 8.2 Build 8.2.0.2160 && StyleCop

    先安装 StyleCop 再安装 JetBrains ReSharper 8.2 Build 8.2.0.2160

  3. Hadoop集群的配置的主机和IP

    集群配置如下: hadoop        192.168.80.100 hadoop1      192.168.80.101 hadoop2      192.168.80.102   (注:ha ...

  4. Python(装饰器)

    eval 内容从字符串中提取出来,用Python运行一遍__name__得到函数名字 闭包函数 定义: 函数内部定义的函数称为内部函数 该内部函数包含对外部作用域,而不是对全局作用域的名字的引用 那么 ...

  5. Python-装饰器、生成器

    python中的for循环 for i in [1,2,3,4]: print(i) 正常可运行的,但是如下运行呢? for i in 1234 print(i) 结果: Traceback (mos ...

  6. NHibernate 配置增加代码感知

    Adding the Schema Include the schema in your Project, Solution, or Visual Studios XML Schemas folder ...

  7. UTC和时间相互转换

    // ToLocalTime() UTC时间转换为本地时间 public static DateTime UtcToDateTime(long number) { , , , , , , ).AddS ...

  8. akka框架地址

    http://doc.akka.io/docs/akka/2.2.3/AkkaJava.pdf

  9. 字符数组(char)和字符串(string)的转换

    #include<iostream>#include<string>using namespace std;void main(){ string LyuS = "W ...

  10. Apache 虚拟主机配置

    开放虚拟主机文件 修改主配置文件 解开注释,使用虚拟主机配置文件. vim /usr/local/apache2/conf/httpd.conf Include conf/extra/httpd-vh ...