java - URL编码的设计方案

标签 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 中的内容并不重要。

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

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

最佳答案

也许您可以编写一个 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);

关于java - URL编码的设计方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3716179/

相关文章:

java - Java中如何将子类中的方法传递给主类

java - 尝试迭代 HashMap 并添加到 JComboBox

jboss 服务器的 Java 文档?

jakarta-ee - 吉/JBoss : Accessing application server parameters during runtime

asp.net - IIS URL 重写 : Add trailing slash except for . html 和 .aspx

java - 如何使用 HttpsURLConnection 连接到 https URL

java - 在 Java EE 5 (JBoss) 平台上启动计划任务的正确方法是什么?

url - 是否可以使用 ColdFusion 重写 url?

php - 在 IIS7 上使用 web.config 删除 .php 扩展名

java - 使用 Java 将 Base64 转换为二进制