当前位置: 首页 > 知识库问答 >
问题:

Spring获取ServletContext并将其作为Bean提供

曾泳
2023-03-14

我想在JavaSpring Webproject中获取ServletContext,并使用它来获取我的Web应用程序项目的绝对路径。我在JavaEE和Spring方面仍然是初学者,所以可能我有一些概念错了。在java类中,我想在其中使用ServletContext,当使用@Autow的ServletContext上下文时,我只得到了一个空对象;但是在我的RestConfigution类中,它扩展了WebMvcConfigrerAdapter类,我得到了ServletContext,并且我可以在JavaBean中使用它,返回类型为ServletContext。但是我不知道,如何在另一个类中使用Bean来获取ServletContext,这可能吗?

@Configuration
@EnableWebMvc
@Import({ ServiceConfiguration.class, SecurityConfiguration.class })
@ComponentScan(basePackages = { "de.rest", "de.security" })
public class RestConfiguration extends WebMvcConfigurerAdapter {

  @Autowired
  ServletContext context;    

  @Bean
  public ServletContext getServletContext() {
    System.out.println("*** Context path: *** " + context.getRealPath("/"));
    return context;
  }}

共有2个答案

督弘化
2023-03-14

多亏了您的帮助,我解决了这个问题,将我的目标类的包添加到@ComponentScan,声明了我的目标类@Component,并插入了我以前使用的Bean。以下是生成的代码片段:

...
@ComponentScan(basePackages = { "de.rest", "de.security", "de.targetPackage" })
public class RestConfiguration extends WebMvcConfigurerAdapter {
...



@Component
public class targetClass {

  private static String absoluteServletContextPath;

  @Autowired
  ServletContext context;

  @Bean
  public ServletContext getServletContext() {
    absoluteServletContextPath = context.getRealPath("/");
    System.out.println(absoluteServletContextPath);
    return context;
  }

  @Override
  public void myMethod {

        absoluteServletContextPath = absoluteServletContextPath.replaceAll("webapp\\\\", "")
          .replaceAll("\\\\", "/");}}
穆浩皛
2023-03-14

你可以写

@Autowired
ServletContext context;

在其他bean注释类中也是如此。您将获得相同的上下文。因此,您无需指定:

@Bean
  public ServletContext getServletContext() {
    System.out.println("*** Context path: *** " + context.getRealPath("/"));
    return context;
  }}

例如(在注释中指定的目录中的任何类):

@Bean
class X {
    @Autowired
    ServletContext context;

    ...
}
 类似资料:
  • 问题内容: 假设您具有以下图像: 现在,我想将每个独立字母提取到单个图像中。目前,我已经恢复了轮廓,然后绘制了一个边框,在这种情况下,是针对角色: 之后,我要提取每个框(在本例中为letter )并将其保存到图像文件中。 预期结果: 到目前为止,这是我的代码: 提前致谢。 问题答案: 以下将给您一封信

  • 主要内容:1. ServletActionContext,2. ServletContextAware,参考在Struts2中,可以使用以下两种方法来获取ServletContext对象。 1. ServletActionContext 直接从 org.apache.struts2.ServletActionContext 获取 ServletContext 对象。 2. ServletContextAware 让你的类实现了org.apache.struts2.util.ServletCont

  • 问题内容: 是否可以从ServletContext获取HttpServletRequest? 问题答案: 是否可以从ServletContext获取HttpServletRequest? 没有。 该代表的应用程序。该应用程序可以涵盖许多会话和请求。但是您无法通过来获取“当前正在运行”的请求或会话。有关servlet和作用域如何工作的详细信息,可以在以下相关答案中找到:servlet如何工作?实例化

  • 问题内容: 到目前为止,这就是我所拥有的:我传递一个具有2个字段的对象:String和Integer作为参数,并且我想发送信息以在C部分中对其进行处理,这在当时并不重要…我抱怨在jstring声明 我想念什么? 问题答案: ……然后一切正常。

  • 我如何将日期时间转换为PST取决于他们在哪里(东部时间或格林尼治时间),并考虑到白天光节省。 任何帮助将是感激的。 谢谢你

  • 我现在有这个JSON文件: 我想获取所有用户名并将其转换为ArrayList。所以我的ArrayList只有用户名、用户名1和用户名2。 我也在使用org. JSON。