我有一个Servlet名称EditEvent和一个包含两个表单的JSP。 一个用于添加新事件,另一个用于删除事件。
使用两个单独的servlet来处理一个JSP被认为是一种好习惯吗? 如果没有,你将如何处理来自一个servlet的两个post请求?即添加事件和删除事件请求。
欢呼声
答案 0 :(得分:12)
为了处理同一个servlet的多个请求,你必须签订一个像'ACTION'这样的请求参数的契约。然后在表单中将其添加为隐藏字段,其值为“ADD”和“REMOVE”。因此,在doPost()中,您可以检查此参数值,并可以在同一个servlet中调用相应的处理方法。
class YourServlet extends HttpServlet{
public void doPost(HttpReq req, HttpResp resp){
String action = reg.getParameter('ACTION');
if('ADD'.equals(action)){
addEvent();
}
if('REMOVE'.equals(action)){
removeEvent()
} else {
defaultAction();
}
}
}
答案 1 :(得分:11)
这都是你的选择。这完全取决于当前和未来的功能要求。一个简单的替代方法是在servlet中引入一个或两个if
块,您可以在其中检查按下了哪个按钮:
if (request.getParameter("add") != null) {
// Perform add.
}
else if (request.getParameter("remove") != null) {
// Perform remove.
}
假设按钮看起来像这样:
<input type="submit" name="add" value="Add" />
<input type="submit" name="remove" value="Remove" />
一个复杂的替代方案是转向普通的MVC框架,您只需指定特定的操作方法即可。例如,JSF:
<h:commandButton value="Add" action="#{bean.add}" />
<h:commandButton value="Remove" action="#{bean.remove}" />