Servlet编程(3)

Servlet过滤器

filter的应用


因为之前看过struts2的内容,对于这类似的知识比较所熟悉。

主要的注意力集中在web.xml文件的配置上。

  1. 过滤器的概念和定义
      概念:同filter的中文含义相同。
      定义:

    动态地拦截请求和响应,以变换或使用包含在请求或响应中的信息。

  2. 作用

    • 在客户端的请求访问后端资源之前,拦截这些请求。
    • 在服务器的响应发送回客户端之前,处理这些响应。

3.examplize
- fliter的action类 implements Filter

package com.Demo.Dao;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class InitOperation implements Filter {

    @Override
    public void destroy() {
        // TODO Auto-generated method stub

    }

    @Override
    public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
            throws IOException, ServletException {
        // TODO Auto-generated method stub
        // 输出站点名称
        System.out.println("站点网址:http://www.runoob.com");
        // 把请求传回过滤链
        arg2.doFilter(arg0,arg1);
    }

    @Override
    public void init(FilterConfig arg0) throws ServletException {
        // TODO Auto-generated method stub
       String information=arg0.getInitParameter("information");
       System.out.println("我想表达的是"+information);
    }

}
  • web.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
    <filter>
        <filter-name>initialization</filter-name>
        <filter-class>com.Demo.Dao.InitOperation</filter-class>
        <init-param>
            <param-name>information</param-name>
            <param-value>"我爱林允儿"</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>initialization</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <servlet>
        <servlet-name>HelloWorld</servlet-name>
        <servlet-class>com.Demo.Dao.HelloWorld</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>HelloWorld</servlet-name>
        <url-pattern>/HelloWorld</url-pattern>
    </servlet-mapping>
</web-app>

运行结果:
init()只调用一次

posted @ 2018-06-06 22:46  理工物联网  阅读(145)  评论(0编辑  收藏  举报