博客
关于我
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/

    你可能感兴趣的文章
    SpringBoot中集成screw(螺丝钉)实现数据库表结构文档生成
    查看>>
    PROFINET 模拟器使用教程
    查看>>
    Program type already present: android.support.v4.widget.EdgeEffectCompat
    查看>>
    PyTorch中文版官方教程来啦(附下载)
    查看>>
    Progress Kemp LoadMaster 远程命令执行漏洞复现(CVE-2024-1212)
    查看>>
    Project configuration is not up-to-date with pom.xml. Run Maven->Update Project
    查看>>
    Project Euler 15 Lattice paths
    查看>>
    Project Euler 48 Self powers( 大数求余 )
    查看>>
    Project Euler Problem 12: Highly divisible triangular number
    查看>>
    ProjectEuler 2
    查看>>
    projection介绍及EPSG:4326和EPSG:3857的投射转换
    查看>>
    project打开文件时,显示无法识别此文件格式?
    查看>>
    Prometheus + Grafana on Kubernetes部署
    查看>>
    prometheus + grafana进行服务器资源监控
    查看>>
    Prometheus Alertmanager 告警配置详解
    查看>>
    Prometheus Grafana 展示平台
    查看>>
    Prometheus pushgateway使用详解
    查看>>
    Prometheus 云原生 - Prometheus 数据模型、Metrics 指标类型、Exporter 相关
    查看>>
    Prometheus 云原生 - 基于 file_sd、http_sd 实现 Service Discovery
    查看>>
    Prometheus 云原生 - 微服务监控报警系统 (Promethus、Grafana、Node_Exporter)部署、简单使用
    查看>>