Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.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
Java 内存中的H2数据库控制台未打开_Java_Spring_Maven_Spring Boot_H2 - Fatal编程技术网

Java 内存中的H2数据库控制台未打开

Java 内存中的H2数据库控制台未打开,java,spring,maven,spring-boot,h2,Java,Spring,Maven,Spring Boot,H2,我正在Spring引导应用程序中使用H2数据库。但无法在浏览器中打开它。我的pom.xml如下: <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <version>1.4.192</version> </dependency> @Configuration public cl

我正在Spring引导应用程序中使用H2数据库。但无法在浏览器中打开它。我的pom.xml如下:

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>1.4.192</version>
</dependency>
@Configuration
public class WebConfiguration {
    @Bean
    ServletRegistrationBean h2servletRegistration(){
        ServletRegistrationBean registrationBean = new ServletRegistrationBean( new WebServlet());
        registrationBean.addUrlMappings("/console/*");
        return registrationBean;
    }
}

要使用H2控制台,您需要在
.properties
文件中对其进行配置

@Configuration
public class WebConfiguration {
    @Bean
    ServletRegistrationBean h2servletRegistration(){
        ServletRegistrationBean registrationBean = new ServletRegistrationBean( new WebServlet());
        registrationBean.addUrlMappings("/console/*");
        return registrationBean;
    }
}
spring.h2.console.enabled=true
spring.h2.console.path=/h2console/
其中
/h2console/
是您希望在浏览器上使用的路径,以便您可以将其更改为任何内容。此外,如果启用了安全性,则可能希望将其添加到允许的路径中

@Configuration
public class WebConfiguration {
    @Bean
    ServletRegistrationBean h2servletRegistration(){
        ServletRegistrationBean registrationBean = new ServletRegistrationBean( new WebServlet());
        registrationBean.addUrlMappings("/console/*");
        return registrationBean;
    }
}
还要将此添加到
HttpSecurity
configuration
http.headers().frameOptions().disable()

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

@Configuration
public class WebConfiguration {
    @Bean
    ServletRegistrationBean h2servletRegistration(){
        ServletRegistrationBean registrationBean = new ServletRegistrationBean( new WebServlet());
        registrationBean.addUrlMappings("/console/*");
        return registrationBean;
    }
}
更改您的安全配置我很确定您的pom中可能有spring security,所以请改用它,如果没有,它应该可以工作

@Configuration
public class WebConfiguration {
    @Bean
    ServletRegistrationBean h2servletRegistration(){
        ServletRegistrationBean registrationBean = new ServletRegistrationBean( new WebServlet());
        registrationBean.addUrlMappings("/console/*");
        return registrationBean;
    }
}
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();
    }

}

感谢大家的慷慨帮助。应用程序类(Springboot)在一个单独的包中,它没有扫描其他包。此外,我对Pom.xml进行了一些修改,最终帮助我访问了控制台。附件是我的新Pom.xml

@Configuration
public class WebConfiguration {
    @Bean
    ServletRegistrationBean h2servletRegistration(){
        ServletRegistrationBean registrationBean = new ServletRegistrationBean( new WebServlet());
        registrationBean.addUrlMappings("/console/*");
        return registrationBean;
    }
}
<?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>

4.0.0
com.spring.app
演示
0.0.1-快照
罐子
SpringBootApp
统计生成器
org.springframework.boot
spring启动程序父级
1.2.4.1发布
UTF-8
1.8
org.springframework.boot
spring引导启动器数据jpa
org.springframework.boot
弹簧启动安全
org.springframework.boot
SpringBootStarterWeb
org.webjars
独自创立
3.3.4
org.webjars
jquery
2.1.4
com.h2数据库
氢
org.springframework.boot
弹簧起动试验
测试
org.springframework
春季aop
org.aspectj
aspectjrt
org.aspectj
aspectjweaver
cglib
cglib
2.2.2
org.hibernate
休眠验证器
org.codehaus.jackson
杰克逊地图绘制者
1.7.1
com.fasterxml.jackson.core
杰克逊数据绑定
org.springframework.boot
springbootmaven插件

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

@Configuration
public class WebConfiguration {
    @Bean
    ServletRegistrationBean h2servletRegistration(){
        ServletRegistrationBean registrationBean = new ServletRegistrationBean( new WebServlet());
        registrationBean.addUrlMappings("/console/*");
        return registrationBean;
    }
}
@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();
    }
}

因为h2数据库控制台映射到“h2控制台”

@Configuration
public class WebConfiguration {
    @Bean
    ServletRegistrationBean h2servletRegistration(){
        ServletRegistrationBean registrationBean = new ServletRegistrationBean( new WebServlet());
        registrationBean.addUrlMappings("/console/*");
        return registrationBean;
    }
}
使用以下命令:

@Configuration
public class WebConfiguration {
    @Bean
    ServletRegistrationBean h2servletRegistration(){
        ServletRegistrationBean registrationBean = new ServletRegistrationBean( new WebServlet());
        registrationBean.addUrlMappings("/console/*");
        return registrationBean;
    }
}
http.csrf().disable().authorizeRequests()
        .antMatchers("/h2-console/**").permitAll()
        .anyRequest().authenticated();

// disable frame options
http.headers().frameOptions().disable();
` 您不需要允许根用户访问:
.antMatchers(“/”)*不需要*

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

@Configuration
public class WebConfiguration {
    @Bean
    ServletRegistrationBean h2servletRegistration(){
        ServletRegistrationBean registrationBean = new ServletRegistrationBean( new WebServlet());
        registrationBean.addUrlMappings("/console/*");
        return registrationBean;
    }
}
       <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
    </dependency>

com.h2数据库
氢

重建项目

这可能会对大家有所帮助,上面的所有配置都是正确的

@Configuration
public class WebConfiguration {
    @Bean
    ServletRegistrationBean h2servletRegistration(){
        ServletRegistrationBean registrationBean = new ServletRegistrationBean( new WebServlet());
        registrationBean.addUrlMappings("/console/*");
        return registrationBean;
    }
}
注意-如果您没有使用任何安全性,则不需要添加spring安全性

@Configuration
public class WebConfiguration {
    @Bean
    ServletRegistrationBean h2servletRegistration(){
        ServletRegistrationBean registrationBean = new ServletRegistrationBean( new WebServlet());
        registrationBean.addUrlMappings("/console/*");
        return registrationBean;
    }
}
实际问题是-当你在chrome中打开这个url时

@Configuration
public class WebConfiguration {
    @Bean
    ServletRegistrationBean h2servletRegistration(){
        ServletRegistrationBean registrationBean = new ServletRegistrationBean( new WebServlet());
        registrationBean.addUrlMappings("/console/*");
        return registrationBean;
    }
}
http://localhost:8080/h2 chrome使它-->https://localhost:8080/h2

@Configuration
public class WebConfiguration {
    @Bean
    ServletRegistrationBean h2servletRegistration(){
        ServletRegistrationBean registrationBean = new ServletRegistrationBean( new WebServlet());
        registrationBean.addUrlMappings("/console/*");
        return registrationBean;
    }
}
要解决此问题,请参阅下面的参考资料-

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

您可能面临2种情况,包括以下错误:

@Configuration
public class WebConfiguration {
    @Bean
    ServletRegistrationBean h2servletRegistration(){
        ServletRegistrationBean registrationBean = new ServletRegistrationBean( new WebServlet());
        registrationBean.addUrlMappings("/console/*");
        return registrationBean;
    }
}
  • 本地主机拒绝连接
  • @Configuration
    public class WebConfiguration {
        @Bean
        ServletRegistrationBean h2servletRegistration(){
            ServletRegistrationBean registrationBean = new ServletRegistrationBean( new WebServlet());
            registrationBean.addUrlMappings("/console/*");
            return registrationBean;
        }
    }
    
    • 仔细检查URL。Chrome会自动尝试将http://更改为https://

      @Configuration
      public class WebConfiguration {
          @Bean
          ServletRegistrationBean h2servletRegistration(){
              ServletRegistrationBean registrationBean = new ServletRegistrationBean( new WebServlet());
              registrationBean.addUrlMappings("/console/*");
              return registrationBean;
          }
      }
      
    • 选中spring.h2.console.path(控制台上的路径)以获取URL:

      @Configuration
      public class WebConfiguration {
          @Bean
          ServletRegistrationBean h2servletRegistration(){
              ServletRegistrationBean registrationBean = new ServletRegistrationBean( new WebServlet());
              registrationBean.addUrlMappings("/console/*");
              return registrationBean;
          }
      }
      
      默认值:/h2控制台-->URL:http://localhost:8080/h2-控制台/

      @Configuration
      public class WebConfiguration {
          @Bean
          ServletRegistrationBean h2servletRegistration(){
              ServletRegistrationBean registrationBean = new ServletRegistrationBean( new WebServlet());
              registrationBean.addUrlMappings("/console/*");
              return registrationBean;
          }
      }
      
    • 如果您运行IDE(例如IntelliJ Idea),确保您的应用程序正在运行这意味着您的H2数据库正在运行

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

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

      @Configuration
      public class WebConfiguration {
          @Bean
          ServletRegistrationBean h2servletRegistration(){
              ServletRegistrationBean registrationBean = new ServletRegistrationBean( new WebServlet());
              registrationBean.addUrlMappings("/console/*");
              return registrationBean;
          }
      }
      
    • 选中spring.h2.console.path(控制台上的路径)以获取URL:

      @Configuration
      public class WebConfiguration {
          @Bean
          ServletRegistrationBean h2servletRegistration(){
              ServletRegistrationBean registrationBean = new ServletRegistrationBean( new WebServlet());
              registrationBean.addUrlMappings("/console/*");
              return registrationBean;
          }
      }
      
      默认值:/h2控制台-->URL:http://localhost:8080/h2-控制台/

      @Configuration
      public class WebConfiguration {
          @Bean
          ServletRegistrationBean h2servletRegistration(){
              ServletRegistrationBean registrationBean = new ServletRegistrationBean( new WebServlet());
              registrationBean.addUrlMappings("/console/*");
              return registrationBean;
          }
      }
      
    • 启用H2控制台

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

    server.servlet.context path
    添加到属性中也可能导致此问题。新的url将由
    server.servlet.context path
    plus
    spring.h2.console.path

    组成,除非您的pom是空的,否则我认为您忘了附加它;)@PierreB.:附加了我正在使用的依赖项。我在配置文件中配置了什么配置文件?Springboot配置文件。是否添加了此
    http.headers().frameOptions().disable()
    否。我没有附加配置快照。
    @Configuration
    public class WebConfiguration {
        @Bean
        ServletRegistrationBean h2servletRegistration(){
            ServletRegistrationBean registrationBean = new ServletRegistrationBean( new WebServlet());
            registrationBean.addUrlMappings("/console/*");
            return registrationBean;
        }
    }