JSP中的applicationContext对象

raj*_*hch 7 spring

如何在我的spring项目中配置使用JSTL在jsp中检索applicationContext对象.

Ang*_*own 12

<%@page import="org.springframework.web.context.WebApplicationContext"%>
<%@page import="org.springframework.web.context.support.WebApplicationContextUtils"%>
<%
  WebApplicationContext context = WebApplicationContextUtils
        .getWebApplicationContext(application);
%>
Run Code Online (Sandbox Code Playgroud)

application 是JSP定义的ServletContext.

如果要检索bean并使用JSTL,则可以执行以下操作:

<%pageContext.setAttribute("bean", context.getBean("myBean"));%>
<c:out value="${bean.property}"/>
Run Code Online (Sandbox Code Playgroud)

但是,仅仅因为你可以,并不意味着你应该.如果你正在做的不仅仅是显示bean的属性,你可能想把它放在Servlet或其他控制器中.

此外,您希望使用ApplicationContext作为在控制器和视图之间传递bean的方法.


Tom*_*icz 5

Spring根Web应用程序上下文在servlet上下文属性中可用,命名为 org.springframework.web.context.WebApplicationContext.ROOT:

${applicationScope['org.springframework.web.context.WebApplicationContext.ROOT']}
Run Code Online (Sandbox Code Playgroud)

没试过,但应该可以通过JSTL访问.但你想要实现什么?JSP真的是一个手动获取bean并执行一些业务操作的好地方吗?你不应该在servlet/controller中完成所有的工作,让JSP只做视图,因为它是有意的吗?

  • 好的,但是你不能将这个集合添加到servlet/controller中的请求/会话属性,然后使用JSTL轻松访问它们吗?看起来更干净...... (2认同)