我有一个设计问题:)
我想有多个servlet,但我不希望每次都配置一个新的servlet用新名称,并延长了HttpServlet。 我想有一个通用的servlet其分派不同的参数,这实际上是处理请求的不同的具体类。
例如:theese两个电话将使用相同的通用servlet处理,但分派给不同的服务(类)。
/ serviceservlet?动作=动作1&参数1 = TEST1&param2的= TEST2 / serviceservlet?动作= 1动作&param21 =测试
这可以在许多不同的方式来完成,我不知道去哪个设计师。 一个我现在是使用吉斯对引导和看起来像这样:
@辛格尔顿公共类ServiceServlet延伸的HttpServlet {
private static final String PARAM_ACTION = "action";
private final Service1 service1; // Service1 is an interface
private final Service2 service2; // Service2 is another interface
@Inject
public ServiceServlet(final Service1 service1) {
this.service1 = service1;
}
@Inject
public ServiceServlet(final Service2 service2) {
this.service2 = service2;
}
@Override
public void doPost(final HttpServletRequest request, final HttpServletResponse response) {
String action = ServletUtils.getStringParameter(request, PARAM_ACTION);
if ("action1".equals(action)) {
... check that the parameters are correct before executing the below to have typesafety
service1.process(request.getParameter("param1"), request.getParameter("param2"));
} else if ("action2".equals(action)) {
... check that the parameters are correct before executing the below to have typesafety
service2.process(request.getParameter("param21"));
}
}
}
原则上,我想在一个更通用的方法来处理这些服务,我希望它尽可能以后添加新的服务一样容易,但我不想失去类型安全。 你认为什么是最好的策略?
/溴joynes