• 【JavaWeb】FilterConfig应用示例


    FilterConfig的对象由Web容器创建。这个对象可用于获取web.xml文件中的配置信息。

    FilterConfig接口的方法

    FilterConfig接口中有以下4个方法。

    • public void init(FilterConfig config): init()方法仅在初始化过滤器时被调用(只调用一次)
    • public String getInitParameter(String parameterName): 返回指定参数名称的参数值。
    • public java.util.Enumeration getInitParameterNames(): 返回包含所有参数名称的枚举。
    • public ServletContext getServletContext(): 返回ServletContext对象。

    FilterConfig示例

    在此示例中,如果将web.xml的中的construction参数值为no,则请求将转发到servlet,如果将参数值设置为:yes,则过滤器将使用消息创建响应:”此页面正在处理中“。下面来看看FilterConfig的简单例子。

    以下是这个项目中的几个主要的代码文件。在这里创建了4个文件:

    • FilterConfig.html - 应用程序入口
    • MyFilterConfig.java - 过滤器实现
    • HelloServlet.java - 一个简单的Servlet
    • web.xml - 项目部署配置文件/

    MyFilterConfig.java

    public class MyFilterConfig implements Filter {
        FilterConfig config;
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
            this.config = filterConfig;
        }
    
        @Override
        public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
            // 设置服务器端的内容类型
            servletResponse.setContentType("text/html;charset=utf-8");
            // 设置服务器端的编码
            servletResponse.setCharacterEncoding("utf-8");
            // 设置客户端的编码
            servletRequest.setCharacterEncoding("utf-8");
            // 获取服务器端的输出对象
            PrintWriter out = servletResponse.getWriter();
    
            // 获取配置信息
            String s = config.getInitParameter("construction");
    
            if (s.equals("yes")){
                out.println("此页面正在处理");
            }else {
                out.println("过滤之前");
                filterChain.doFilter(servletRequest,servletResponse);
                out.println("过滤之后");
            }
        }
    
        @Override
        public void destroy() {
    
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    HelloServlet.java

    public class HelloServlet extends HttpServlet {
        @Override
        public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
            // 设置服务器端内容类型
            response.setContentType("text/html;charset=utf-8");
            // 设置服务器端编码
            response.setCharacterEncoding("utf-8");
            // 设置客户端编码
            request.setCharacterEncoding("utf-8");
            // 获取服务器端输出对象
            PrintWriter out = response.getWriter();
    
            out.println("Welcome to HelloServlet");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    FilterConfig.html

    DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>FilterConfig示例title>
    head>
    <body>
        <div style="text-align: center">
            <a href="helloServlet">查看Filter配置信息a>
        div>
    body>
    html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    web.xml

    
    
    <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>ServletRequestdisplay-name>
        <welcome-file-list>
            <welcome-file>FilterConfig.htmlwelcome-file>
        welcome-file-list>
        <servlet>
            <servlet-name>HelloServletservlet-name>
            <servlet-class>HeaderServletservlet-class>
        servlet>
        <servlet-mapping>
            <servlet-name>HelloServletservlet-name>
            <url-pattern>/helloServleturl-pattern>
        servlet-mapping>
        <filter>
            <filter-name>MyFilterConfigfilter-name>
            <filter-class>MyFilterConfigfilter-class>
            <init-param>
                <param-name>constructionparam-name>
                <param-value>noparam-value>
            init-param>
        filter>
        <filter-mapping>
            <filter-name>MyFilterConfigfilter-name>
            <url-pattern>/helloServleturl-pattern>
        filter-mapping>
    <web-app>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
  • 相关阅读:
    微信小程序自定义组件及投票管理与个人中心界面搭建
    VPS2103 电流模式 PWM 控制器 4-50V IN /90V/0.1Ω功率管
    学习笔记2——Nosql
    2022年最火的十大测试工具,你掌握了几个
    一. Ubuntu入门
    【Java】想进大厂?你应该知道的算法经典习题(链表)
    泰克Tektronix示波器软件TDS1012|TDS2002|TDS2004上位机软件NS-Scope
    [moeCTF 2023] pwn
    js-hodgepodge 一个全面的JS工具库
    Vue3生命周期详解,Vue2和Vue3对比
  • 原文地址:https://blog.csdn.net/u013301892/article/details/127613659