web.xml 配置Filter

本文介绍了一个权限Filter的实现及其在web.xml中的配置方法。该Filter通过检查用户会话来确定是否已登录,并根据登录状态决定是否放行请求或重定向到登录页面。

下面是该Filter的源代码。

程序清单:codes/02/2.12/ filterTest/WEB-INF/src/lee/AuthorityFilter.java

 



上面Filter的doFilter方法里3行斜体字代码用于获取Filter的配置参数,而程序中粗体字代码则是此Filter的核心,①号代码按配置参数设置了request编码所用的字符集,接下来的粗体字代码判断session范围内是否有user属性——没有该属性即认为没有登录,如果既没有登录,而且请求地址也不是登录页和处理登录页,系统直接跳转到登录页面。

在web.xml文件中配置该Filter,使用init-param元素为该Filter配置参数,init-param可接受如下两个子元素:

param-name:指定参数名。

param-value:指定参数值。

该Filter的配置片段如下:

 


上面配置片段中粗体字代码为该Filter指定了3个配置参数,指定loginPage为/login.jsp,proLogin为/proLogin.jsp,这表明:如果没有登录该应用,普通用户只能访问/login.jsp和/proLogin.jsp页面。只有当用户登录该应用后才可自由访问其他页面。


<servlet>
    <servlet-name>action<servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
        <param-name>config</param-name>
        <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>

    <init-param>
        <param-name>detail</param-name>
        <param-value>2</param-value>
    </init-param>

    <init-param>
        <param-name>debug</param-name>
        <param-value>2</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>



<load-on-startup>2</load-on-startup>配置的作用
1)load-on-startup元素标记容器是否在启动的时候就加载这个servlet(实例化并调用其init()方法)。
2)它的值必须是一个整数,表示servlet应该被载入的顺序
3)当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet;
4)当值小于0或者没有指定时,则表示容器在该servlet被选择时才会去加载。
5)正数的值越小,该servlet的优先级越高,应用启动时就越先加载。
6)当值相同时,容器就会自己选择顺序来加载。

本文来自优快云博客,转载出处:http://blog.youkuaiyun.com/doymm2008/archive/2009/11/09/4791435.aspx

### 配置过滤器 在 `web.xml` 文件中配置过滤器涉及两个主要部分:定义过滤器及其映射关系。通过 `<filter>` 和 `<filter-mapping>` 元素来完成这一过程[^1]。 #### 定义过滤器 要创建一个新的过滤器,需使用 `<filter>` 标签并提供必要的子标签: - **<filter-name>**: 指定过滤器的名字,在整个应用程序范围内唯一。 - **<filter-class>**: 提供实现 javax.servlet.Filter 接口的具体类的全限定名。 示例如下所示: ```xml <filter> <filter-name>LoginFilter</filter-name> <filter-class>com.ygj.control.LoginFilter</filter-class> </filter> ``` 还可以为过滤器设置初始化参数,这可以通过添加 `<init-param>` 子元素来完成。这些参数允许传递给过滤器实例化时使用的额外信息。 #### 映射过滤器到 URL 模式 一旦定义好了过滤器,则需要告诉服务器哪些请求应该被此过滤器处理。这是由 `<filter-mapping>` 实现的,它同样有两个重要的子标签: - **<filter-name>**: 应与此过滤器定义中的名字相匹配。 - **<url-pattern>**: 描述应触发过滤器执行的一组URL模式。 下面是一个完整的例子: ```xml <filter-mapping> <filter-name>LoginFilter</filter-name> <url-pattern>/secure/*</url-pattern> </filter-mapping> ``` 上述配置意味着任何以 `/secure/` 开头的HTTP请求都将经过名为 LoginFilter 的过滤器处理[^3]。 除了传统的 XML 方式外,也可以利用 Java 注解的方式简化配置工作量[@WebFilter(filterName="EncodingFilter", urlPatterns={"*.action"})][^2];不过本话题聚焦于基于 web.xml 的方式。 对于某些特定类型的过滤功能,比如解决跨域资源共享(CORS)问题或者统一字符集编码转换等场景,可能还需要引入第三方库的支持,并相应调整依赖项列表[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值