tomcat中url忽略大小写的问题

 

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

 

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

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

 

2、重写doFilter

在web.xml中,追加

 
   Filter
   com.filter.PrFilter
   

  
   Filter
   *.jsp

   

然后新建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);

搞了那么久总算成功了。

 

 

 

 

 

你可能感兴趣的:(技术)