对于处理多个URL的控制器servlet,推荐的方法是什么?

时间:2012-05-11 17:12:46

标签: url java-ee servlets

我一直关注netbeans电子商务教程和他们设置的introduced a ControllerServlet来处理多个网址。

然而,他们这样做的方式基本上是有一个很大的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的推荐方法?这种方法看起来很糟糕,难以管理。

或者我错过了一些明显的处理方式吗?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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

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

<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>
相关问题