简单的Filter实现

Spring Boot实战之Filter实现简单的Http Basic认证 Spring Boot实战之Filter 本文在上一篇文章http://blog.youkuaiyun.com/sun_t89/article/details/51912905 的基础上,给每个rest接口上添加过滤器,使用过滤器实现简单的Http Basic认证 1、Filter功能 filter功能,它使用户可以改变一个 request和修改一个response. Filter 不是 阅读详情

1.在xml文件配置过滤器

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>Filter</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>

    <error-page>
        <error-code>404</error-code>
        <location>/error.jsp</location>
    </error-page>
    <error-page>
        <error-code>500</error-code>
        <location>/error.jsp</location>
    </error-page>
    <filter>
        <filter-name>CharsetFilter</filter-name>
        <filter-class>com.test.filter.CharsetFilter</filter-class>
        <init-param>
            <param-name>charset</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    <filter>
        <filter-name>LoginFilter</filter-name>
        <filter-class>com.test.filter.LoginFilter</filter-class>
        <init-param>
            <param-name>noLoginPath</param-name>
            <param-value>login.jsp;error.jsp;index.jsp</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>LoginFilter</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>REQUEST</dispatcher>
    </filter-mapping>
    <filter>
        <filter-name>ErrorFilter</filter-name>
        <filter-class>com.test.filter.ErrorFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>ErrorFilter</filter-name>
        <url-pattern>/error.jsp</url-pattern>
        <dispatcher>ERROR</dispatcher>
    </filter-mapping>
    <filter-mapping>
        <filter-name>CharsetFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>


</web-app>

2.建立java类实现Filter接口

1.编码转换案例

package com.test.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;

public class CharsetFilter implements Filter{
    private FilterConfig config;
    @Override
    public void destroy() {
        // TODO Auto-generated method stub

    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        String charset = config.getInitParameter("charset");
        if(charset == null || charset.equals("")){
            charset = "UTF-8";
        }
        request.setCharacterEncoding(charset);
        response.setCharacterEncoding(charset);
        chain.doFilter(request, response);
    }

    @Override
    public void init(FilterConfig arg0) throws ServletException {
        config = arg0;
    }

}

2.错误显示案例

package com.test.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;

public class ErrorFilter implements Filter{

    @Override
    public void destroy() {
        // TODO Auto-generated method stub

    }

    @Override
    public void doFilter(ServletRequest arg0, ServletResponse arg1,
            FilterChain chain) throws IOException, ServletException {
            System.out.println("error!!!!");
            chain.doFilter(arg0, arg1);

    }

    @Override
    public void init(FilterConfig arg0) throws ServletException {
        // TODO Auto-generated method stub

    }


}

3.登录过滤案例

package com.test.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{
    private FilterConfig config;
    @Override
    public void destroy() {

    }

    @Override
    public void doFilter(ServletRequest arg0, ServletResponse arg1,
            FilterChain chain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest)arg0;
        HttpServletResponse response = (HttpServletResponse)arg1;
        HttpSession session = request.getSession();

        //获取不用过滤的路径
        String noLoginPath = config.getInitParameter("noLoginPath");
        //对于不用过滤的路径直接放行
        if(noLoginPath != null){
            String[] strArray = noLoginPath.split(";");

            for(String str:strArray){
                if(str == null || str.equals(""))   continue;
                if(request.getRequestURI().indexOf(str) != -1){
                    chain.doFilter(arg0, arg1);
                    return;
                }
            }
        }
        //如果session中没有用户信息就跳转到登陆界面,否则放行
        if(session.getAttribute("user") == null){
            response.sendRedirect("login.jsp");
        }else{
            chain.doFilter(arg0, arg1);
        }
    }

    @Override
    public void init(FilterConfig arg0) throws ServletException {
        // TODO Auto-generated method stub
        config = arg0;
    }

}

3.建立过滤后显示的页面

1.编码转换案例

package com.test.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;

public class CharsetFilter implements Filter{
    private FilterConfig config;
    @Override
    public void destroy() {
        // TODO Auto-generated method stub

    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        String charset = config.getInitParameter("charset");
        if(charset == null || charset.equals("")){
            charset = "UTF-8";
        }
        request.setCharacterEncoding(charset);
        response.setCharacterEncoding(charset);
        chain.doFilter(request, response);
    }

    @Override
    public void init(FilterConfig arg0) throws ServletException {
        config = arg0;
    }

}

2.错误显示页面

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">

    <title>My JSP 'error.jsp' starting page</title>

    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->

  </head>

  <body>
    This is my error page. <br>
  </body>
</html>

3.登录过滤页面

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">

    <title>My JSP 'success.jsp' starting page</title>

    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->

  </head>

  <body>
    <span><%=request.getParameter("userName") %></span>
    <%System.out.println("userName is "+request.getParameter("userName")); %>
    <span><%=request.getParameter("password") %></span>
    <%System.out.println("pssword is "+request.getParameter("password")); %>
  </body>
</html>
javaweb实现的访问权限控制示例 javaweb使用filter实现的访问权限控制示例。详情请看博客:https://blog.youkuaiyun.com/yuzhiqiang_1993/article/details/81288912 立即下载

相关推荐

如何创建一个简单的Filter

如何创建一个简单的Filter

第九篇——JDBC操作数据库之Filter过滤器(乱码)

Filter解决中文乱码问题JavaWeb中提交中文经常会出现乱码,想必各位都遇到过吧,例如:今天跟大家聊聊一种比较常用的方式——Filter过滤。Filter就是起到一个过滤器的作用,当提交或者获取信息的时候,都会经过Filter,然后Filter会将你传递的信息转换成你设置好的编码格式,从而避免一些中文乱码的情况。一个过滤器必须实现javax.servlet.FilterConfig接口,该接...

有天你会让我妒忌的 1758

c++编程练习 029:简单的Filter

北大程序设计与算法(三)测验题汇总(2020春季) 描述 编写Filter模板,使得程序产生指定输出 不得编写 Filter函数 #include #include using namespace std; // 在此处补充你的代码 bool LargerThan2(int n) { return n > 2; } bool LongerThan3(string s) { return s.length() > 3; } string as1[5] = {Tom,Mike,Jack,Ted,Lucy}; string as2[5]; int a1[5] = { 1,

函数式编程里面的fold

第一:基本概念 fold在函数式编程里面的基本含义是遍历数据结构,最后产生一个聚合值。最简单的例子是sum list = foldl (+) 0 list fold抽象了两个动作,一个是遍历数据结构本身,一个是累积值和元素之间的关系。用了fold后就只需要关心聚合的初始值是什么,每个元素和累积值如何产生下一个累积值。 比如上面的sum的例子,初始值是0, 步进函数式+, 也就是每个元

在理想和现实之间来回碰撞的程序员 4897

告别龟速与断连:Arduino IDE下ESP32及ESP32-CAM一站式环境部署指南

本文提供Arduino IDE下ESP32及ESP32-CAM一站式环境部署指南,解决下载速度慢、断连等常见问题。通过国内镜像源加速、详细步骤讲解和ESP32-CAM专属配置技巧,帮助开发者快速完成环境搭建,避免常见陷阱,提升开发效率。

weixin_30576827的博客 771

如何在Tagetik系统中抽取处理SAP系统财务数据

如何在Tagetik系统中抽取处理不同核算系统财务数据:以SAP为例,简单讲一下Tagetik对接SAP数据的基本情况

2201_75401663的博客 577

简单的Filter

//C:简单的Filter #include <iostream> #include <string> using namespace std; // 在此处补充你的代码 template<class T1,class T2> T1 *Filter(T1 *a, T1 *b, T1 *c, T2 f)//为什么模板名加*就可以了?? 哦因为返回值需要是string*p这样的 //最后一个调用函数的写T2 f和 bool f(T2 d)都行,看来函数的形参不影

weixin_62631468的博客 275

【processing】创意编程

首先接到这个作业的时候,我是很崩溃的,我是真的不会画画QAQ,还画自己,这也太难了,于是我决定!还是祸害我爱豆吧!于是我从微博太太那里找了个图临摹 下面是太太的图 先给太太道歉!都是为了作业! 然后我画出来是这样子的 还可以!!!没有特别丑!(虽然也不是特别像吧) 但是画这个真是画死我了,下面贴上代码吧,没啥特殊的就是各种贝塞尔曲线各种圆各种线 //face stroke(70,27,11...

qq_25700571的博客 1267

029:简单的Filter

029:简单的Filter 题面 描述 编写Filter模板,使得程序产生指定输出 不得编写 Filter函数 #include <iostream> #include <string> using namespace std; // 在此处补充你的代码 bool LargerThan2(int n) { return n > 2; } bool LongerThan3(string s) { return s.length() > 3; } string as1

ACMer_WarYan 873

解密TMS320F28377D双核工程中的内存分配艺术:从CMD文件到实战优化

本文深入解析TMS320F28377D双核DSP的内存管理艺术,从CMD文件配置到实战优化技巧。详细介绍了SARAM、GSRAM等内存类型的特性与配置方法,提供双核协同、性能优化及高级调试的实用方案,帮助开发者提升系统实时性和稳定性。

weixin_29190651的博客 662

华为od 面试八股文_C++_01_含答案

华为od 面试八股文_C++_01_含答案

MISAYAONE的博客 5588

简单的filter过滤实现类

      /** * &lt;pre&gt; * Copyright kanpiaoxue.org [2000-2016] * &lt;/pre&gt; */ package org.kanpiaoxue.test; import org.apache.commons.lang3.StringUtils; import com.google.common....

kanpiaoxue的专栏 619

论文阅读:2024 ACM CCS “Do Anything Now”: Characterizing and Evaluating In-The-Wild Jailbreak Prompts on

大语言模型(LLMs)的滥用问题引起了公众和大语言模型供应商的高度关注。有一种特殊的对抗性提示,叫做越狱提示,它已成为绕过防护措施、让大语言模型生成有害内容的主要攻击手段。在这篇论文中,作者使用新框架JailbreakHub,对2022年12月至2023年12月期间的1405个越狱提示进行了全面分析。作者识别出131个越狱提示社区,发现了越狱提示的独特特征以及主要攻击策略,比如提示注入和权限提升。

CSPhD-winston的博客 1411

nginx 学习五 filter模块简介和实现一个简单的filter模块

1 nginx过滤模块简介 过滤(filter)模块是过滤响应头和内容的模块,可以对回复的头和内容进行处理。它的处理时间在获取回复内容之后, 向用户发送响应之前。它的处理过程分为两个阶段,过滤HTTP回复的头部和主体,在这两个阶段可以分别对头部和主体 进行修改。 2 过滤模块执行顺序 2.1 ngx_http_output_(head, body)_filter_pt 先看一下ng

yanziguilai的专栏 3913

华为OD机试新系统真题-魔法咒语组合(Java/Py/C++/Go/C/Js)

华为OD机试 新系统真题【魔法咒语组合】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【魔法咒语组合】多语言题解

qq_45776114的博客 666

【32】OpenCV——图像含义关系?RGGB , BGGR , GRBG , GBRG呢?raw8,raw10,raw12,raw14呢? YUV422; RAW16呢?YCbYCr/RG_GB;

‌如前所述,定义原始数据的位深精度。‌* ‌一种压缩色彩编码方式,通过色度抽样(亮度Y全分辨率,色度U/V半分辨率)减少数据量,常用于视频传输。‌* ‌可能指每个像素分量占16位存储(如高位填充的RAW10/12/14),或未明确量化的高精度原始数据。‌ ‌分类‌核心定义‌关联性及典型应用传感器原始色彩排列(RGGB/BGGR等)决定RAW数据的色彩分布规则RAW位深每个分量的数据精度(8/10/12/14位)影响动态范围和存储空间‌YUV422。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 791

Filter实现简单权限控制

Filter实现简单权限控制 一、描述        我们在浏览一些网站经常有这个情况,没有登录时是不允许我们访其主页的,只有登录过后才能访问。 二、原理 (1)登录时将登录的账号密码保存到cookie中,下次访问时携带账号和密码,过滤器中进行校验。 (2)用户没有登录直接访问主页时,要跳转到登录页面。 (3)登录过滤器不对登录...

weixin_46110257的博客 441

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Spring 实现简单过滤器 Filter

1. Filter 介绍 Filter过滤器主要用来过滤用户的请求,允许用户对请求进行前置处理和后置处理,比如实现 URL 级别的权限控制、过滤非法请求等等。Filter 过滤器是面向切面编程——AOP 的据图实现(AOP切面编程只是一种编程思想而已)。 Filter 是依赖于 Servlet 容器,如果要自定义过滤器的话,只需要实现 javax.Servlet.Filter 接口,然后重写里面的...

Tong_zhi的博客 2259

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Filter二(利用Filter实现简单的登录验证)

Filter二(利用Filter实现简单的登录验证) 目标:1.我们规定利用Filter我们实现一个如果在Url中包含有admin的请求的时候,那么我们就要验证当前的用户是否登录,如果没有登录那么跳转到登录的界面     2.当我们登录成功的时候,我们应该跳回到我们之前请求的页面。

declare_r的专栏 2339

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

如何实现一个简单地Filter

如何使用Filter 1.实现 javax.servlet.Filter 接口 #实现三个方法 # public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException     {    chain.do

lvjianyu2007的专栏 860

JS:数组的filter()方法实现简单的搜索功能

直接上效果图和代码 <body> <!-- 搜索组件 --> <input type="text" id="searchBox"> <button id="searchBtn">搜索</button> <!-- 搜索结果展示区域 --> <ul id="searchResult"...

weixin_43856797的博客 4143

java web项目利用Filter进行单点登录的简单实现(解决方案)

利用 首先增加过滤器: package sdses.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletExcepti

zzzz的专栏 6621

Filter过滤器的简单实现

/将字符串从"/"处截取并存入字符串数组中。//通过当前Filter,可以访问。

m0_62979417的博客 160

Struts2一个简单的Filter实现

struts2原理图: 下面根据Struts原理图,写一个简单的过滤器实现: 假设现在有一个form表单被提交,发送如下请求到服务器: POST http://127.0.0.1/login.do HTTP/1.0 Accept: image/gif, image/jpeg, image/pjpeg, */* Accept-Language: en-us,zh-cn;q=

Slowing down your step,you will enjoy more 1164

bloom filter简单实现

再流计算中计算UV是个相当麻烦的事情,特别数据量很大的时候,中间存储就大的吓人。最近项目中遇到分类目计算UV,UV量大概在7000W,有20w多个类目。如果使用简单的存储中间结果再去重,如果使用内存内存打不下,使用Hbase的话HBASE的吞吐又不够。于是准备使用bloom近似计算UV。 写了个bloom filter的demo程序,由于uid都为数字在计算hash值时碰撞率比较搞,于是

xqy1522的专栏 1763
上一篇: java反射机制解决数据库查询结果到Model类
下一篇: JQuery中ajax和JSON的获取
aNoobCoder
博客等级 码龄10年 2粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值