当前页面: 开发资料首页 → JSP 专题 → URL大小写问题!!在线等。。。
URL大小写问题!!在线等。。。
摘要: URL大小写问题!!在线等。。。
由于JAVA和JSP是区分大小写,我想请问如何对URL进行过滤。比如正常的URL是:http://www.java-cn.com/bbs-jsp/index.jsp?forum=jsp,我想以下这样的地址也能访问:
http://www.java-cn.com/bbs-jsp/indEx.JSP?forum=jsp
http://www.java-cn.com/bbs-jsp/index.jsp?fOrum=jSP
http://www.java-cn.com/bbs-jSp/index.jsp?forum=jsp
http://www.java-cn.com/bbS-jsp/index.jsp?forum=jsp
http://www.JAVA-cn.com/bbs-jsp/Index.jsp?Forum=jsp
等等这些,意思就是我在浏览这个地址的时候,使其大小写都能浏览,而不报错。
Thanks!!
高手们,你们去哪了呀,帮我看看呀~~~~~~~~~~
可能要写个 dispatcher 把 URL 转换成全小写再往里传。
能力有限,不会!
为什么有这个需求?!干吗要大小写不敏感?!规则已然制定,就需要遵守,干吗去破坏
其中有几个或许还有办法,利用Filter+RequestWrapper,域名只能自己去注册,ContextPath只能靠多发布几个WebApp
这样不行的,我开始在Servlet中用String url=request.getURL().toString;获得URL地址,然后我在转换为小写,最后用request.getRequestDisPatecher("sss.jsp").forward(request,response);进行转向。XML中配置的SERVLET的URL映射为*,虽然能这样想,可是,意想不到的情况是:无限循环出现了。
跟你说了,用filter,servlet是会doXXX无限次的,不管是直接来自客户端的request,还是内部forward/include过来的
而filter默认只接受request,而不会响应forward/include.
我想写个filter应该也是可以的,把url全部转化为大写或者小写
哦,那好的,谢谢你。可是,如何去写?能帮我吗?。。。
package xxx;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
public class CaseFilter implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {
}
public void destroy() {
}
public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain) throws IOException, ServletException {
final HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpServletRequestWrapper wrapper = new HttpServletRequestWrapper(httpRequest) {
public String getServletPath() {
return super.getServletPath().toLowerCase();
}
};
chain.doFilter(wrapper, response);
}
}
web.xml
在
之前
case
xxx.CaseFilter
case
/*
Thanks!
我还没试,不过先谢过了,如愿意的话,请留QQ或者MSN。
也可以加我,
QQ:963415
MSN:wyhlgx@163.com