springboot 整合 druid 不成功,StatViewServlet报错,druid-spring-boot-starter 配置也不行

springboot 整合 druid 始终不成功
手动配置,到StatViewServlet这里一直报错

img

druid-spring-boot-starter 配置,按照文档做,也跳不过去,崩溃,搞了两天了,艹,恳请大老帮助

img

img

根据你图中错误,找不到javax.servlet.http.HttpServlet的类文件" 错误,这通常是因为程序没有包含Java Servlet API库(servlet-api.jar)。
要解决此问题,您需要执行以下操作:
1、确保您已经正确地安装了Java Web应用程序开发所需的工具和库,包括Java Servlet API库(servlet-api.jar)。
2、在下面中导入对应的maven依赖
3、如果已经添加了Java Servlet API库但仍然遇到此错误,请确保您正在使用正确的Java版本。Java Servlet API可能不兼容某些较旧的Java版本。
如果以上都配置后,仍然遇到问题,请检查代码是否正确引用了HttpServlet类。例如,在使用HttpServlet类之前,请确保已经正确导入javax.servlet.http包:

import javax.servlet.http.HttpServlet;

你看下你的pom文件中是否导入了Servlet相关的依赖

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
</dependency>
<!-- 添加jstl标签库依赖模块 -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
</dependency>

参考GPT和自己的思路,根据你提供的信息,无法访问 javax.servlet.http.HttpServlet 的错误提示,可能是因为缺少 Servlet API 的依赖。可以尝试在 pom.xml 文件中添加以下依赖:

<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>javax.servlet-api</artifactId>
  <version>4.0.1</version>
  <scope>provided</scope>
</dependency>

其中,scope 设置为 provided 表示该依赖不会被打包进入部署包中,因为 Servlet API 在运行时已经提供了。

如果以上方法无法解决问题,可以检查一下是否使用了正确的 Druid Starter。在 pom.xml 中引入以下 Starter:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.6</version>
</dependency>

接着,在 application.properties 或 application.yml 中添加如下配置:

spring.datasource.url=jdbc:mysql://localhost:3306/mvbatis.user?useUnicode=true&characterEncoding=utf-8&useSSL=true
spring.datasource.username=root
spring.datasource.password=123
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.druid.stat-view-servlet.enabled=true
spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*
spring.datasource.druid.stat-view-servlet.login-username=admin
spring.datasource.druid.stat-view-servlet.login-password=123

这样就可以自动配置 Druid 的数据源和监控了。如果需要手动配置,可以尝试以下代码:

@Configuration
public class DruidConfig {
    @Bean
    public ServletRegistrationBean<StatViewServlet> statViewServlet() {
        ServletRegistrationBean<StatViewServlet> bean = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*");
        // IP 白名单
        bean.addInitParameter("allow", "127.0.0.1");
        // IP 黑名单
        bean.addInitParameter("deny", "192.168.0.19");
        // 控制台管理用户
        bean.addInitParameter("loginUsername", "admin");
        bean.addInitParameter("loginPassword", "123");
        // 是否能够重置数据
        bean.addInitParameter("resetEnable", "false");
        return bean;
    }

    @Bean
    public FilterRegistrationBean<WebStatFilter> webStatFilter() {
        FilterRegistrationBean<WebStatFilter> bean = new FilterRegistrationBean<>(new WebStatFilter());
        // 过滤规则
        bean.addUrlPatterns("/*");
        // 排除规则
        bean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
        return bean;
    }
}

这里添加了过滤器 WebStatFilter 的配置,用于监控所有 HTTP 请求,并排除了一些静态资源和 Druid 的监控请求。请注意,这里的 WebStatFilter 需要依赖 druid-spring-boot-starter。

希望这些信息能帮到你解决问题。

看日志是相关的包没有导进去

可以参考这篇文章,按照步骤进行设置

建议你自己学习下调试源码,定位具体的原因,再去百度 关键字
可以看看我Spring Boot升级版本解决问题的过程
https://blog.csdn.net/weixin_41037319/article/details/129244278?spm=1001.2014.3001.5501

能否把你的pom发出来,这边给您分析下。
若是已经添加了javax.servlet-api依赖,看下是否是依赖包没有下载全,出现问题的场景通常有当网路不稳定,导致下载是吧,或者有配置私服,私服里面没有该jar导致下载是吧,又或者将toggle关闭了都有可能。
若有帮助,记得采纳哦。 若有问题,留言及回复。

1、日志显示你缺少jar包
2、参考文章 https://blog.csdn.net/print_out/article/details/111950935

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

没有导入包

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
</dependency>
 

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
在 Spring Boot 中,整合 Druid 数据库连接池相对来说会比较简单,可以通过 druid-spring-boot-starter 来实现配置。下面给出 application.properties 配置和 DruidConfig 配置的示例代码。

  1. pom.xml 文件中添加如下依赖:
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.4</version>
</dependency>
  1. resources/application.properties 文件中添加以下配置信息:
# 数据库连接配置
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

# Druid 数据库连接池配置
spring.datasource.druid.initial-size=5
spring.datasource.druid.min-idle=5
spring.datasource.druid.max-active=20
spring.datasource.druid.test-on-borrow=true
spring.datasource.druid.pool-prepared-statements=true
spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20

# Druid 监控配置
spring.datasource.druid.stat-view-servlet.enabled=true
spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*
spring.datasource.druid.stat-view-servlet.reset-enable=true
spring.datasource.druid.stat-view-servlet.login-username=admin
spring.datasource.druid.stat-view-servlet.login-password=admin
spring.datasource.druid.filter.stat.log-slow-sql=true
spring.datasource.druid.filter.stat.slow-sql-millis=2000
  1. 编写 DruidConfig 配置类:
@Configuration
public class DruidConfig {
    
    @ConfigurationProperties(prefix = "spring.datasource.druid")
    @Bean(initMethod = "init", destroyMethod = "close")
    public DruidDataSource dataSource() {
        return new DruidDataSource();
    }
    
    @Bean
    public ServletRegistrationBean<StatViewServlet> druidServlet() {
        ServletRegistrationBean<StatViewServlet> registrationBean = new ServletRegistrationBean<>(
                new StatViewServlet(), "/druid/*");
        Map<String, String> initParams = new HashMap<>();
        initParams.put("loginUsername", "admin"); // 登录用户名
        initParams.put("loginPassword", "admin"); // 登录密码
        initParams.put("allow", ""); // 默认允许所有访问
        registrationBean.setInitParameters(initParams);
        return registrationBean;
    }
    
    @Bean
    public FilterRegistrationBean<WebStatFilter> filterRegistrationBean() {
        FilterRegistrationBean<WebStatFilter> registrationBean = new FilterRegistrationBean<>(); 
        registrationBean.setFilter(new WebStatFilter());
        Map<String, String> initParams = new HashMap<>();
        initParams.put("exclusions", "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*"); // 不拦截的静态资源路径
        registrationBean.setInitParameters(initParams);
        registrationBean.setUrlPatterns(Arrays.asList("/*"));
        return registrationBean;
    }
    
}
  1. 在启动类中添加 @ServletComponentScan 注解:
@SpringBootApplication
@ServletComponentScan
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
  1. 在浏览器中访问 http://localhost:8080/druid,可以看到 Druid 监控页面。

以上代码中,DruidConfig 配置类中的 dataSource() 方法通过 @ConfigurationProperties 注解来读取配置文件中以 spring.datasource.druid 前缀开头的属性,并注入 DruidDataSource 实例。druidServlet()filterRegistrationBean() 方法分别用于配置 Druid 监控和过滤器。启动类中的 @ServletComponentScan 注解扫描 Servlet 注解,以便 DruidConfig 中的 @Bean 方法生效。

希望能对你的问题有所帮助。
如果我的回答解决了您的问题,请采纳!