23.FilterConfig

23.FilterConfig

Javax.Servet 包中提供了一个 FilterCofig 接口,它与 ServletConfig 接口相似,用于在过滤器初始化期间向其传递信息。FilterConfig 接口由容器实现,容器将它作为参数传入过滤器的 init() 方法中。通过 filterConfig 对象就可以获得 Filter 的初始化参数。在 FilterConfig 接口中,定义了 4 个方法,如下表。

返回值类型

方法

描述

String

getInitParameter(String name)

根据初始化参数名 name,返回对应的初始化参数值。

Enumeration

getInitParameterNames()

返回过滤器的所有初始化参数名的枚举集合。

ServletContext

getServletContext()

返回 Servlet 上下文对象的引用。

String

getFilterName()

返回过滤器的名称。

示例

在 net.biancheng.www.filter 包中,创建名称为 BlackListFilter 的类,代码如下。

package net.biancheng.www.filter;

import javax.servlet.*;

import java.io.IOException;

import java.util.Enumeration;

/**

* 黑名单过滤器

*

* @author 编程帮 www.biancheng.net

*/

public class BlackListFilter implements Filter {

private FilterConfig fConfig;

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

response.setContentType("text/html;charset=UTF-8");

Boolean successde = true;

//获取前台登录的账号信息

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

//获取过滤器中的初始化参数

Enumeration blackListNames = fConfig.getInitParameterNames();

//判断前台登录账号是否为空

if (name == null || "".equals(name)) {

response.getWriter().write("用户名不能为空");

} else {

//登录账号不为空,循环遍历黑名单

while (blackListNames.hasMoreElements()) {

//若登录账号是黑名单账号则不允许登录

if (fConfig.getInitParameter(blackListNames.nextElement()).equals(name)) {

successde = false;

}

}

if (successde) {

chain.doFilter(request, response);

} else {

response.getWriter().write("

温馨提示:您的存在风险,暂时不能为您提供服务

\n");

}

}

}

public void init(FilterConfig fConfig) throws ServletException {

this.fConfig = fConfig;

}

}

在 net.biancheng.www.servlet 包中,创建名称为 LoginServlet 的类,代码如下。

package net.biancheng.www.servlet;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

/**

* @author 编程帮 www.biancheng.net

*/

@WebServlet("/login")

public class LoginServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

public LoginServlet() {

super();

}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

response.setContentType("text/html;charset=UTF-8");

response.getWriter().write("

编程帮www.biancheng.net 欢迎您

");

}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doGet(request, response);

}

}

在 web.xml 中配置过滤器以及初始化参数,代码如下。

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"

version="4.0">

BlackListFilter

net.biancheng.www.filter.BlackListFilter

blackList1

编程帮黑名单用户1

blackList2

编程帮黑名单用户2

blackList3

user

BlackListFilter

/login

在 WebContent 目录下创建 login.html,代码如下。

Insert title here

编程帮wwww.biancheng.net

账号

密码

启动 Tomcat,在浏览器地址栏中输入“http://localhost:8080/filterDemo/login.html”,结果如下。

如下图,填写表单信息。

点击提交按钮,结果如下图。

返回登录页,填写表单信息,如下图。

点击提交按钮,结果如下图。

相关推荐

济南雪野湖游玩攻略简介,济南雪野湖门票/地址/图片/开放时间/照片/门票价格【携程攻略】
南怀瑾:下等人薄情,中等人深情,上等人…… 情之一字,在中国文化中最是动人心魄。君不见,多少婉转流淌的诗词歌赋,都是生之于情,因情而起。什么是情?——心的温度。《世...
自己动手车床(35 张):用于木材和金属,根据尺寸图为家庭自制机器。如何在家里用洗衣机引擎制作它?
[润滑]【深度评测】Foxi专业魔方护理油套装沉浸式实操使用测评|片尾彩蛋:尝试用辣椒油...[复制链接]
四人棋牌游戏
best365官网体育投注

四人棋牌游戏

📅 08-22 👁️ 8400
奔驰 app 与其他汽车品牌的 app 相比有何优势?
best365官网体育投注

奔驰 app 与其他汽车品牌的 app 相比有何优势?

📅 09-28 👁️ 4923