Struts 似乎有一个用于 DELETE HTTP 方法的默认处理程序 doDelete。我实现的 servlet 不使用任何 DELETE 方法。但是,当我使用 curl 执行方法查询时,确实会出现 DELETE 方法。
我想知道实现doDelete的默认servlet的默认行为。谢谢。
Struts 2 通过核心restful 映射器中的两个可用来支持 REST ,但您必须先启用它们。或者使用Struts 2 REST 插件。
在这两种情况下,您必须首先配置 Struts 2 以启用 REST 支持。
不太了解Struts2及其对Actions的使用。但是,如果您定义自己的 servlet,您将具有与带有 ActionServlets 的 Struts1 相同的行为。ActionServlet 是 HttpServlet 的子类,并且不会覆盖该doDelete
方法。以下是该方法的开源代码:doDelete
HttpServlet
protected void doDelete(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
String protocol = req.getProtocol();
String msg = lStrings.getString("http.method_delete_not_supported");
if (protocol.endsWith("1.1")) {
resp.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, msg);
} else {
resp.sendError(HttpServletResponse.SC_BAD_REQUEST, msg);
}
}
该方法在 servlet 上的默认实现会返回一个错误(您可以使用REST ConsoledoDelete
之类的工具向示例 servlet发送DELETE
请求来验证该错误)。