在带有注释的Spring MVC中,我们用@Controller标记任何POJO。在这个控制器中,我们可以使用自动连接属性来获取WebApplicationContext。
@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呢?即
WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext)我们怎么才能把servletContext带到这里来?
我没有被迫使用旧的方式,所以这个问题只是出于好奇来检查弹簧的灵活性。它也可以是一个面试问题。
发布于 2012-11-04 00:11:37
你可以直接把它注入你的控制器:
@Autowired private ServletContext servletContext;或者将HttpServletRequest作为参数并从那里获取它:
@RequestMapping(...)
public ModelAndView myMethod(HttpServletRequest request ...){
ServletContext servletContext = request.getServletContext()
}发布于 2012-11-04 14:03:32
以下是正确的方法:
@Autowired
ServletContext context;否则,您可以实现ServletContextAware,而不是自动连接ServletContext。Spring在web应用程序上下文中运行时会注意到这一点,并注入ServletContext。阅读this。
发布于 2015-07-20 20:01:27
你也可以通过内联来实现:
@RequestMapping(value = "/demp", method = RequestMethod.PUT)
public String demo(@RequestBody String request) {
HttpServletRequest re3 = ((ServletRequestAttributes) RequestContextHolder
.getRequestAttributes()).getRequest();
return "sfsdf";
}https://stackoverflow.com/questions/13206588
复制相似问题