tomcat中url忽略大小写的问题

为了解决Tomcat中URL大小写问题,尝试了两种方法:1) 修改server.xml的Context,设置caseSensitive="false",但这会导致jsp中包含server端代码时出错;2) 创建自定义Filter,通过重写doFilter方法,使用request.getRequestDispatcher进行转发,解决了死循环问题,最终实现了URL大小写不敏感。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

这段时间客户要求url可以任意大小写,调查了很多资料,试了很多方法,最后总结一下

 

1、在server.xml的Context 中,设置caseSensitive="false"

jsp的文件名要全部小写,url中就可以任意大小写,但是这个方法有问题,当jsp中有server端代码时就会报页面找不到。不符合自己当前的情况,不适用。

 

2、重写doFilter

在web.xml中,追加

 <filter>
   <filter-name>Filter</filter-name>
   <filter-class>com.filter.PrFilter</filter-class>
   </filter>
   <filter-mapping>
   <filter-name>Filter</filter-name>
   <url-pattern>*.jsp</url-pattern>

   </filter-mapping>

然后新建java文件com.filter.PrFilter.java

package com.filter;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import java.io.IOException;

public class PrFilter implements Filter {

 public void doFilter(ServletRequest req, ServletResponse res,
   FilterChain chain) throws IOException, ServletException {


  ((HttpServletResponse) res).sendRedirect(((HttpServletRequest) req).getRequestURL().toString().toLowerCase());

 chain.doFilter(req, res);
 }

 @Override
 public void destroy() {
 }

 @Override
 public void init(FilterConfig arg0) throws ServletException {
 }
}

这个方法用了之后发现,死循环了,不停的进入doFilter方法,猜想原因是页面转换之后,没找到正确的页面,所以不停的刷。(注释掉转换大小写的页面后,url指向的页面不刷了,但是刷新验证码的jsp还在闪个不停,故猜测是转换后找不到正确的页面)没找到具体错在哪里,所以只能再想办法。

 

后来把sendRedirect()方法换成了request.getRequestDispatcher,哈哈,总算成功了。

request.getRequestDispatcher(url).forward(request,response);

搞了那么久总算成功了。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值