我一直关注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的推荐方法?这种方法看起来很糟糕,难以管理。
或者我错过了一些明显的处理方式吗?
答案 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>