对多个HTML表单使用单个Servlet

对多个HTML表单使用单个Servlet,html,jsp,servlets,Html,Jsp,Servlets,我不熟悉Java的JSP和servlet 我试图用一个Servlet控制器控制两个不同的HTML表单。我遵循的方法是以两种形式创建一个隐藏字段,然后在我的Servlet中编写: String extra= request.getParameter("value"); //value is name of hidden textbox in my both forms 然后,使用if-else 我的问题是,有没有更好的方法来解决这个问题?我的实现非常繁琐,我希望在整个应用程序中使用单个serv

我不熟悉Java的JSP和servlet

我试图用一个Servlet控制器控制两个不同的HTML表单。我遵循的方法是以两种形式创建一个隐藏字段,然后在我的Servlet中编写:

String extra= request.getParameter("value"); 
//value is name of hidden textbox in my both forms
然后,使用if-else


我的问题是,有没有更好的方法来解决这个问题?我的实现非常繁琐,我希望在整个应用程序中使用单个servlet。

这是可行的,但考虑到可伸缩性,我不会这么做。 您对只使用一个servlet有任何限制吗? 如果你计划开发更大的东西,你可以尝试一些框架,比如或者你的项目已经开始了。
您还可以尝试使用web服务与应用程序交互。在这种情况下,Jackson+Jersey可以很好地协同工作。

如何处理不同的表单取决于您。因为servlet只能有一个DOPOST方法,所以您使用的方法会起到作用,但是,我宁愿考虑引入一个框架,比如Spring MVC,它将为您节省几行代码,并允许您以MVC模式使用servlet控制器。
<>我一直遵循的一个最佳实践是,每页都有一个servlet /控制器,如果你的表单被嵌入在不同的页面中,我认为你可以考虑有两个servlet而不是一个servlet。

< P>如果你要为两个表单请求相同的方法,POST等,你对JSPs都有共同的任务,你可以创建一个servlet,就像你那样


但若它不局限于一个或两个字段,那个么代码将变得复杂、可读性差并且难以维护。因此,在这种情况下,我建议您为单个表单创建单独的Servlet。

这是一个很好的解决方案,但我建议为每个表单指定专用路径,其中所有路径都用于一个Servlet

servlet路径类似于{/path,/path/*},表单一将调用/path/cgi0,/path/cgi1

然后只需检查请求的路径而不是参数


这将使服务器端的业务和代码保持繁忙,但为客户端提供更好、更像API的系统如果他们关心,您可以做的是从同一个servlet中包含doGet和doPost响应,然后使用操作x向servlet的Post部分发送Get响应,您是对的。但正如我提到的,我对JavaWeb完全陌生,从基础开始练习。我认为在每个新请求上使用新的servlet不是一个好的实践,并不是为每个请求创建一个servlet。你可能想读一本关于一个家庭的书。实际上,每个表单都有一个servlet是很常见的。这意味着拥有尽可能多的servlet不会让应用程序付出代价?如果使用框架,例如Spring MVC,那么无论表单/页面上有多少操作或请求,您只需要使用一个servlet。
if(extra.equals(x))
  do this....
else if(extra.equals(y))
  do this...