java - 在 JSP 中 Autowiring Spring Beans 的最干净的方法是什么?

标签 java spring jsp autowired

我们目前正在向一个仅使用 JSP 而没有任何前端框架的旧 Web 应用程序添加一些新功能。我们最近添加了 Spring,我们希望在修改后的 JSP 中 Autowiring 我们的 bean,而不是重写所有内容以使用 SpringMVC、Struts2 或 Tapestry5。

我们按类型使用 Autowiring ,因此它会导致在 JSP 中获取一些类似这样的代码,同时之前获取 Web 应用程序上下文(如“wap”):

MyDao myDao = (MyDao) wap.getBeansOfType(MyDao.class).values().toArray()[0];

我们不希望使用这样的代码,而是像使用@Autowired 注释将我们的 bean 直接自动注入(inject)到我们的 JSP 中一样。

事实上,我们正在寻找将 bean 注入(inject) JSP 的最干净的方法。你用什么?

最佳答案

您可以使用 Spring 的 ContextExposingHttpServletRequest :

HttpServletRequest decorator that makes all Spring beans in a given WebApplicationContext accessible as request attributes, through lazy checking once an attribute gets accessed.

这需要您的 Controller 代码将原始的 HttpServletRequest 包装在 ContextExposingHttpServletRequest 中,然后将那个 转发给 JSP。它可以公开特定的命名 bean,也可以公开上下文中的每个 bean。

当然,这只是将问题从您的 JSP 转移到您的 Controller 代码,但这也许是一个更易于管理的问题。

关于java - 在 JSP 中 Autowiring Spring Beans 的最干净的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2139121/

相关文章:

java - 为什么我在这个 for 循环中遇到 NullPointerException?

java - 是一个从方法声明中添加javadoc注释的工具

java - 太多的 Maven 依赖

java - 我的 spring 安全代码没有使用静态资源,如 css、js 和图像文件夹

java - 从 JSTL 标记调用自定义 JSP 标记

java - Spring 消息不在 JSP 中加载

jsp - 如何使用 web.xml 隐藏 .jsp 扩展名

java - 如何使用 Javadoc 显示方法的实现

java - 在独立 MockMvc 中测试 @Validated RestController 不起作用

java - 如何检查嵌入式数据库是否存在?