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

基于Spring java的配置-无法打开ServletContext资源

席弘图
2023-03-14

我正在为一个项目使用完全基于java的配置。

部署webapp时,我得到以下错误:

问题是我不明白为什么Spring在我注册类配置时尝试加载XML配置:

WebappInitializer:

package net.brewspberry.util.config;

import javax.servlet.Filter;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration;

import net.brewspberry.filters.AuthentificationFilter;

import org.springframework.context.annotation.Bean;
import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.ContextLoaderListener;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

public class SpringWebappInitializer extends
        AbstractAnnotationConfigDispatcherServletInitializer implements
        WebApplicationInitializer {

    public void onStartup(ServletContext servletContext)
            throws ServletException {

        AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();

        rootContext.setServletContext(servletContext);

        // rootContext.setConfigLocation("net.brewspberry.util");

        rootContext.register(SpringCoreConfiguration.class);

        servletContext.addListener(new ContextLoaderListener(rootContext));

        // now the config for the Dispatcher servlet
        AnnotationConfigWebApplicationContext mvcContext = new     AnnotationConfigWebApplicationContext();
    // mvcContext.setConfigLocation("net.brewspberry.util.config");
    //mvcContext.register(SpringWebappConfiguration.class);


    ServletRegistration.Dynamic dispatcher = servletContext.addServlet(
            "DispatcherServlet", new DispatcherServlet(mvcContext));

    dispatcher.setLoadOnStartup(1);
    dispatcher.addMapping("*.do");

}




@Override
protected Filter[] getServletFilters() {
    return null; // new Filter[] { new AuthentificationFilter() };

}

@Override
protected Class<?>[] getRootConfigClasses() {
    // TODO Auto-generated method stub
    return null;
}

@Override
protected Class<?>[] getServletConfigClasses() {
    // TODO Auto-generated method stub
    return null;
}

@Override
protected String[] getServletMappings() {
    // TODO Auto-generated method stub
    return null;
}

}

Webapp配置:

package net.brewspberry.util.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

@Configuration
@EnableWebMvc
@ComponentScan({ "net.brewspberry" })
public class SpringWebappConfiguration extends WebMvcConfigurerAdapter {

    @Override
    public void configureDefaultServletHandling(
            DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
    }

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("forward:/login.jsp");
    }

    @Bean(name = "viewResolver")
    public InternalResourceViewResolver getViewResolver() {
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setPrefix("/");
        viewResolver.setSuffix(".jsp");
        return viewResolver;
    }

}
        mvcContext.register(SpringWebappConfiguration.class);

知道吗?

共有1个答案

干浩阔
2023-03-14

您必须指定dispatcher servlet以使用SpringWebappConfiguration作为it上下文,或者将SpringWebappConfiguration设置为applicationRoot上下文。

 类似资料:
  • 问题内容: 这与一个年龄较大的人非常相似,但是解决方案对我不起作用。 我有一个WAR包。 在 在 但是得到这个: org.springframework.beans.factory.BeanInitializationException:无法加载属性。嵌套的异常是java.io.FileNotFoundException:无法打开ServletContext资源[/social.propertie

  • 问题内容: 好的,我是第500位用户问这个问题,我读了很多答案,但仍然没有运气。 父模块pom包含: 子模块有,我使用运行我的webapp模块。 定义标准的调度程序模块: 我在下有文件,但是启动失败: 怎么了?文档和所有人都说Spring MVC将搜索XX-servlet.xml,其中XX是servlet的名称。为什么要搜索? 问题答案: 有自己的上下文,所有servlet和过滤器都共享它。默认情

  • 我在下有文件,但启动失败的原因是: 怎么啦?所有人都说Spring MVC将搜索xx-servlet.xml,其中XX是servlet的名称。它为什么搜索?

  • 问题内容: 我试图通过使用spring hibernatetemplate将我的hibernate示例移植到spring,但出现此错误,原因是:java.io.FileNotFoundException:无法打开ServletContext资源[/applicationContext.xml]。请建议我运行我的项目。我在公司里更新鲜 我的web.xml文件 我的applicationContext

  • 我的web.xml 我的调度器-servlet.xml 然后这个 编辑2 我创建了新的clean Spring MVC项目,但问题仍然存在。我想问题可能出在Weblogic上,我会试着重新安装它

  • 我有一个使用Spring mvc和Spring Security Eclipse Maven web项目。当我真的启动它时,它没有成功地初始化上下文: 更多详情如下: 这是我的 这是我的 我的问题是,当我启动应用程序时,我会出现类似的错误 它说它找不到但是我没有把它放进中,我的配置文件是