4

是否可以使用forward:/语法将请求重定向到非@RequestMapping注释方法。

我想要实现的是一种在内部将请求重定向到无法直接从浏览器访问的路径的方法。

例如,如果用户请求/image.jpg,我想将其重定向到一个控制器,该控制器将回答图像,映射到/img/image.jpg. 关键是/img/image.jpg不能通过浏览器直接访问。

可能吗?我怎样才能实现这种必要性?

4

1 回答 1

1

我认为如果要用于forward:/调用资源,则需要创建请求映射路径。但是,您可以通过以下方式实现:

创建最终用户直接浏览器调用无法访问的请求映射路径。在转发路径请求之前,放置一些额外的请求参数,然后由请求映射器检查。

例子 :

@RequestMapping(value = "/direct/browser/call")
public String connections(WebRequest request) throws SQLException {
    //validate request
    request.setAttribute("formButton", isPost, WebRequest.SCOPE_REQUEST);
    return "redirect:/some/value";
}

@RequestMapping(value = "/some/value")
public String connections(WebRequest request) throws SQLException {
    //validate request
    if(request.getParameter("formButton")!=null) { return "/homepage"; }
    // else : do processing
}

您还可以HTTP GET在请求映射中限制浏览器调用。例子:

@RequestMapping(value = "/some/value", method = RequestMethod.POST)

HTTP 方法:HEAD、PUT、DELETE、TRACE 和 OPTIONS 在您的情况下也很有用。

于 2012-08-30T16:50:00.530 回答