网站开发与设计培训,电厂建设审批进度网站,洛阳霞光高端定制网站建设,网站在建设中页面一、SSM 整合
核心步骤 依赖管理 包含 SpringMVC、Spring JDBC、MyBatis、Druid 数据源、Jackson 等依赖。注意点#xff1a;确保版本兼容性#xff08;如 Spring 5.x 与 MyBatis 3.5.x#xff09;。 配置类 SpringConfig#xff1a;扫描 Service 层、启用事务管理、导入…一、SSM 整合
核心步骤 依赖管理 包含 SpringMVC、Spring JDBC、MyBatis、Druid 数据源、Jackson 等依赖。注意点确保版本兼容性如 Spring 5.x 与 MyBatis 3.5.x。 配置类 SpringConfig扫描 Service 层、启用事务管理、导入 JdbcConfig 和 MyBatisConfig。JdbcConfig配置 Druid 数据源和事务管理器。MyBatisConfig配置 SqlSessionFactory 和 Mapper 扫描。SpringMvcConfig扫描 Controller 层、开启注解驱动。 Web 初始化 通过AbstractAnnotationConfigDispatcherServletInitializer配置 DispatcherServlet 和字符编码过滤器。
查漏补缺
事务管理确保 Service 层方法添加Transactional注解。Mapper 接口代理确认MapperScannerConfigurer扫描 Dao 层接口。静态资源放行在SpringMvcConfig中配置addResourceHandlers。
二、统一结果封装
实现要点
Result 类封装返回数据data、状态码code和消息msg。Code 类定义统一状态码如 20011 表示新增成功20010 表示失败。Controller 调整所有接口返回Result对象根据业务逻辑设置状态码。
查漏补缺
异常处理确保所有业务逻辑分支都返回 Result如查询结果为空时返回 GET_ERR。状态码规范建议将状态码按业务模块划分如 200xx 为业务操作500xx 为系统错误。
三、统一异常处理
实现步骤 自定义异常类 BusinessException用户行为导致的异常如参数错误。SystemException系统层面的异常如数据库连接失败。 全局异常处理器 使用RestControllerAdvice和ExceptionHandler捕获异常并返回统一 Result。
查漏补缺
异常日志在异常处理器中添加日志记录如使用SLF4J。敏感信息处理避免将堆栈信息直接返回给前端。异常包装在 Service 层捕获原始异常并包装为自定义异常。
四、前后台联调
前端实现
异步请求使用 Axios 发送 POST/PUT/DELETE 请求处理 JSON 响应。页面交互通过 ElementUI 组件实现模态框、表单验证和数据展示。
查漏补缺
表单重置新增 / 修改操作后清空表单数据。错误提示根据后端返回的 msg 字段展示具体错误信息。数据刷新操作完成后重新加载列表数据。
五、拦截器
核心功能
预处理在preHandle中进行权限校验、参数校验等。后处理在postHandle中修改响应内容如添加响应头。资源清理在afterCompletion中释放资源。
配置要点
拦截路径使用addPathPatterns和excludePathPatterns控制拦截范围。拦截器链多个拦截器按配置顺序执行preHandle返回 false 会中断后续流程。
查漏补缺
静态资源放行确保拦截器不拦截 CSS/JS 等静态资源。性能监控在拦截器中统计请求耗时并记录日志。
六、常见问题与优化
中文乱码确认字符编码过滤器配置正确CharacterEncodingFilter。JSON 转换确保 Jackson 依赖正确引入使用RequestBody和ResponseBody。事务传播理解Transactional的传播行为如REQUIRED、REQUIRES_NEW。单元测试使用RunWith(SpringJUnit4ClassRunner)和ContextConfiguration测试 Service 层。
七、总结
SSM 整合需关注配置类的正确性统一结果和异常处理提升接口规范性拦截器增强系统功能。实际开发中需结合日志、缓存等优化系统性能并通过 Swagger 等工具完善接口文档。
过滤器Filter
1. 概念
过滤器是 Java Servlet 规范中的一部分它可以在请求到达 Servlet 之前对请求进行预处理也可以在响应返回客户端之前对响应进行后处理。过滤器可以拦截所有的请求包括静态资源如图片、CSS、JavaScript 等。
2. 工作原理
过滤器的工作原理基于 Java 的 Servlet 规范当客户端发送请求时请求会先经过过滤器链过滤器链中的每个过滤器可以对请求进行处理处理完成后再将请求传递给下一个过滤器或者 Servlet。响应返回时也会按照相反的顺序经过过滤器链。
3. 实现步骤
创建过滤器类实现javax.servlet.Filter接口并重写init、doFilter和destroy方法。配置过滤器在web.xml文件中配置过滤器或者使用注解进行配置。
4. 示例代码
以下是一个简单的字符编码过滤器示例
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;// 使用注解配置过滤器拦截所有请求
WebFilter(/*)
public class CharacterEncodingFilter implements Filter {private String encoding;Overridepublic void init(FilterConfig filterConfig) throws ServletException {// 从过滤器配置中获取字符编码encoding filterConfig.getInitParameter(encoding);if (encoding null) {encoding UTF-8;}}Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {// 设置请求和响应的字符编码request.setCharacterEncoding(encoding);response.setCharacterEncoding(encoding);// 将请求传递给下一个过滤器或Servletchain.doFilter(request, response);}Overridepublic void destroy() {// 过滤器销毁时的操作}
}5. web.xml配置方式
如果不使用注解也可以在web.xml中进行配置
filterfilter-nameCharacterEncodingFilter/filter-namefilter-classcom.example.CharacterEncodingFilter/filter-classinit-paramparam-nameencoding/param-nameparam-valueUTF-8/param-value/init-param
/filter
filter-mappingfilter-nameCharacterEncodingFilter/filter-nameurl-pattern/*/url-pattern
/filter-mapping拦截器Interceptor
1. 概念
拦截器是 Spring MVC 框架中的一个组件它可以在请求处理的前后进行一些额外的处理如权限验证、日志记录等。拦截器只能拦截 Spring MVC 处理的请求不能拦截静态资源。
2. 工作原理
拦截器基于 Spring 的 AOP面向切面编程思想通过实现HandlerInterceptor接口来定义拦截器逻辑。当请求到达 Spring MVC 的控制器时会先经过拦截器链拦截器可以对请求进行预处理、后处理和完成处理。
3. 实现步骤
创建拦截器类实现org.springframework.web.servlet.HandlerInterceptor接口并重写preHandle、postHandle和afterCompletion方法。配置拦截器在 Spring MVC 的配置文件中配置拦截器。
4. 示例代码
以下是一个简单的权限验证拦截器示例
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class AuthInterceptor implements HandlerInterceptor {Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)throws Exception {// 在请求处理之前进行权限验证Object user request.getSession().getAttribute(user);if (user null) {// 未登录重定向到登录页面response.sendRedirect(request.getContextPath() /login);return false;}return true;}Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,ModelAndView modelAndView) throws Exception {// 在请求处理之后视图渲染之前执行}Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,Exception ex) throws Exception {// 在请求处理完成后执行通常用于资源清理等操作}
}5. Spring MVC 配置拦截器
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;Configuration
public class WebConfig implements WebMvcConfigurer {Overridepublic void addInterceptors(InterceptorRegistry registry) {// 注册拦截器registry.addInterceptor(new AuthInterceptor()).addPathPatterns(/**) // 拦截所有请求.excludePathPatterns(/login, /register); // 排除登录和注册请求}
}过滤器和拦截器的比较
1. 拦截范围
过滤器可以拦截所有请求包括静态资源。拦截器只能拦截 Spring MVC 处理的请求不能拦截静态资源。
2. 实现机制
过滤器基于 Java Servlet 规范是 Servlet 容器的一部分。拦截器基于 Spring 的 AOP 思想是 Spring MVC 框架的一部分。
3. 执行顺序
过滤器在请求到达 Servlet 之前执行拦截器在请求到达 Spring MVC 的控制器之前执行。过滤器的doFilter方法执行顺序在拦截器的preHandle方法之前。
4. 使用场景
过滤器主要用于请求和响应的预处理和后处理如字符编码处理、日志记录、权限验证等。拦截器主要用于 Spring MVC 的请求处理前后的额外处理如权限验证、日志记录、性能监控等。