栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

11-过滤器Filter

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

11-过滤器Filter

在实际项目中,很多通用的校验或者模块,可以放在过滤器中进行实现,不用都写在 servlet 中。

1. 新建一个javaweb项目

开发环境:

  • IDEA
  • jdk 8
  • maven 3.6.3
  • tomcat 9

使用 maven 的模板创建一个 webapp 项目

手动创建 java 以及 resources 目录,创建后的目录结构如下所示


在 pom.xml 文件中,引入需要用到的依赖,如下为本次用到的所有依赖




    
        javaweb
        com.yuhuofei.servlet
        1.0-SNAPSHOT
    
    4.0.0

    03-filter
    war

    03-filter Maven Webapp
    
    http://www.example.com

    
        UTF-8
        1.8
        1.8
    

    
        
        
            javax.servlet
            javax.servlet-api
            4.0.1
        
        
        
            javax.servlet.jsp
            jsp-api
            2.2
        
        
        
            jstl
            jstl
            1.2
        
        
        
            taglibs
            standard
            1.1.2
        
        
        
            mysql
            mysql-connector-java
            5.1.49
        

        
            junit
            junit
            4.11
            test
        
    

    
        03-filter
        
            
                
                    maven-clean-plugin
                    3.1.0
                
                
                
                    maven-resources-plugin
                    3.0.2
                
                
                    maven-compiler-plugin
                    3.8.0
                
                
                    maven-surefire-plugin
                    2.22.1
                
                
                    maven-war-plugin
                    3.2.2
                
                
                    maven-install-plugin
                    2.5.2
                
                
                    maven-deploy-plugin
                    2.8.2
                
            
        
    


为项目配置好 tomcat 服务器


到此,项目基本的创建就算完成了,接下来就是写处理逻辑

2. 过滤器filter的使用示例

这里以使用过滤器统一处理乱码问题为例,演示过滤器的使用

1、新建一个 Servlet 类——TestServlet.java

package com.yuhuofei.javaweb.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;


public class TestServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.getWriter().write("你好,世界!");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doGet(req, resp);
    }
}

2、新建一个过滤器类——MyFilter.java

package com.yuhuofei.javaweb.filter;

import javax.servlet.*;
import java.io.IOException;


public class MyFilter implements Filter {

    //初始化
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("=====MyFilter开始初始化=====");
    }


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

        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");

        System.out.println("MyFilter开始执行");
        //这行的作用是让请求继续往后走,如果不写,程序到此会被拦截停止!
        chain.doFilter(request,response);

        System.out.println("MyFilter执行完成");
    }

    //销毁
    @Override
    public void destroy() {
        System.out.println("=====MyFilter销毁=====");
    }
}

3、修改 web.xml




    
    
        testServlet
        com.yuhuofei.javaweb.servlet.TestServlet
    
    
    
        testServlet
        /test
    
    
        testServlet
        /filter/test
    

    
    
        MyFilter
        com.yuhuofei.javaweb.filter.MyFilter
    
    
        MyFilter
        
        /filter/*
    

4、启动 tomcat 服务器,测试

(1)启动 tomcat 服务器后,访问 http://localhost:8080/test,会展示乱码,因为这个路径下没有做乱码处理

(2)返回 http://localhost:8080/filter/test ,会展示中文内容,如下所示,原因是在过滤器中对 /filter/ 路径下的请求,做了乱码处理

5、过滤器的初始化和销毁

过滤器会随着服务器的启动和关闭,进行初始化和销毁,如下所示

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/953270.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号