JavaWeb过滤器

过滤器

1、配置过滤器

@WebFilter("/Login.jsp")

@WebFilter("/*")

2、在web.xml中配置

    突然发现自己没有掌握Web.xml的使用方法,不理解,所以百度了一下

1. xml文件

xml文件:Extentsible Markup Language即可扩展标记语言,是用来定义其它语言的一种元语言,其前身是SGML(标准通用标记语言)xml文件是互联网数据传输的重要工具,因为不受编程语言和操作系统的限制,所以可以跨越互联网的任何平台,非常适合Web传输。XML提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。我们都知道xml文件的一些规则:

xml声明一般是xml文档的第一行:<?xml version=“1.0” encoding=“UTF-8”?>

xml必须有且只有一个根节点,对大小写敏感,标签成对出现,标签不嵌套,但内部元素需要正确嵌套;

属性值用双引号包裹;一个元素可以有多个属性,它的基本格式为:<元素名 属性名=“属性值属性名=“属性值”>;

有效的(validxml文档:首先xml文档是个格式正规的xml文档,然后又需要满足DTD的要求,这样的xml文档称为有效的xml文档。

3. web.xml文件的作用

web.xml文件是整个web应用中最重要的配置文件,它必须放在WEB-INF目录中。在web应用开发中,涉及到web资源的配置都是在web.xml中进行的。例如:

将某个web资源设置为网站首页;

servlet程序映射到某个url地址上;

web应用配置监听器;(目前正在学!)

web应用配置过滤器;

配置web应用上下文参数、配置Session的参数;

配置springspringMVC等框架。

  1. xml文档的有效检查

<?xml version="1.0" encoding="UTF-8"?>

<web-app id="WebApp_ID" version="3.0"

         xmlns="http://java.sun.com/xml/ns/javaee"

         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

         http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

这是一般在写XML时所做的声明,定义了XML的版本,编码格式,还有重要的指明schema的来源,http://java.sun.com/xml/ns/javaee/web-app_3_0.xsdschema是由Sum Microsystems公司(已被Oracle收购)定制的,Schema文件定义了web.xml所对应的xml中有多少种标签元素。

2、设置欢迎页

<welcome-file-list>

    <welcome-file>index.jsp</welcome-file>

    <welcome-file>index1.jsp</welcome-file>

</welcome-file-list>

Eg

   

3<session-config> 用于设置容器的session参数

<session-config></session-config>

<!-- Set timeout to 120 minutes --> 

<session-config>  

   <session-timeout>120</session-timeout>  

</session-config>

比如:<session-timeout> 用于指定http session的失效时间。默认时间设置在<jakarta>/conf/web.xml (30 minutes)<session-timeout>用来指定默认的会话超时时间间隔,以分钟为单位。该元素值必须为整数。如果 session-timeout元素的值为零或负数,则表示会话将永远不会超时。

 

  1. 设置过滤器

Filter可认为是Servlet增强版,主要用于对用户请求request进行预处理,也可以对Response进行后处理,是个典型的处理链;因此Filter配置与Servlet的配置非常相似,需要配置两部分:配置Filter名称和Filter拦截器URL模式。区别在于Servlet通常只配置一个URL,而Filter可以同时配置多个请求的URL

Filter的常用应用场合有:编码器Filter、认证Filter、图片转换Filter、数据压缩Filter、密码Filter、日志和审核Filter等。Filter必须实现javax.servlet.Filter接口,在该接口中定义了三个方法:void init(FilterConfig config)void destroy()void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)

<filter>

        <filter-name>Test1Filter</filter-name>

        <filter-class>com.rp.filter.Test1Filter</filter-class>

    </filter>

    <filter-mapping>

        <filter-name>Test1Filter</filter-name>

        <url-pattern>/*</url-pattern>

    </filter-mapping>

重点理解chain.doFilter(request, response);方法!

每个TestFilterx

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

        // TODO Auto-generated method stub

        // place your code here

        System.out.println("do filterx");

        // pass the request along the filter chain

        chain.doFilter(request, response);

        System.out.println("finish do filterx");

    }

运行结果如下

大概流程原理如图,猜想可能与配置顺序有关!证实如此

过滤器应用一:通过配置文件可以配制编码格式:

<filter>

    <filter-name>EncodingFilter</filter-name>

    <filter-class>com.rp.filter.EncodingFilter</filter-class>

    <init-param>

        <param-name>Encoding</param-name>

        <param-value>utf-8</param-value>

    </init-param>

  </filter>

  <filter-mapping>

    <filter-name>EncodingFilter</filter-name>

    <url-pattern>/*</url-pattern>

  </filter-mapping>

filter类中,其中init()方法中的fConfig对象就是配置好的对象

过滤器应用二:权限管理

  1. 了解一个规范:所有和后台有关的页面前面加一个admin_
  2. 创建一个admin过滤器

.xml中配置admin过滤器

注意地址是admin下面的,因为此过滤器只针对有当访问admin下面页面时才生效

了解Dispacher过滤器

应用3:利用filter进行404页面处理

<filter>

    <filter-name>DispatcherFilter</filter-name>

    <filter-class>com.rp.filter.DispatcherFilter</filter-class>

  </filter>

  <filter-mapping>

    <filter-name>DispatcherFilter</filter-name>

    <url-pattern>/Dispatcher2.jsp</url-pattern>

    <dispatcher>ERROR</dispatcher>

  </filter-mapping>

  <error-page>

  <error-code>404</error-code>

  <location>/Dispatcher2.jsp</location>

  </error-page>

写到这里就要睡觉啦!明天(不对,是8个多小时后)出四级分数,希望自己能有一个好成绩!明天学监听器,加油!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值