【问题标题】:Can I specify application path in @RequestMapping on controller?我可以在控制器上的 @RequestMapping 中指定应用程序路径吗?
【发布时间】:2016-04-29 17:09:05
【问题描述】:

我可以使用 EL 在我的 Spring 控制器上使用 @RequestMapping("${pageContext.request.contextPath}") 之类的东西指定我的应用程序上下文路径吗?实际上,我收到 404 错误。所以我的问题是如何在上下文根上映射控制器?

我认为@RequestMapping("/") 在服务器上不是单独的应用程序时无法完成这项工作,并且 url 看起来像: http://localhost:8080/myapp/mypage

@Controller
@RequestMapping("${pageContext.request.contextPath}")
public class MainController {

    @RequestMapping("/")
    public ModelAndView index() {

    }
}

PS:我已经在我的 JSP 上的每个 url 中添加了应用程序路径前缀,例如 <form class="form-inline" role="form" action="${pageContext.request.contextPath}/search" method="post">。现在,我需要为我的 Spring 控制器使用相同的技巧以使其在以下情况下工作......无论应用程序部署为 ROOT 应用程序还是“只是此服务器上的另一个应用程序”。

【问题讨论】:

  • 您想添加上下文路径作为每个 URL 的前缀?
  • 这没有任何意义。映射已经相对于上下文根。 Spring 的 DispatcherServlet 映射到 /。 Servlet 容器已经确定应该调用应用程序的 Servlet。

标签: spring spring-mvc


【解决方案1】:

您可以在 application.properties 配置文件中添加根上下文路径。该根上下文路径将是所有控制器路径的前缀路径。

application.properties

server.contextPath=/myapp/mypage

控制器

@RequestMapping("/test")

结果:

http://localhost:8080/myapp/mypage/test

【讨论】:

    猜你喜欢
    • 2012-05-01
    • 2012-02-08
    • 1970-01-01
    • 2014-02-22
    • 1970-01-01
    • 2017-09-02
    • 2015-05-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多