弹簧启动“ Whitelabel错误页面”无可用消息

时间:2018-11-21 16:46:18

标签: java spring spring-boot

我正在尝试将spring mvc项目转换为spring boot。我根据春季启动转换了所有必需的文件。控制台上没有错误。但是,当我在浏览器中运行我的Web应用程序时,出现此错误。 错误:“ Whitelabel错误页面”无可用消息 请告诉我为什么我收到此错误以及如何解决?

pageController.java

package net.kzn.onlineshopping.contr 

@Controller
public class PageController {

    private static final Logger logger = LoggerFactory.getLogger(PageController.class);

    @Autowired
    private CategoryDAO categoryDAO;

    @Autowired
    private ProductDAO productDAO;

    @RequestMapping(value = { "/", "/home", "/index" })
    public ModelAndView index(@RequestParam(name = "logout", required = false) String logout) {
        ModelAndView mv = new ModelAndView("page");
        mv.addObject("title", "Home");

        logger.info("Inside PageController index method - INFO");
        logger.debug("Inside PageController index method - DEBUG");

        // passing the list of categories
        mv.addObject("categories", categoryDAO.list());

        if (logout != null) {
            mv.addObject("message", "You have successfully logged out!");
        }

        mv.addObject("userClickHome", true);
        return mv;
    }

    @RequestMapping(value = "/about")
    public ModelAndView about() {
        ModelAndView mv = new ModelAndView("page");
        mv.addObject("title", "About Us");
        mv.addObject("userClickAbout", true);
        return mv;
    }

    @RequestMapping(value = "/contact")
    public ModelAndView contact() {
        ModelAndView mv = new ModelAndView("page");
        mv.addObject("title", "Contact Us");
        mv.addObject("userClickContact", true);
        return mv;
    }

    /*
     * Methods to load all the products and based on category
     */

    @RequestMapping(value = "/show/all/products")
    public ModelAndView showAllProducts() {
        ModelAndView mv = new ModelAndView("page");
        mv.addObject("title", "All Products");

        // passing the list of categories
        mv.addObject("categories", categoryDAO.list());

        mv.addObject("userClickAllProducts", true);
        return mv;
    }

    @RequestMapping(value = "/show/category/{id}/products")
    public ModelAndView showCategoryProducts(@PathVariable("id") int id) {
        ModelAndView mv = new ModelAndView("page");

        // categoryDAO to fetch a single category
        Category category = null;

        category = categoryDAO.get(id);

        mv.addObject("title", category.getName());

        // passing the list of categories
        mv.addObject("categories", categoryDAO.list());

        // passing the single category object
        mv.addObject("category", category);

        mv.addObject("userClickCategoryProducts", true);
        return mv;
    }

    /*
     * Viewing a single product
     */

    @RequestMapping(value = "/show/{id}/product")
    public ModelAndView showSingleProduct(@PathVariable int id) throws ProductNotFoundException {

        ModelAndView mv = new ModelAndView("page");

        Product product = productDAO.get(id);

        if (product == null)
            throw new ProductNotFoundException();

        // update the view count
        product.setViews(product.getViews() + 1);
        productDAO.update(product);
        // ---------------------------

        mv.addObject("title", product.getName());
        mv.addObject("product", product);

        mv.addObject("userClickShowProduct", true);

        return mv;

    }

    @RequestMapping(value = "/membership")
    public ModelAndView register() {
        ModelAndView mv = new ModelAndView("page");

        logger.info("Page Controller membership called!");

        return mv;
    }

    @RequestMapping(value = "/login")
    public ModelAndView login(@RequestParam(name = "error", required = false) String error,
            @RequestParam(name = "logout", required = false) String logout) {
        ModelAndView mv = new ModelAndView("login");
        mv.addObject("title", "Login");
        if (error != null) {
            mv.addObject("message", "Username and Password is invalid!");
        }
        if (logout != null) {
            mv.addObject("logout", "You have logged out successfully!");
        }
        return mv;
    }

    @RequestMapping(value = "/logout")
    public String logout(HttpServletRequest request, HttpServletResponse response) {
        // Invalidates HTTP Session, then unbinds any objects bound to it.
        // Removes the authentication from securitycontext
        Authentication auth = SecurityContextHolder.getContext().getAuthentication();
        if (auth != null) {
            new SecurityContextLogoutHandler().logout(request, response, auth);
        }

        return "redirect:/login?logout";
    }

    @RequestMapping(value = "/access-denied")
    public ModelAndView accessDenied() {
        ModelAndView mv = new ModelAndView("error");
        mv.addObject("errorTitle", "Aha! Caught You.");
        mv.addObject("errorDescription", "You are not authorized to view this page!");
        mv.addObject("title", "403 Access Denied");
        return mv;
    }

    @RequestMapping(value = "/view/category/{id}/products")
    public ModelAndView viewProducts(@PathVariable("id") int id) {
        ModelAndView mv = new ModelAndView("page");
        // categoryDAO to fetch a single category
        Category category = null;

        category = categoryDAO.get(id);

        mv.addObject("title", category.getName());

        // passing the list of categories
        mv.addObject("viewproducts", productDAO.listActiveProductsByCategory(id));

        mv.addObject("userClickViewProducts", true);
        return mv;
    }


    @RequestMapping(value = "/search")
    public ModelAndView Search(@RequestParam(value = "searchTerm", required = false) String pSearchTerm,
            HttpServletRequest request, HttpServletResponse response) {
        ModelAndView mv = new ModelAndView("search");

        mv.addObject("searchTerm", pSearchTerm);
        mv.addObject("searchResult", productDAO.searchProductsByParam(pSearchTerm));

        mv.addObject("userClickSearch", true);

        return mv;
    }

}

OnlineshoppingApplication.java

package net.kzn.onlineshopping;


@SpringBootApplication
@EnableWebSecurity 
@ComponentScan(basePackages = {"net.kzn.onlineshopping.*","net.kzn.shoppingbackend.*"})
@ImportResource({"classpath:spring-security.xml","classpath:/**/dispatcher-servlet.xml"})
public class OnlineshoppingApplication {

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


}

dispatcher-servlet.xml

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:wf="http://www.springframework.org/schema/webflow-config"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
    http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans.xsd
   http://www.springframework.org/schema/context
   http://www.springframework.org/schema/context/spring-context.xsd
   http://www.springframework.org/schema/mvc
   http://www.springframework.org/schema/mvc/spring-mvc.xsd
   http://www.springframework.org/schema/webflow-config
   http://www.springframework.org/schema/webflow-config/spring-webflow-config.xsd">

    <context:component-scan
        base-package="net.kzn.onlineshopping" />

    <bean id="viewResolver"
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">

        <property name="prefix" value="/WEB-INF/views/" />
        <property name="suffix" value=".jsp" />
    </bean>

    <!-- id must be multipartResolver -->
    <bean id="multipartResolver"
        class="org.springframework.web.multipart.support.StandardServletMultipartResolver" />

    <!-- Loading static resources -->
    <mvc:annotation-driven />
    <mvc:resources location="/assets/"
        mapping="/resources/**" />

    <!-- WEBFLOW CONFIGURATION -->
    <!-- Entry point for the flow -->

    <wf:flow-executor id="flowExecutor"
        flow-registry="flowRegistry" />

    <wf:flow-registry id="flowRegistry"
        base-path="/WEB-INF/views/flows"
        flow-builder-services="flowBuilderServices">
        <wf:flow-location-pattern
            value="/**/*-flow.xml" />
    </wf:flow-registry>

    <wf:flow-builder-services
        id="flowBuilderServices" view-factory-creator="viewFactoryCreator"
        validator="validator" />

    <bean
        class="org.springframework.webflow.mvc.servlet.FlowHandlerAdapter">
        <property name="flowExecutor" ref="flowExecutor" />
    </bean>

    <bean
        class="org.springframework.webflow.mvc.servlet.FlowHandlerMapping">
        <property name="flowRegistry" ref="flowRegistry" />
        <property name="order" value="-1" />
    </bean>

    <bean id="viewFactoryCreator"
        class="org.springframework.webflow.mvc.builder.MvcViewFactoryCreator">
        <property name="viewResolvers" ref="viewResolver" />
    </bean>

    <!-- validator bean -->

    <bean id="validator"
        class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" />
</beans>

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>net.kzn</groupId>
            <artifactId>shoppingbackend</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <packaging>jar</packaging>

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

            <parent>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-parent</artifactId>
                <version>1.5.17.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>
            </properties>

            <dependencies>

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

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

                <dependency>
                    <groupId>org.springframework.data</groupId>
                    <artifactId>spring-data-rest-hal-browser</artifactId>
                </dependency>

                <!-- https://mvnrepository.com/artifact/org.springframework.webflow/spring-webflow -->
                <dependency>
                    <groupId>org.springframework.webflow</groupId>
                    <artifactId>spring-webflow</artifactId>
                    <version>2.5.1.RELEASE</version>
                </dependency>
                <dependency>
                <groupId>net.java.dev.jna</groupId>
                <artifactId>jna</artifactId>
                <version>4.2.2</version>
                </dependency>


                <!-- Hibernate Dependency -->
                <dependency>
                    <groupId>org.hibernate</groupId>
                    <artifactId>hibernate-core</artifactId>
                    <version>5.2.7.Final</version>
                </dependency>

                <!-- database connection pooling -->
                <dependency>
                    <groupId>org.apache.commons</groupId>
                    <artifactId>commons-dbcp2</artifactId>
                    <version>2.1.1</version>
                    <exclusions>
                        <exclusion>
                            <groupId>commons-logging</groupId>
                            <artifactId>commons-logging</artifactId>
                        </exclusion>
                    </exclusions>
                </dependency>

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

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

              <resources>
                <resource>
                  <directory>src/main/webapp</directory>
                </resource>
              </resources>
            </build>


        </project>

控制台

        22:08:10.893 [main] DEBUG org.springframework.boot.devtools.settings.DevToolsSettings - Included patterns for restart : []
    22:08:10.897 [main] DEBUG org.springframework.boot.devtools.settings.DevToolsSettings - Excluded patterns for restart : [/spring-boot-actuator/target/classes/, /spring-boot-devtools/target/classes/, /spring-boot/target/classes/, /spring-boot-starter-[\w-]+/, /spring-boot-autoconfigure/target/classes/, /spring-boot-starter/target/classes/]
    22:08:10.898 [main] DEBUG org.springframework.boot.devtools.restart.ChangeableUrls - Matching URLs for reloading : [file:/home/vidyesh/Downloads/spring-boot/onlineshopping/target/classes/, file:/home/vidyesh/Downloads/spring-boot/shoppingbackend/target/classes/]
    2018-11-21 22:08:11.600  INFO 3913 --- [  restartedMain] n.k.o.OnlineshoppingApplication          : Starting OnlineshoppingApplication on vidyesh-SVE15115ENB with PID 3913 (/home/vidyesh/Downloads/spring-boot/onlineshopping/target/classes started by vidyesh in /home/vidyesh/Downloads/spring-boot/onlineshopping)
    2018-11-21 22:08:11.603  INFO 3913 --- [  restartedMain] n.k.o.OnlineshoppingApplication          : No active profile set, falling back to default profiles: default
    2018-11-21 22:08:11.788  INFO 3913 --- [  restartedMain] ConfigServletWebServerApplicationContext : Refreshing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@13fed3ea: startup date [Wed Nov 21 22:08:11 IST 2018]; root of context hierarchy
    2018-11-21 22:08:13.963  INFO 3913 --- [  restartedMain] o.s.b.f.xml.XmlBeanDefinitionReader      : Loading XML bean definitions from class path resource [spring-security.xml]
    2018-11-21 22:08:14.221  INFO 3913 --- [  restartedMain] o.s.s.core.SpringSecurityCoreVersion     : You are running with Spring Security Core 5.0.9.RELEASE
    2018-11-21 22:08:14.227  INFO 3913 --- [  restartedMain] o.s.s.config.SecurityNamespaceHandler    : Spring Security 'config' module version is 5.0.9.RELEASE
    2018-11-21 22:08:14.271  INFO 3913 --- [  restartedMain] o.s.b.f.s.DefaultListableBeanFactory     : Overriding bean definition for bean 'requestDataValueProcessor' with a different definition: replacing [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=org.springframework.security.config.annotation.web.configuration.WebMvcSecurityConfiguration; factoryMethodName=requestDataValueProcessor; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [org/springframework/security/config/annotation/web/configuration/WebMvcSecurityConfiguration.class]] with [Root bean: class [org.springframework.security.web.servlet.support.csrf.CsrfRequestDataValueProcessor]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null]
    2018-11-21 22:08:14.294  INFO 3913 --- [  restartedMain] erInvocationSecurityMetadataSourceParser : Creating access control expression attribute 'hasAuthority('ADMIN')' for /manage/**
    2018-11-21 22:08:14.297  INFO 3913 --- [  restartedMain] erInvocationSecurityMetadataSourceParser : Creating access control expression attribute 'hasAuthority('USER')' for /cart/**
    2018-11-21 22:08:14.298  INFO 3913 --- [  restartedMain] erInvocationSecurityMetadataSourceParser : Creating access control expression attribute 'permitAll' for /**
    2018-11-21 22:08:14.352  INFO 3913 --- [  restartedMain] s.s.c.h.HttpSecurityBeanDefinitionParser : Checking sorted filter chain: [Root bean: class [org.springframework.security.web.context.SecurityContextPersistenceFilter]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null, order = 200, Root bean: class [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null, order = 400, Root bean: class [org.springframework.security.web.header.HeaderWriterFilter]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null, order = 500, Root bean: class [org.springframework.security.web.csrf.CsrfFilter]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null, order = 700, <org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter#0>, order = 1200, Root bean: class [org.springframework.security.web.savedrequest.RequestCacheAwareFilter]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null, order = 1700, Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=org.springframework.security.config.http.HttpConfigurationBuilder$SecurityContextHolderAwareRequestFilterBeanFactory#0; factoryMethodName=getBean; initMethodName=null; destroyMethodName=null, order = 1800, Root bean: class [org.springframework.security.web.authentication.AnonymousAuthenticationFilter]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null, order = 2100, Root bean: class [org.springframework.security.web.session.SessionManagementFilter]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null, order = 2200, Root bean: class [org.springframework.security.web.access.ExceptionTranslationFilter]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null, order = 2300, <org.springframework.security.web.access.intercept.FilterSecurityInterceptor#0>, order = 2400]
    2018-11-21 22:08:16.825  INFO 3913 --- [  restartedMain] trationDelegate$BeanPostProcessorChecker : Bean 'hibernateConfig' of type [net.kzn.shoppingbackend.config.HibernateConfig$$EnhancerBySpringCGLIB$$5feb6d4c] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
    2018-11-21 22:08:17.159  INFO 3913 --- [  restartedMain] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.ws.config.annotation.DelegatingWsConfiguration' of type [org.springframework.ws.config.annotation.DelegatingWsConfiguration$$EnhancerBySpringCGLIB$$b4635f5c] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
    2018-11-21 22:08:17.247  INFO 3913 --- [  restartedMain] .w.s.a.s.AnnotationActionEndpointMapping : Supporting [WS-Addressing August 2004, WS-Addressing 1.0]
    2018-11-21 22:08:17.414  INFO 3913 --- [  restartedMain] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$fcb9a5d] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
    2018-11-21 22:08:17.654  INFO 3913 --- [  restartedMain] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.hateoas.config.HateoasConfiguration' of type [org.springframework.hateoas.config.HateoasConfiguration$$EnhancerBySpringCGLIB$$8f4be78f] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
    2018-11-21 22:08:18.783  INFO 3913 --- [  restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
    2018-11-21 22:08:18.849  INFO 3913 --- [  restartedMain] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
    2018-11-21 22:08:18.850  INFO 3913 --- [  restartedMain] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/8.5.34
    2018-11-21 22:08:18.876  INFO 3913 --- [ost-startStop-1] o.a.catalina.core.AprLifecycleListener   : The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib]
    2018-11-21 22:08:19.099  INFO 3913 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
    2018-11-21 22:08:19.103  INFO 3913 --- [ost-startStop-1] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 7315 ms
    2018-11-21 22:08:20.203  INFO 3913 --- [ost-startStop-1] o.s.j.d.DriverManagerDataSource          : Loaded JDBC driver: org.h2.Driver
    2018-11-21 22:08:20.823  INFO 3913 --- [ost-startStop-1] o.s.s.web.DefaultSecurityFilterChain     : Creating filter chain: Ant [pattern='/resources/**'], []
    2018-11-21 22:08:21.100  INFO 3913 --- [ost-startStop-1] o.s.s.p.JdbcUserDetailsManager           : No authentication manager set. Reauthentication of users when changing passwords will not be performed.
    2018-11-21 22:08:21.370  INFO 3913 --- [ost-startStop-1] o.s.s.web.DefaultSecurityFilterChain     : Creating filter chain: org.springframework.security.web.util.matcher.AnyRequestMatcher@1, [org.springframework.security.web.context.SecurityContextPersistenceFilter@4294627f, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@21e157ed, org.springframework.security.web.header.HeaderWriterFilter@5d3d9f8c, org.springframework.security.web.csrf.CsrfFilter@309333e8, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@3f7bf900, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@485ec9d3, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@236ad6b2, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@140fa9fd, org.springframework.security.web.session.SessionManagementFilter@2e3d5d68, org.springframework.security.web.access.ExceptionTranslationFilter@321ea81f, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@3cb8af30]
    2018-11-21 22:08:21.398  INFO 3913 --- [ost-startStop-1] o.s.s.c.h.DefaultFilterChainValidator    : Checking whether login URL '/login' is accessible with your configuration
    2018-11-21 22:08:21.578  INFO 3913 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter#0' to: [/*]
    2018-11-21 22:08:21.578  INFO 3913 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean  : Servlet dispatcherServlet mapped to [/]
    2018-11-21 22:08:21.580  INFO 3913 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean  : Servlet webServlet mapped to [/h2-console/*]
    2018-11-21 22:08:21.581  INFO 3913 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean  : Servlet messageDispatcherServlet mapped to [/services/*]
    2018-11-21 22:08:21.969  INFO 3913 --- [  restartedMain] j.LocalContainerEntityManagerFactoryBean : Building JPA container EntityManagerFactory for persistence unit 'default'
    2018-11-21 22:08:22.012  INFO 3913 --- [  restartedMain] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [
        name: default
        ...]
    2018-11-21 22:08:22.190  INFO 3913 --- [  restartedMain] org.hibernate.Version                    : HHH000412: Hibernate Core {5.2.17.Final}
    2018-11-21 22:08:22.194  INFO 3913 --- [  restartedMain] org.hibernate.cfg.Environment            : HHH000206: hibernate.properties not found
    2018-11-21 22:08:22.279  INFO 3913 --- [  restartedMain] o.hibernate.annotations.common.Version   : HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
    2018-11-21 22:08:22.691  INFO 3913 --- [  restartedMain] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.H2Dialect
    2018-11-21 22:08:24.407  INFO 3913 --- [  restartedMain] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
    2018-11-21 22:08:26.427  INFO 3913 --- [  restartedMain] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
    2018-11-21 22:08:26.732  INFO 3913 --- [  restartedMain] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@13fed3ea: startup date [Wed Nov 21 22:08:11 IST 2018]; root of context hierarchy
    2018-11-21 22:08:26.754  INFO 3913 --- [  restartedMain] s.w.s.m.m.a.RequestMappingHandlerAdapter : Detected @ModelAttribute methods in globalController
    2018-11-21 22:08:26.892  WARN 3913 --- [  restartedMain] aWebConfiguration$JpaWebMvcConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
    2018-11-21 22:08:27.152  INFO 3913 --- [  restartedMain] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
    2018-11-21 22:08:27.197  INFO 3913 --- [  restartedMain] .m.m.a.ExceptionHandlerExceptionResolver : Detected @ExceptionHandler methods in globalDefaultExceptionHandler
    2018-11-21 22:08:27.198  INFO 3913 --- [  restartedMain] .m.m.a.ExceptionHandlerExceptionResolver : Detected @ExceptionHandler methods in repositoryRestExceptionHandler
    2018-11-21 22:08:28.114  INFO 3913 --- [  restartedMain] o.s.d.r.w.RepositoryRestHandlerAdapter   : Looking for @ControllerAdvice: org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@13fed3ea: startup date [Wed Nov 21 22:08:11 IST 2018]; root of context hierarchy
    2018-11-21 22:08:28.123  INFO 3913 --- [  restartedMain] o.s.d.r.w.RepositoryRestHandlerAdapter   : Detected @ModelAttribute methods in globalController
    2018-11-21 22:08:28.146  INFO 3913 --- [  restartedMain] o.s.d.r.w.RepositoryRestHandlerMapping   : Mapped "{[/ || ],methods=[GET],produces=[application/hal+json || application/json]}" onto public org.springframework.http.HttpEntity<org.springframework.data.rest.webmvc.RepositoryLinksResource> org.springframework.data.rest.webmvc.RepositoryController.listRepositories()
    2018-11-21 22:08:28.319  INFO 3913 --- [  restartedMain] o.s.b.a.e.web.EndpointLinksResolver      : Exposing 2 endpoint(s) beneath base path '/actuator'
    2018-11-21 22:08:28.350  INFO 3913 --- [  restartedMain] s.b.a.e.w.s.WebMvcEndpointHandlerMapping : Mapped "{[/actuator],methods=[GET],produces=[application/vnd.spring-boot.actuator.v2+json || application/json]}" onto protected java.util.Map<java.lang.String, java.util.Map<java.lang.String, org.springframework.boot.actuate.endpoint.web.Link>> org.springframework.boot.actuate.endpoint.web.servlet.WebMvcEndpointHandlerMapping.links(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
    2018-11-21 22:08:28.621  INFO 3913 --- [  restartedMain] o.s.b.d.a.OptionalLiveReloadServer       : LiveReload server is running on port 35729
    2018-11-21 22:08:28.784  INFO 3913 --- [  restartedMain] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup
    2018-11-21 22:08:28.930  INFO 3913 --- [  restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
    2018-11-21 22:08:28.956  INFO 3913 --- [  restartedMain] n.k.o.OnlineshoppingApplication          : Started OnlineshoppingApplication in 18.037 seconds (JVM running for 18.919)

我的项目文件结构

enter image description here

enter image description here

在浏览器中显示错误

enter image description here

请告诉我如何解决此问题。我在这里做什么错了?

1 个答案:

答案 0 :(得分:2)

答案是in documentation

  

如果您的应用程序是,请不要使用src / main / webapp目录   包装为罐子。尽管此目录是通用标准,但它   仅适用于战争包装,大多数人默默忽略   如果生成jar,则构建工具。

还有:

  

默认情况下,Spring Boot从名为的目录中提供静态内容   / static(或/ public或/ resources或/ META-INF / resources)中的   classpath或从ServletContext的根开始

选项是:

  1. 将src / main / webapp文件夹中的内容移动到正确的位置
  2. 将src / main / webapp添加到pom.xml中的资源
  3. 使用战争包装

最后检查您的配置文件中是否还有正确的路径。