我面临下一个任务:我有一个主机,例如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操作。
有人可以建议怎么做这样的事吗?
谢谢!
答案 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()
确定要执行的操作。