Java Tomcat 5.5中的URL路由和相关链接
我正在尝试向运行在Tomcat5.5中的web应用程序添加URL路由 我想使动态页面URL更友好,将Java Tomcat 5.5中的URL路由和相关链接,java,jsp,tomcat,url-routing,friendly-url,Java,Jsp,Tomcat,Url Routing,Friendly Url,我正在尝试向运行在Tomcat5.5中的web应用程序添加URL路由 我想使动态页面URL更友好,将main.jsp?type=test&group=info更改为main/test/info,这是非常流行的 我在web.xml中设置了以下内容 <servlet> <servlet-name>main</servlet-name> <jsp-file>/main.jsp</jsp-file> </servl
main.jsp?type=test&group=info
更改为main/test/info
,这是非常流行的
我在web.xml中设置了以下内容
<servlet>
<servlet-name>main</servlet-name>
<jsp-file>/main.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>main</servlet-name>
<url-pattern>/main/*</url-pattern>
</servlet-mapping>
主要的
/main.jsp
主要的
/主要/*
在main.jsp中,我使用request.getPathInfo()
获取路由所需的数据。所有这些似乎都很好,当我浏览到http://mytestserver/example/main/test/info
我得到了我期望的html
问题是,该页面上的任何相对链接、图像、样式表、javascript等现在都已断开,因为它们被解释为相对于完整URL
我想不出一个简单的方法来使用静态链接,因为测试服务器和生产服务器上的URL处于不同的级别:http://mytestserver/example/
映射到http://example.com/
在生产中,我真的不想编写代码来包装站点上的每个内部链接,也不想为测试服务器上的每个站点设置虚拟服务器
还有什么我能做的吗?我有一个这样的系统在工作 我们使用一个名为的包,它基本上是作为j2ee过滤器完成的ApacheTomcat重写器。这很酷,但我遇到了同样的问题 为了修复它,我编写了另一个过滤器,在重写器之前插入到过滤器链中。它的工作是在重写器损坏pathinfo之前获取它,并将该信息粘贴到请求属性中。它根据web应用程序根目录的pathinfo解析请求的pathinfo,以计算需要到达web应用程序根目录的“./”数量(从客户端的角度) 然后,系统的其他组件使用该属性的内容来构建它们的相对URL。效果很好 寻找任何分类单元(大足亚科是一个不错的选择)。url重新映射程序将所有看起来像rest-y的链接转换为reqest参数
工作时给我发电子邮件-保罗。Murray@environment.gov.au如果你想要一些来源。这不是秘密,但这是工作,所以我需要许可。有几种方法可以让你的生活更轻松:
标记,则
将链接到http://myserver/example/main/test/info
这是一个链接
,然后您可以在该标记中使用逻辑来创建绝对url。大多数应用程序框架(如struts和spring)已经定义了这样的标记我了解到您不希望在测试服务器中设置虚拟服务器,但从长远来看,这可能会使事情变得更容易。设置它的麻烦很小。谢谢大家的意见。最后,我编写了一个过滤器来处理页面响应,动态更改URL。它工作得很好。