通过继承HttpServletRequestWrapper 修改请求的地址,实现url重写,大神们可以这样做吗?

高坚果兄弟 2013-06-22 07:22:38
我想实现浏览器请求一个地址/aa,request对象中的地址为/bb.jsp,美其名曰url rewrite
想在Filter中就完成这一步chain.doFilter(new requestWrapper(Request),Response)
requestWrapper extends HttpServletRequestWrapper

今天刚学的filter,百度到HttpServletRequestWrapper这个东西如获至宝啊。

requestWrapper 中要重写什么方法 才能实现改写请求的地址呢?
...全文
797 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
pinkagain 2015-08-22
  • 打赏
  • 举报
回复
import java.util.regex.Pattern; import javax.servlet.ServletRequest; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestWrapper; public class FilteredRequest extends HttpServletRequestWrapper { public FilteredRequest(ServletRequest request) { super((HttpServletRequest) request); } public String getRequestURI() { int contextPathLength=super.getContextPath().length(); String requestSubUrl=super.getRequestURI().substring(contextPathLength); int finalUrlLength=requestSubUrl.lastIndexOf("/"); String finalUrl=requestSubUrl.substring(finalUrlLength); if(!Pattern.matches("^[^\\.]*\\.jsp", finalUrl)){ String finalRequestUrl=super.getContextPath()+finalUrl; return finalRequestUrl; } return super.getRequestURI(); } public String[] getParameterValues(String paramName) { String values[] = super.getParameterValues(paramName); return values; } }
伟大的徐 2014-02-25
  • 打赏
  • 举报
回复
有答案么。。。
高坚果兄弟 2013-06-24
  • 打赏
  • 举报
回复
没人
团团员圆 2013-06-23
  • 打赏
  • 举报
回复
不知楼主要的是不是 服务器 间的跳转 req.getRequestDispatcher("bb.jsp").forward(req, resp);
高坚果兄弟 2013-06-23
  • 打赏
  • 举报
回复
引用 1 楼 lovejiwan_99 的回复:
不知楼主要的是不是 服务器 间的跳转 req.getRequestDispatcher("bb.jsp").forward(req, resp);
不是要这样的,由于request里的getParameter接收的参数不能更改,而通过HttpServletRequestWrapper包装类,自己实现一个request那么getParameter得到的参数就可以自己控制了,比如修改删除添加参数。 既然接收的参数可以改了,那么请求的地址/aa是否也可以改成/bb.jsp(如上参数已经可以随便更改),从而实现url重写
高坚果兄弟 2013-06-23
  • 打赏
  • 举报
回复
有点眉目了,刚边吃饭边测试,发现HttpServletRequestWrapper重写getServletPath方法返回要转到的地址即可实现部分链接重写 如/aa.jsp到/bb.jsp 不过默认页(首页)就不行,一定要加默认页名称才可以。 /aa到不了/bb.jsp 还要在试试看还有什么好方法。

81,090

社区成员

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

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