如何在web.xml描述符中实现复杂的servlet映射

时间:2010-10-22 12:54:59

标签: java url-rewriting struts2 web.xml

我面临下一个任务:我有一个主机,例如host.com和web-application。 用Java编写的应用程序(JSP / Servlets + Struts2)。

我需要对servlet映射实现这样的HTTP请求:如果用户在浏览器中输入地址,如http://host.com/admin.action,其中admin.action - 在struts.xml中定义的现有操作,然后为用户呈现这些struts2操作。如果用户输入类似http://host.com/abra-kadabra的内容,(struts.xml中未定义的动作abra-kadabra),则将此请求传递给某些servlet或struts操作。

有人可以建议怎么做这样的事吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

你可以使用Tuckey非常强大的URLRewriteFilter。即。

<rule>
   <from>^/abra-kadabra$</from>
   <to>/admin.action</to>
</rule>

此规则会将“/ abra-kadabra”上的所有浏览器请求转发给“/admin.action”对用户透明。

答案 1 :(得分:1)

Servlet规范没有给你很多选择。您可以将servlet映射到特定路径(/some/specific/path),某个层次结构(/dir/*)下的所有路径或某个扩展(*.action)。最好的办法是将您的servlet映射到*.action,然后根据request.getRequestURI()request.getServletPath()确定要执行的操作。