【问题标题】:How to get requestURI by using jstl in spring mvc project?如何在spring mvc项目中使用jstl获取requestURI?
【发布时间】:2013-05-31 08:20:53
【问题描述】:

我google了很多,得到了答案:

<c:out value="${pageContext.request.requestURI}" />

但我得到/myapp/WEB-INF/views/index.jsp

我想得到/myapp/index

我该怎么做?

我的项目使用的是 spring mvc。 我在 spring-mvc.xml 中的配置:

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
         <property name="prefix" value="/WEB-INF/views/"/>
         <property name="suffix" value=".jsp"/>
</bean>

在我的/WEB-INF/views/中,有一个index.jsp

我的控制者:

@RequestMapping("/index")
public String welcome() {
    return "index";
}

当我查看localhost:8088/myapp/index 时,它会显示。

【问题讨论】:

标签: spring jsp spring-mvc jstl


【解决方案1】:

尝试使用${requestScope['javax.servlet.forward.servlet_path']}

javax.servlet.forward.* 常量根据传递给 getRequestDispatcher() 的 URI 检索信息(在 Spring Web MVC 的情况下,DispatcherServlet 在处理请求时设置此属性)。但它独立于框架和 Web 容器。

正如文档所说,FORWARD_SERVLET_PATH 是:

请求属性的名称,原始 servlet 路径在该属性下可供转发目标使用

您还应该记住,如果 forward() 通过调用 getNamedDispatcher() 起作用,则未设置这些属性(还有 4 个类似的属性:request_uricontext_pathpath_infoquery_string),因为在这种情况下,路径的初始元素不会改变。

【讨论】:

  • 你能解释一下你的答案吗?这个请求属性是什么?谁将其设置为请求 URI,何时设置?它是标准的,还是特定于 Spring MVC 或特定 Web 容器的?如果有两个前锋会怎样?
  • @JB Nizet 不,我只是在谷歌中找到它来帮助第二次飞行。请添加您的详细答案,我将立即删除我的“答案”
  • 哦,我很快就得到了答案,我喜欢 stackoverflow。谢谢@MaxVasileusky
  • @JBNizet 我在答案中添加了一些信息。如果我错了,请纠正我。
  • @MaxVasileusky:我不知道这个属性,只是好奇地问你。你的答案现在也好多了。 +1。
猜你喜欢
  • 2014-02-09
  • 1970-01-01
  • 1970-01-01
  • 2011-01-22
  • 1970-01-01
  • 2016-08-13
  • 2019-04-17
  • 2020-05-10
  • 2023-03-22
相关资源
最近更新 更多