我有一个名为EditEvent的Servlet和一个包含两个表单的JSP页面,一个用于添加新事件,另一个用于删除事件。
使用两个单独的servlet处理一个JSP是否被认为是良好的实践? 如果不是,你会如何处理来自一个servlet的两个POST请求?即添加事件和删除事件请求。
谢谢
我有一个名为EditEvent的Servlet和一个包含两个表单的JSP页面,一个用于添加新事件,另一个用于删除事件。
使用两个单独的servlet处理一个JSP是否被认为是良好的实践? 如果不是,你会如何处理来自一个servlet的两个POST请求?即添加事件和删除事件请求。
谢谢
为了处理同一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();
}
}
}
这完全取决于当前和未来的功能要求,您可以自行决定。一个简单的替代方案是在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}" />