如何在控制器操作方法中获取Web.xml context-param值?

时间:2011-04-07 16:26:40

标签: spring-mvc web-config

这感觉就像一个基本问题,但我没有太多运气谷歌搜索。

我的应用程序连接到SMTP服务器并通过它发送邮件。我需要根据部署应用程序的环境来配置此SMTP服务器。

如何指定在我的web.xml配置文件中指定SMTP服务器名称并从我的Spring MVC 3.0控制器访问它?

控制器不会扩展或实现任何操作。它是使用@Controller@RequestMapping完全注释的。根据我在网上看到的,人们通过servlet API访问context-params。作为注释驱动,我无权访问servlet对象。

3 个答案:

答案 0 :(得分:2)

我解决了这个问题。

让您的控制器实现ServletContextAware,这需要一个名为

的方法
setServletContext(ServletContext servletContext)

如果您的控制器是ServletContextAware,Spring MVC会将servlet上下文注入此方法。

在控制器上创建一个私有变量,用于存储注入上述方法的servletController。您现在可以像使用常规servlet一样使用servletContext。

第h

答案 1 :(得分:2)

添加Servletcontext的实例并自动装配它对我有用

@Controller
public MyController {

// other instances relevant to your requirement

    @Autowired
    private ServletContext sCtx;

//other methods relevant to your requirement

}

答案 2 :(得分:1)

我认为以下也应该有效:

void action(final HttpServletRequest request) {
    final paramValue = request.getSession().getServletContext().getInitParameter("paramName");
    ...
}
相关问题