H2-In内存数据库控制台无法打开

时间:2017-11-10 11:17:07

标签: java spring maven spring-boot h2

我在Spring启动应用程序中使用H2数据库。但是无法在http://localhost:8080/console.My Pom.xml的浏览器中打开它,如下所示:

    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <version>1.4.192</version>
    </dependency>

Spring boot配置:

Springboot配置文件

@Configuration
public class WebConfiguration {
    @Bean
    ServletRegistrationBean h2servletRegistration(){
        ServletRegistrationBean registrationBean = new ServletRegistrationBean( new WebServlet());
        registrationBean.addUrlMappings("/console/*");
        return registrationBean;
    }
}

enter image description here

8 个答案:

答案 0 :(得分:13)

要使用H2控制台,您需要在.properties文件中配置它

spring.h2.console.enabled=true
spring.h2.console.path=/h2console/

其中/h2console/是您要在浏览器上使用的路径,因此您可以将其更改为任何内容。此外,如果您启用了安全性,则可能需要将其添加到允许的路径

还会将此添加到您的HttpSecurity配置http.headers().frameOptions().disable();

修改

更改您的安全配置我非常确定您的pom中可能有弹簧安全性,所以请改用它,否则它应该起作用

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@Configuration
public class WebConfiguration extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity httpSecurity) throws Exception {
        httpSecurity.authorizeRequests().antMatchers("/").permitAll().and()
                .authorizeRequests().antMatchers("/console/**").permitAll();

        httpSecurity.csrf().disable();
        httpSecurity.headers().frameOptions().disable();
    }

}

答案 1 :(得分:0)

谢谢大家的慷慨帮助。应用程序类(Springboot)在一个单独的包中,它没有扫描其他包。我修改了我的Pom.xml,最后帮助我访问控制台.Attached是我的新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.spring.app</groupId>
    <artifactId>Demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>SpringBootApp</name>
    <description>Generator of statistics </description>

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

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</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-web</artifactId>
        </dependency>



        <!--WebJars -->
        <dependency>
            <groupId>org.webjars</groupId>
            <artifactId>bootstrap</artifactId>
            <version>3.3.4</version>
        </dependency>
        <dependency>
            <groupId>org.webjars</groupId>
            <artifactId>jquery</artifactId>
            <version>2.1.4</version>
        </dependency>

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


        <!-- Spring AOP + AspectJ -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
        </dependency>

        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>

        </dependency>

        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>

        </dependency>


        <!-- JavaConfig need this library -->
        <dependency>
            <groupId>cglib</groupId>
            <artifactId>cglib</artifactId>
            <version>2.2.2</version>
        </dependency>

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>

        </dependency>


        <!-- Jackson JSON Mapper -->
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>1.7.1</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>

        </dependency>
    </dependencies>
    <build>


        <plugins>

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




</project>

答案 2 :(得分:0)

如果您的pom中包含spring-boot-starter-security工件,则默认启用基本身份验证。因此,要访问控制台,您可以通过在application.properties中添加security.basic.enabled=false来禁用基本身份验证,或者在configure方法中允许访问,如下所示:

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity httpSecurity) throws Exception {
        httpSecurity.csrf().disable().authorizeRequests().antMatchers("/").permitAll().and().authorizeRequests()
                .antMatchers("/console/**").permitAll();
        httpSecurity.headers().frameOptions().disable();
    }
}

答案 3 :(得分:0)

由于h2数据库控制台已映射到“ h2-控制台”。

使用此:

      http.csrf().disable().authorizeRequests()
            .antMatchers("/h2-console/**").permitAll()
            .anyRequest().authenticated();

      // disable frame options
      http.headers().frameOptions().disable();` 

您不需要许可root访问权限: .antMatchers(“ /”) *不需要*

答案 4 :(得分:0)

转到POM文件并添加依赖项:

       <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
    </dependency>

重建项目

答案 5 :(得分:0)

这可能对人们有帮助,上面的所有配置都是正确的

注意-如果您不使用任何安全性,则不需要添加spring安全性

确切的问题是-当您在Chrome浏览器中打开此网址时

http:// localhost:8080 / h2 chrome做到了-> https:// localhost:8080 / h2

摆脱这个问题-以下参考资料将有所帮助-

Google Chrome redirecting localhost to https

答案 6 :(得分:0)

您可能会遇到 2 种情况,包括以下错误:

  1. 本地主机拒绝连接

localhost refused to connect

  • 仔细检查 URL。 Chrome 会自动尝试将 http:// 更改为 https://

  • 检查 spring.h2.console.path(控制台可用的路径)以获取您的 URL:

    默认:/h2-console --> URL:http://localhost:8080/h2-console/

  • 如果您运行 IDE(例如 IntelliJ Idea),确保您的应用正在运行意味着您的 H2 数据库正在运行!


  • 您面临 404 错误: Whitelabel Error Page 在这种情况下,您的 H2 数据库正确运行在端口 8080 上,并且您已经与它建立了连接。

  • 检查 spring.h2.console.path(控制台可用的路径)以获取您的 URL:

    默认:/h2-console --> URL:http://localhost:8080/h2-console/

  • 启用 H2 控制台

<块引用>
spring.h2.console.enabled=true

答案 7 :(得分:0)

该问题也可能是由向属性添加 server.servlet.context-path 引起的。新网址将由 server.servlet.context-pathspring.h2.console.path

组成