springboot 整合 druid 始终不成功
手动配置,到StatViewServlet这里一直报错
druid-spring-boot-starter 配置,按照文档做,也跳不过去,崩溃,搞了两天了,艹,恳请大老帮助
根据你图中错误,找不到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
配置的示例代码。
pom.xml
文件中添加如下依赖:<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.4</version>
</dependency>
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
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;
}
}
@ServletComponentScan
注解:@SpringBootApplication
@ServletComponentScan
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
http://localhost:8080/druid
,可以看到 Druid 监控页面。以上代码中,DruidConfig
配置类中的 dataSource()
方法通过 @ConfigurationProperties
注解来读取配置文件中以 spring.datasource.druid
前缀开头的属性,并注入 DruidDataSource
实例。druidServlet()
和 filterRegistrationBean()
方法分别用于配置 Druid 监控和过滤器。启动类中的 @ServletComponentScan
注解扫描 Servlet
注解,以便 DruidConfig
中的 @Bean
方法生效。
希望能对你的问题有所帮助。
如果我的回答解决了您的问题,请采纳!