【发布时间】:2012-04-02 13:33:18
【问题描述】:
我有一个名为 EditEvent 的 Servlet 和一个包含两种表单的 JSP。 一个用于添加新事件,另一个用于删除事件。
使用两个单独的 servlet 处理一个 JSP 是否被认为是一种好习惯? 如果不是,您将如何处理来自一个 servlet 的两个 post 请求?即添加事件和删除事件请求。
干杯
【问题讨论】:
标签: jsp jakarta-ee servlets
我有一个名为 EditEvent 的 Servlet 和一个包含两种表单的 JSP。 一个用于添加新事件,另一个用于删除事件。
使用两个单独的 servlet 处理一个 JSP 是否被认为是一种好习惯? 如果不是,您将如何处理来自一个 servlet 的两个 post 请求?即添加事件和删除事件请求。
干杯
【问题讨论】:
标签: jsp jakarta-ee servlets
这都是你的选择。这完全取决于当前和未来的功能需求。一个简单的替代方法是在 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}" />
【讨论】:
要通过同一个 servlet 处理多个请求,您必须签订合同以具有像“ACTION”这样的请求参数。然后在您的表单中将此添加为隐藏字段,其中包含“添加”和“删除”等值。因此,在 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();
}
}
}
【讨论】: