java - 转发请求到非@RequestMapping

标签 java spring spring-mvc forwarding

是否可以使用 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/

相关文章:

java - 带有 Jython 的 Eclipse 不理解 Java 导入

java - IntelliJ 中的 Spring MVC 4 项目模板

java - 避免方法之间的 hibernate session 破坏

Spring安全和特殊字符

spring - BCryptPasswordEncoder - 编码密码看起来不像 BCrypt

Spring:绑定(bind)到命令时转义输入

spring-mvc - 在 Thymeleaf 方言处理器中访问 HttpServletRequest 和 HttpServletResponse

java - 在 XWiki 的子维基中注册基于 Java 的监听器

java - 返回 null 的构造函数的替代方案

java - 如何使用 Java 为 Leap Motion 编程