呓语博客 - SpringMVC
type: channel
link: https://chengxuyi.top/tag/SpringMVC/
items: SpringMVC拦截器
items: 配置文件+c3p0数据库连接池连接mysql数据库报错:Access denied for user 'root'@'localhost' (using password: YES)

SpringMVC拦截器
type: item
date: 2022-01-28T14:02:00+08:00
description: SpringMVC拦截器概述SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter，用于对处理器进行预处理和后处理。开发者可以自己定义一些拦截器来实现特定的功能。拦截器拦截器是SpringMVC框架自己的，只有使用了SpringMVC框架的工程才能使用拦截器只会拦截访问控制器方法。如果访问的是 jsp/html/css/image/js 是不会进行拦截的过滤器servlet规范中的一部分，任何java web工程都可以使用在url-pattern中配置了/*之后，可以对所有要访问的资源进行拦截过滤器与拦截器的区别：拦截器是AOP思想的具体应用自定义拦截器那如何实现拦截器呢？想要自定义拦截器，必须实现 HandlerInterceptor 接口新建一个Moudule，springmvc-07-interceptor，添加web支持配置web.xml 和applicationContext.xml文件 <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**"/> <bean class="com.yiyu.config.MyInterceptor"/> </mvc:interceptor> </mvc:interceptors>编写一个拦截器package com.yiyu.config; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class MyInterceptor implements HandlerInterceptor { // return ture;执行下一个拦截器，放行 // return false;不执行下一个拦截器，放行 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("==========处理前=================="); return true; } // 日志 @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println("==========处理后=================="); HandlerInterceptor.super.postHandle(request, response, handler, modelAndView); } // @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println("==========清理=================="); HandlerInterceptor.super.afterCompletion(request, response, handler, ex); } } return true ：放行return false ：不放行preHandle：处理前postHandle：处理后afterCompletion：清理

配置文件+c3p0数据库连接池连接mysql数据库报错:Access denied for user 'root'@'localhost' (using password: YES)
type: item
date: 2022-01-24T22:06:00+08:00
description: 本人是因为db.properties文件的书写没有按照MyBatis的官网要求写，按照MyBatis官方文档修改后能够访问。修改后我的db.properties文件如下：jdbc.driver=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/ssmbuild?characterEncoding=UTF-8&serverTimezone=UTC jdbc.username=root jdbc.password=root数据库连接池代码： <property name="driverClass" value="${jdbc.driver}"/> <property name="jdbcUrl" value="${jdbc.url}"/> <property name="user" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> <property name="maxPoolSize" value="30"/> <property name="minPoolSize" value="10"/> <property name="autoCommitOnClose" value="false"/> <property name="checkoutTimeout" value="10000"/> <property name="acquireRetryAttempts" value="2"/> 修改后能够正常访问数据库，不会报错：Access denied for user 'root'@'localhost' (using password: YES)注意：这些jdbc.properties中的属性不能够自己随便写，要按照官方文档写。