是否可以使用 forward:/
语法将请求重定向到非 @RequestMapping
注释方法。
我想要实现的是一种在内部将请求重定向到无法直接从浏览器访问的路径的方法。
例如,如果用户请求 /image.jpg
,我想将它重定向到一个 Controller ,该 Controller 将响应图像,映射到 /img/image.jpg
。关键是/img/image.jpg
不能通过浏览器直接访问。
这可能吗?我怎样才能实现这种必要性?
最佳答案
我认为如果你想使用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 对您的情况也很有用。
关于java - 转发请求到非@RequestMapping,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12197656/