URL大小写问题!!在线等。。。

wyhlgx 2006-08-31 12:58:22
由于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!!
...全文
843 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wyhlgx 2006-08-31
  • 打赏
  • 举报
回复
Thanks!
我还没试,不过先谢过了,如愿意的话,请留QQ或者MSN。
也可以加我,
QQ:963415
MSN:wyhlgx@163.com
shine333 2006-08-31
  • 打赏
  • 举报
回复
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
在<servlet>之前

<filter>
<filter-name>case</filter-name>
<filter-class>xxx.CaseFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>case</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
wyhlgx 2006-08-31
  • 打赏
  • 举报
回复
哦,那好的,谢谢你。可是,如何去写?能帮我吗?。。。
zhangj0571 2006-08-31
  • 打赏
  • 举报
回复
我想写个filter应该也是可以的,把url全部转化为大写或者小写
shine333 2006-08-31
  • 打赏
  • 举报
回复
跟你说了,用filter,servlet是会doXXX无限次的,不管是直接来自客户端的request,还是内部forward/include过来的

而filter默认只接受request,而不会响应forward/include.
wyhlgx 2006-08-31
  • 打赏
  • 举报
回复
这样不行的,我开始在Servlet中用String url=request.getURL().toString;获得URL地址,然后我在转换为小写,最后用request.getRequestDisPatecher("sss.jsp").forward(request,response);进行转向。XML中配置的SERVLET的URL映射为*,虽然能这样想,可是,意想不到的情况是:无限循环出现了。
shine333 2006-08-31
  • 打赏
  • 举报
回复
为什么有这个需求?!干吗要大小写不敏感?!规则已然制定,就需要遵守,干吗去破坏

其中有几个或许还有办法,利用Filter+RequestWrapper,域名只能自己去注册,ContextPath只能靠多发布几个WebApp
边城狂人 2006-08-31
  • 打赏
  • 举报
回复
可能要写个 dispatcher 把 URL 转换成全小写再往里传。
能力有限,不会!
wyhlgx 2006-08-31
  • 打赏
  • 举报
回复
高手们,你们去哪了呀,帮我看看呀~~~~~~~~~~

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧