首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在注释为@ WebContext的类中获取

如何在注释为@ WebContext的类中获取
EN

Stack Overflow用户
提问于 2012-11-03 14:17:55
回答 5查看 23.4K关注 0票数 8

在带有注释的Spring MVC中,我们用@Controller标记任何POJO。在这个控制器中,我们可以使用自动连接属性来获取WebApplicationContext。

代码语言:javascript
复制
@Controller
public class HomePageController {

@Autowired
ApplicationContext act;

    @RequestMapping("/*.html")
    public String handleBasic(){
        SimpleDomain sd = (SimpleDomain)act.getBean("sd1");
        System.out.println(sd.getFirstProp());
        return "hello";
}

但是在这种方法中,我们没有现成的servletContext。那么有没有办法让我们仍然使用旧的方法来获取WebApplicationContext呢?即

代码语言:javascript
复制
WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext)

我们怎么才能把servletContext带到这里来?

我没有被迫使用旧的方式,所以这个问题只是出于好奇来检查弹簧的灵活性。它也可以是一个面试问题。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-11-04 00:11:37

你可以直接把它注入你的控制器:

代码语言:javascript
复制
@Autowired private ServletContext servletContext;

或者将HttpServletRequest作为参数并从那里获取它:

代码语言:javascript
复制
@RequestMapping(...)
public ModelAndView myMethod(HttpServletRequest request ...){
    ServletContext servletContext = request.getServletContext()
}
票数 16
EN

Stack Overflow用户

发布于 2012-11-04 14:03:32

以下是正确的方法:

代码语言:javascript
复制
@Autowired
ServletContext context;

否则,您可以实现ServletContextAware,而不是自动连接ServletContext。Spring在web应用程序上下文中运行时会注意到这一点,并注入ServletContext。阅读this

票数 2
EN

Stack Overflow用户

发布于 2015-07-20 20:01:27

你也可以通过内联来实现:

代码语言:javascript
复制
@RequestMapping(value = "/demp", method = RequestMethod.PUT)
public String demo(@RequestBody String request) {
    HttpServletRequest re3 = ((ServletRequestAttributes) RequestContextHolder

            .getRequestAttributes()).getRequest();
    return "sfsdf";
 }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13206588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档