【问题标题】:How to implement complicated servlet mapping in web.xml descriptor如何在 web.xml 描述符中实现复杂的 servlet 映射
【发布时间】:2011-04-29 03:49:00
【问题描述】:

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

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

有人可以建议如何做这样的事情吗?

谢谢!

【问题讨论】:

    标签: java url-rewriting struts2 web.xml


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2013-09-24
        • 2015-03-01
        • 2013-01-20
        • 2012-04-17
        • 1970-01-01
        • 2023-03-18
        • 2013-03-01
        相关资源
        最近更新 更多