0

我一直在关注 netbeans 电子商务教程,他们介绍了一个 ControllerServlet,他们设置它来处理多个 URL。

然而他们这样做的方式基本上是有一个大的if then else if声明:

    String userPath = request.getServletPath();

    // if category page is requested
    if (userPath.equals("/category")) {
        // TODO: Implement category request

    // if cart page is requested
    } else if (userPath.equals("/viewCart")) {
        // TODO: Implement cart page request

        userPath = "/cart";

    // if checkout page is requested
    } else if (userPath.equals("/checkout")) {
        // TODO: Implement checkout page request

    // if user switches language
    } else if (userPath.equals("/chooseLanguage")) {
        // TODO: Implement language request

    }

这真的是在单个 servlet 中处理多个 URL 的推荐方法吗?这种方法看起来很可怕而且难以管理。

还是我错过了一些干净利落的处理方式?

4

2 回答 2

1

您应该使用像 Stripes 或 Spring MVC 这样的 MVC 框架,它会为您(以及更多)处理这个问题。在这些框架中,您配置单个 servlet 来拦截对给定 URL 模式(例如 *.action)的所有请求,并且该 servlet 基于注释和/或命名约定和/或配置分派给适当的操作。

于 2012-05-11T17:52:45.457 回答
0

您可以使用ServletFilter并以下列方式配置您的 web.xml,以将客户端请求重定向到适当的目标控制器。

这将使您在上面的代码片段中不断更改不同的用户路径。

使用这种方法,您可以根据您的要求将多个 url 发送到相同(或多个)过滤器。

<filter>
  <filter-name>My Filter</filter-name>
  <filter-class>com.project.my.MYclass</filter-class>
</filter>


<filter-mapping>
  <filter-name>My Filter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>
于 2012-05-11T20:05:58.173 回答