Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在tomcat上部署war时发生Spring Boot静态资源404错误_Tomcat_Spring Boot - Fatal编程技术网

在tomcat上部署war时发生Spring Boot静态资源404错误

在tomcat上部署war时发生Spring Boot静态资源404错误,tomcat,spring-boot,Tomcat,Spring Boot,我正在使用SpringBoot开发一个SpringREST应用程序。 我想使用AngularJS客户端使用SpringRESTAPI 我使用的堆栈是: 弹簧靴1.4.2 春季安全 角JS 问题是: 我无法在浏览器中获取呈现的静态内容 pom.xml: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.

我正在使用SpringBoot开发一个SpringREST应用程序。 我想使用AngularJS客户端使用SpringRESTAPI

我使用的堆栈是: 弹簧靴1.4.2 春季安全 角JS

问题是: 我无法在浏览器中获取呈现的静态内容

pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.atul</groupId>
    <artifactId>springbootrest</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>

    <name>springbootrest</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <wro4j.version>1.8.0</wro4j.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>


        <!-- <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>runtime</scope>
        </dependency> -->

         <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <resources>
            <resource>
                <directory>${project.basedir}/src/main/resources</directory>
            </resource>
            <resource>
                <directory>${project.build.directory}/generated-resources</directory>
            </resource>
        </resources>
        <plugins>

            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>

            <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <executions>
                    <execution>
                        <!-- Serves *only* to filter the wro.xml so it can get an absolute path for the project -->
                        <id>copy-resources</id>
                        <phase>validate</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${basedir}/target/wro</outputDirectory>
                            <resources>
                                <resource>
                                    <directory>src/main/wro</directory>
                                    <filtering>true</filtering>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>ro.isdc.wro4j</groupId>
                <artifactId>wro4j-maven-plugin</artifactId>
                <version>${wro4j.version}</version>
                <executions>
                    <execution>
                        <phase>generate-resources</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <wroManagerFactory>ro.isdc.wro.maven.plugin.manager.factory.ConfigurableWroManagerFactory</wroManagerFactory>
                    <cssDestinationFolder>${project.build.directory}/generated-resources/static/css</cssDestinationFolder>
                    <jsDestinationFolder>${project.build.directory}/generated-resources/static/js</jsDestinationFolder>
                    <wroFile>${project.build.directory}/wro/wro.xml</wroFile>
                    <extraConfigFile>${basedir}/src/main/wro/wro.properties</extraConfigFile>
                    <contextFolder>${basedir}/src/main/wro</contextFolder>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.webjars</groupId>
                        <artifactId>jquery</artifactId>
                        <version>3.1.1</version>
                    </dependency>
                    <dependency>
                        <groupId>org.webjars</groupId>
                        <artifactId>angularjs</artifactId>
                        <version>1.3.8</version>
                    </dependency>
                    <dependency>
                        <groupId>org.webjars</groupId>
                        <artifactId>bootstrap</artifactId>
                        <version>3.2.0</version>
                    </dependency>
                </dependencies>
            </plugin>

        </plugins>
    </build>

</project>
配置类: WebConfig.java

@SpringBootApplication
@Import({ // @formatter:off

    WebConfig.class,
    JPAConfig.class,
    ServiceConfig.class,
    SecurityConfig.class

})
public class App extends SpringBootServletInitializer{

    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
            return application.sources(App.class);
    }

}
@Configuration
@ComponentScan({ "com.atul.controller" })
@EnableWebMvc
public class WebConfig {

}
@Configuration
@EnableJpaRepositories(basePackages = "com.atul.persistent.dao")
@EntityScan(basePackages = "com.atul.persistent.model")
@EnableTransactionManagement
public class JPAConfig {

}
@Configuration
@ComponentScan({"com.atul.service"})
public class ServiceConfig {

}
public class SecurityConfig extends WebSecurityConfigurerAdapter{

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        // @formatter:off
        http
            .httpBasic().and()
            .authorizeRequests()
                .antMatchers("/index.html", "/home.html", "/login.html", "/").permitAll()
                .anyRequest().authenticated()
                .and()
            .csrf().disable();
                //.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse());
        // @formatter:on
    }

}
JPAConfig.java

@SpringBootApplication
@Import({ // @formatter:off

    WebConfig.class,
    JPAConfig.class,
    ServiceConfig.class,
    SecurityConfig.class

})
public class App extends SpringBootServletInitializer{

    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
            return application.sources(App.class);
    }

}
@Configuration
@ComponentScan({ "com.atul.controller" })
@EnableWebMvc
public class WebConfig {

}
@Configuration
@EnableJpaRepositories(basePackages = "com.atul.persistent.dao")
@EntityScan(basePackages = "com.atul.persistent.model")
@EnableTransactionManagement
public class JPAConfig {

}
@Configuration
@ComponentScan({"com.atul.service"})
public class ServiceConfig {

}
public class SecurityConfig extends WebSecurityConfigurerAdapter{

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        // @formatter:off
        http
            .httpBasic().and()
            .authorizeRequests()
                .antMatchers("/index.html", "/home.html", "/login.html", "/").permitAll()
                .anyRequest().authenticated()
                .and()
            .csrf().disable();
                //.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse());
        // @formatter:on
    }

}
ServiceConfig.java

@SpringBootApplication
@Import({ // @formatter:off

    WebConfig.class,
    JPAConfig.class,
    ServiceConfig.class,
    SecurityConfig.class

})
public class App extends SpringBootServletInitializer{

    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
            return application.sources(App.class);
    }

}
@Configuration
@ComponentScan({ "com.atul.controller" })
@EnableWebMvc
public class WebConfig {

}
@Configuration
@EnableJpaRepositories(basePackages = "com.atul.persistent.dao")
@EntityScan(basePackages = "com.atul.persistent.model")
@EnableTransactionManagement
public class JPAConfig {

}
@Configuration
@ComponentScan({"com.atul.service"})
public class ServiceConfig {

}
public class SecurityConfig extends WebSecurityConfigurerAdapter{

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        // @formatter:off
        http
            .httpBasic().and()
            .authorizeRequests()
                .antMatchers("/index.html", "/home.html", "/login.html", "/").permitAll()
                .anyRequest().authenticated()
                .and()
            .csrf().disable();
                //.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse());
        // @formatter:on
    }

}
SecurityConfig.java

@SpringBootApplication
@Import({ // @formatter:off

    WebConfig.class,
    JPAConfig.class,
    ServiceConfig.class,
    SecurityConfig.class

})
public class App extends SpringBootServletInitializer{

    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
            return application.sources(App.class);
    }

}
@Configuration
@ComponentScan({ "com.atul.controller" })
@EnableWebMvc
public class WebConfig {

}
@Configuration
@EnableJpaRepositories(basePackages = "com.atul.persistent.dao")
@EntityScan(basePackages = "com.atul.persistent.model")
@EnableTransactionManagement
public class JPAConfig {

}
@Configuration
@ComponentScan({"com.atul.service"})
public class ServiceConfig {

}
public class SecurityConfig extends WebSecurityConfigurerAdapter{

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        // @formatter:off
        http
            .httpBasic().and()
            .authorizeRequests()
                .antMatchers("/index.html", "/home.html", "/login.html", "/").permitAll()
                .anyRequest().authenticated()
                .and()
            .csrf().disable();
                //.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse());
        // @formatter:on
    }

}
我已尝试将静态资源放在以下位置:

1) src\main\resources

2) 网络应用

生成的war包含以下静态资源:

1) WEB-INF/类以及

2) web应用程序的根目录

运行url时-
http://localhost:8080/contextPath/
,我得到一个例外

在名为“DispatcherServlet”的DispatcherServlet中未找到URI为的HTTP请求的映射


有人能帮我吗

诀窍是阅读文档,而不是尝试随机位置:谢谢你的帮助。我将资源放在相同的位置,但仍然不起作用。因为我是打包为war的,所以根据文档,它应该在src/main/webapp中。你有服务于/path的控制器方法吗?尝试使用并查看您的静态内容是否可访问。诀窍是阅读文档而不是尝试随机位置:谢谢您的帮助。我将资源放在相同的位置,但仍然不起作用。因为我是打包为war的,所以根据文档,它应该在src/main/webapp中。你有服务于/path的控制器方法吗?尝试使用并查看您的静态内容是否可访问。