【问题标题】:A servlet or filter that dynamically maps /xxx/yyy/zzz to class XxxYyyZzz.java将 /xxx/yyy/zzz 动态映射到类 XxxYyyZzz.java 的 servlet 或过滤器
【发布时间】:2011-06-14 19:38:46
【问题描述】:

我想编写一个 servlet 或过滤器,自动将 url /xxx/yyy/zzz 映射到类 XxxYyyZzz.java。

例如,以下 URL 将映射到以下 java 类:

/comment/add --> CommentAdd.java
/comment/delete --> CommentDelete.java
/comment/view --> CommentView.java
/search --> Search.java
/viewposts --> Viewposts.java

此外,servlet 或过滤器必须符合两个额外的要求:

  1. servlet 或过滤器应该有一个“/*”的 servlet 映射,我不想要一个带有多个 servlet“/comment/*”、“/search”等的前缀。

  2. 可能很难,但是拥有 /* 的 servlet 映射不应允许它覆盖 JSP 处理。意思是,如果没有找到一个类,它应该检查一个jsp页面是否存在并运行它。

我想知道如何使用 Servlet API 来做到这一点。请不要向我推荐任何可以完成这项工作的框架。给我看看代码。

映射到的类将遵循命令模式或可能是 HttpServlet 的子类。在这两种情况下,都应该存在类似“execute(HttpServletRequest request, and HttpServletResponse response)”的方法。一旦访问 URL 并且可能使用单个 servlet 或过滤器找出 java 类,此方法将自动执行。

【问题讨论】:

标签: java jsp servlets servlet-filters


【解决方案1】:

您可以使用Stripes framework 及其默认NameBasedActionResolver config

【讨论】:

    【解决方案2】:

    我不确定,如果我明白你的意思。如果我这样做了:

    你不需要什么特别的,写一个映射到“/”的 Servlet,这样它就可以得到一切。解析 PATH_INFO(现在不知道它在 Java 中是如何调用的),使用 Class.forName(或使用预填充的 Map),然后调用其方法执行。

    【讨论】:

    • 是的,但我需要 servlet 的 web.xml 配置以及它将如何处理将未映射的类路由到 JSP 页面。
    • 目前,您的答案是正确的,但我仍然需要将 servlet 映射到 /* 并且仍然能够处理 JSP。我将在另一个问题中提出这个问题。
    【解决方案3】:

    这是一个http://www.tuckey.org/urlrewrite/ 过滤器实现,可能会对您有所帮助。看看这个。不过我自己没用过。

    【讨论】:

      猜你喜欢
      • 2011-08-09
      • 1970-01-01
      • 2012-02-19
      • 2011-04-10
      • 1970-01-01
      • 2013-10-05
      • 1970-01-01
      • 2012-04-24
      • 1970-01-01
      相关资源
      最近更新 更多