URL编码的设计解决方案

时间:2010-09-15 09:07:11

标签: java jboss url-rewriting urlencode

我正在计划一个URL重写器/编码器(也许重写器是一个更好的术语)。主要目的是隐藏客户端的确切URL,因为如果他足够聪明,他可以弄清楚如何搞乱应用程序。

URL编码器将是一个内射函数f(x) = y。解码器将是 f 的反函数,比如 g ,使得g(y) = x。这样我就可以编码和解码我的URL。

像以下网址:

http://www.myapp.com/servlet/myapp/template/MyScreen.vm/action/MyAction 会编码为:

http://www.myapp.com/uyatsd6787asv6dyuasgbdxuasydgb876876v

只要不可理解,编码网址中的内容无关紧要。

问题是我不知道如何操纵浏览器显示的URL。我使用JBoss作为servlet容器,使用Turbine servlet作为Web应用程序框架。 我需要一个接收编码URL的模块,对其进行解码,将其传递给Turbine,然后修改响应的URL以再次显示编码的URL。

以前尝试解决问题: 我已经创建了一个servlet过滤器,但我无法访问该URL,因为过滤器接收的是一个JBoss实现的ServletRequest。据我所知,似乎servlet过滤器不是操作URL的好选择。

1 个答案:

答案 0 :(得分:2)

也许你可以做一些事情,比如写一个接受初始请求的servlet,解码URL,然后在内部转发到你现有的servlet。

例如,有一个接受的servlet:

www.myapp.com/enc/uyatsd6787asv6dyuasgbdxuasydgb876876v

可以将此servlet设置为处理以/ enc /或其他标记开头的请求,以指示URL需要转到解码器servlet。它将解码为URL:

/servlet/myapp/template/MyScreen.vm/action/MyAction

然后使用以下内容在内部转发到现有servlet上的此URL:

getServletContext().getRequestDispatcher(decoded_url).forward(req, res);