url-pattern配置技巧

本文介绍了一种在配置Filter Mapping时出现的URL模式匹配错误,并给出了解决方案,即通过精确指定URL模式来确保Filter仅对预期路径进行过滤。

我在配置Filter-mapping时,配置如下:

 <filter-mapping>
  <filter-name>aFilter</filter-name>
  <url-pattern>/a/*</url-pattern>
 </filter-mapping>
希望能过滤网站a地址下的所有请求。在实际的运行中,它确实能过滤a地址下的,不会过滤b地址下的。但是对于不在子目录下的请求(假如我的站点叫demo),如:http://localhost:8080/demo/aDemo.do,这个请求地址竟然能和 <url-pattern>/a/*</url-pattern>匹配。这显然是错误的。我们仅希望能过滤http://localhost:8080/demo/a/*.do

经过查询无数资料,终于发现了,应该修改映射为:

 <filter-mapping>
  <filter-name>aFilter</filter-name>
  <url-pattern>/a/*.*</url-pattern>
 </filter-mapping>

Ok!终于成功啦!

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd" version="6.0"> <display-name>wenote</display-name> <!-- 欢迎页面 --> <welcome-file-list> <welcome-file>index.jsp</welcome-file> <welcome-file>index.html</welcome-file> </welcome-file-list> <!-- Servlet配置 --> <servlet> <servlet-name>HomeController</servlet-name> <servlet-class>cn.edu.lyu.fxfx.wenote.controller.HomeController</servlet-class> </servlet> <servlet-mapping> <servlet-name>HomeController</servlet-name> <url-pattern>/home/*</url-pattern> </servlet-mapping> <servlet> <servlet-name>UserController</servlet-name> <servlet-class>cn.edu.lyu.fxfx.wenote.controller.UserController</servlet-class> </servlet> <servlet-mapping> <servlet-name>UserController</servlet-name> <url-pattern>/user/*</url-pattern> </servlet-mapping> <servlet> <servlet-name>NoteController</servlet-name> <servlet-class>cn.edu.lyu.fxfx.wenote.controller.NoteController</servlet-class> </servlet> <servlet-mapping> <servlet-name>NoteController</servlet-name> <url-pattern>/note/*</url-pattern> </servlet-mapping> <!-- 编码过滤器 --> <filter> <filter-name>EncodingFilter</filter-name> <filter-class>cn.edu.lyu.fxfx.wenote.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> <filter-name>AuthFilter</filter-name> <filter-class>cn.edu.lyu.fxfx.wenote.filter.AuthFilter</filter-class> </filter> <filter-mapping> <filter-name>AuthFilter</filter-name> <url-pattern>/home/*</url-pattern> <url-pattern>/note/*</url-pattern> </filter-mapping> <!-- 错误页面 --> <error-page> <error-code>404</error-code> <location>/WEB-INF/error/404.jsp</location> </error-page> <error-page> <error-code>500</error-code> <location>/WEB-INF/error/500.jsp</location> </error-page> <error-page> <exception-type>java.lang.Exception</exception-type> <location>/WEB-INF/error/error.jsp</location> </error-page> <!-- 会话配置 --> <session-config> <session-timeout>30</session-timeout> <cookie-config> <http-only>true</http-only> <secure>false</secure> </cookie-config> </session-config> <!-- 上下文参数 --> <context-param> <param-name>uploadPath</param-name> <param-value>/upload</param-value> </context-param> <context-param> <param-name>appName</param-name> <param-value>个人笔记系统</param-value> </context-param> <!-- JSP配置 --> <jsp-config> <jsp-property-group> <url-pattern>*.jsp</url-pattern> <page-encoding>UTF-8</page-encoding> <default-content-type>text/html;charset=UTF-8</default-content-type> <trim-directive-whitespaces>true</trim-directive-whitespaces> </jsp-property-group> </jsp-config> </web-app> 怎么改
最新发布
12-14
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值