1

Struts 似乎有一个用于 DELETE HTTP 方法的默认处理程序 doDelete。我实现的 servlet 不使用任何 DELETE 方法。但是,当我使用 curl 执行方法查询时,确实会出现 DELETE 方法。

我想知道实现doDelete的默认servlet的默认行为。谢谢。

4

2 回答 2

1

Struts 2 通过核心restful 映射器中的两个可用来支持 REST ,但您必须先启用它们。或者使用Struts 2 REST 插件

在这两种情况下,您必须首先配置 Struts 2 以启用 REST 支持。

于 2013-01-29T07:56:05.833 回答
1

不太了解Struts2及其对Actions的使用。但是,如果您定义自己的 servlet,您将具有与带有 ActionServlets 的 Struts1 相同的行为。ActionServlet 是 HttpServlet 的子类,并且不会覆盖该doDelete方法。以下是该方法的开源代码doDeleteHttpServlet

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请求来验证该错误)。

于 2013-01-29T04:46:58.093 回答