博客
关于我
filter&listener&邮箱
阅读量:117 次
发布时间:2019-02-25

本文共 2762 字,大约阅读时间需要 9 分钟。

Filter技术

1.1 Filter的定义

Filter是Java类,实现了javax.servlet.Filter接口。它用于对请求资源(如JSP、Servlet、HTML等)进行过滤,通常在服务器端运行,优先于请求资源处理。

1.2 Filter的作用

  • 对目标资源进行过滤。
  • 常见应用场景:
    • 登录权限检查
    • 解决网站乱码问题
    • 过滤敏感字符

Filter的配置方式

通过配置文件(xml方式)

  • 创建一个类实现Filter接口。
  • 在web.xml中配置Filter。
  • FilterDemo01
    com.itheima.web.filter.FilterDemo01
    FilterDemo01
    /demo01

    通过注解方式

  • 创建一个类实现Filter接口。
  • 在类上添加@WebFilter注解,指定拦截路径。
  • @WebFilter("/demo02")public class FilterDemo02 implements Filter {    // doFilter方法实现}

    Filter的生命周期

    • init(FilterConfig filterConfig): 初始化,调用一次。
    • doFilter(ServletRequest req, ServletResponse resp, FilterChain chain): 处理请求,调用链滤过一次。
    • destroy(): 销毁,调用一次。

    Filter的常见配置

    • url-pattern: 定义过滤路径。
    • dispatcherTypes: 指定过滤方式:
      • DispatcherType.REQUEST: 默认值,处理浏览器请求和重定向。
      • DispatcherType.FORWARD: 只处理转发请求。

    Filter链

    过滤器链的作用是实现多个过滤器的协作。过滤器执行顺序根据配置文件或注解的顺序决定。

    非法字符过滤

    ###需求分析

    • 对用户发布的言论进行非法字符检查。
    • 提示非法言论。

    ###实现步骤

  • 创建非法字符列表。
  • 检查用户输入的言论是否包含非法字符。
  • 如果包含,提示用户;如果没有,放行。
  • ###代码实现

    @WebFilter("/*")public class IllegalFilter implements Filter {    private List
    wordList = new ArrayList<>(); public void init(FilterConfig config) throws ServletException { InputStream is = config.getServletContext().getResourceAsStream("IllegalWords.txt"); BufferedReader reader = new BufferedReader(new InputStreamReader(is, "utf-8")); String line = null; while ((line = reader.readLine()) != null) { wordList.add(line); } } public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException { HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) resp; String message = request.getParameter("message"); if (message != null) { for (String word : wordList) { if (message.contains(word)) { message = message.replace(word, "***"); response.getWriter().print("您发布的言论是:" + message); return; } } } chain.doFilter(request, response); }}

    Listener的应用

    ###ServletContext监听器

    • 用于监听ServletContext的创建和销毁。
    • 应用场景:
      • 初始化工作(如加载配置文件)。
      • 服务器启动时创建,服务器关闭时销毁。

    ###代码实现

    public class ServletContextLis implements ServletContextListener {    @Override    public void contextInitialized(ServletContextEvent sce) {        System.out.println("ServletContext 创建了... 555555");    }    @Override    public void contextDestroyed(ServletContextEvent sce) {        System.out.println("ServletContext 销毁了... 444444");    }}
    com.itheima.web.listener.ServletContextLis

    邮箱配置

    ###邮件服务器选择

    • 企业邮箱(如163、QQ、Gmail)。
    • 自己搭建邮件服务器(如Sendmail、Postfix)。

    ###邮件软件安装

    • 服务端:安装邮件服务器。
    • 客户端:安装邮件客户端(如Foxmail、Outlook)。

    转载地址:http://ujk.baihongyu.com/

    你可能感兴趣的文章
    NIFI大数据进阶_内嵌ZK模式集群1_搭建过程说明---大数据之Nifi工作笔记0015
    查看>>
    NIFI大数据进阶_外部ZK模式集群1_实际操作搭建NIFI外部ZK模式集群---大数据之Nifi工作笔记0017
    查看>>
    NIFI大数据进阶_实时同步MySql的数据到Hive中去_可增量同步_实时监控MySql数据库变化_操作方法说明_01---大数据之Nifi工作笔记0033
    查看>>
    NIFI大数据进阶_离线同步MySql数据到HDFS_01_实际操作---大数据之Nifi工作笔记0029
    查看>>
    NIFI大数据进阶_离线同步MySql数据到HDFS_02_实际操作_splitjson处理器_puthdfs处理器_querydatabasetable处理器---大数据之Nifi工作笔记0030
    查看>>
    NIFI大数据进阶_离线同步MySql数据到HDFS_说明操作步骤---大数据之Nifi工作笔记0028
    查看>>
    NIFI大数据进阶_连接与关系_设置数据流负载均衡_设置背压_设置展现弯曲_介绍以及实际操作---大数据之Nifi工作笔记0027
    查看>>
    NIFI数据库同步_多表_特定表同时同步_实际操作_MySqlToMysql_可推广到其他数据库_Postgresql_Hbase_SqlServer等----大数据之Nifi工作笔记0053
    查看>>
    NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南001---大数据之Nifi工作笔记0068
    查看>>
    NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南002---大数据之Nifi工作笔记0069
    查看>>
    NIFI集群_内存溢出_CPU占用100%修复_GC overhead limit exceeded_NIFI: out of memory error ---大数据之Nifi工作笔记0017
    查看>>
    NIFI集群_队列Queue中数据无法清空_清除队列数据报错_无法删除queue_解决_集群中机器交替重启删除---大数据之Nifi工作笔记0061
    查看>>
    NIH发布包含10600张CT图像数据库 为AI算法测试铺路
    查看>>
    Nim教程【十二】
    查看>>
    Nim游戏
    查看>>
    NIO ByteBuffer实现原理
    查看>>
    Nio ByteBuffer组件读写指针切换原理与常用方法
    查看>>
    NIO Selector实现原理
    查看>>
    nio 中channel和buffer的基本使用
    查看>>
    NIO_通道之间传输数据
    查看>>