news 2026/7/4 10:06:37

SpringMVCDay02

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SpringMVCDay02

这里提到父子容器的概念,getServletConfigClasses 里面的容器可以访问getRootConfigClasses的容器,但是,getRootConfigClasses里的容器不能访问getServletConfigClasses里面的容器

启动类的标准写法

事务处理

public class JdbcConfig{

@Bean

public PlatformTransactionManager transactionManager(DataSource dataSource){

DataSourceTransactionManager transactionManager = new DataSourceTransactionManager(dataSource);

return transactionManager

}

}

@Configuration

@ComponentScan("com.itheima")

@PropertySource("classpath: jdbc.property")

@Import({JdbcConfig.class,MybatisConfig.class})

@EnableTransactionManagement

public class SpringConfig{

}

@Transactional

public interfact BookService{

}

web配置类

public class ServleetContainersInitConfig extends AbstractAnnotationConfigDispatcherServletInitializer{

protected Class<?>[] getRootConfigClasses(){

return new Class[]{SpringConfig.class};

}

protected Class<?>[] getServletConfigClasses(){

return new Class[]{SpringMvcConfig.class};

}

pritected Filter[] getServletFilters(){

return new String[]{"/"};

}

@Override

protected Filter[] getServletFilters(){

CharacterEncodingFilter filter=new CharacterEncodingFilter();

filter.setEncoding("UTF-8");

return new Filter[]{filter};

}

}

SpringMVC配置类

@Configuration

@ComponentScan({"com.itheima.controller"})

@EnableWebMvc

public class SpringMvcConfig{

}

表现层数据封装

前端接收数据

由于返回的数据可能很多种,所有我们需要一个统一的格式

前端接收数据格式一封装

异常处理器:

程序开发过程中不可避免的会遇到异常现象

各个层级均出现异常,异常处理代码书写在哪一行

所有的异常均抛出到表现层进行处理

异常处理器

@RestControllerAdvice : 声明这是个异常处理类

类注解:

Rest风格开发的控制器增强类定义上方

为Rest风格开发的控制器类做增强

@RestControllerAdvice

public class ProjectExceptionAdvice{

}

此注解自带@ResponseBody注解与@Componene注解,具备对应的功能

@ExceptionHandler : 则是声明要处理什么样的异常

项目异常分类

业务异常(BusinessException)

规范的用户行为产生的异常

不规范的用户行为操作产生的异常

系统异常(SystemException)

项目运行过程中可预计且无法避免的异常

其他异常(Exception)

编程人员未预期到的异常

项目异常处理的步骤

public class SystemException extends RuntimeException{

private Integer code;

public SystemException(Integer code,String message){

super(message);

this.code=code;

}

public SystemException(Integer code ,String message,Throwable cause){

super(message,cause);

this.code=code;

}

public Integer getCode(){
return code;

}

public void setCode(Integer code){

this.code=code;

}

}

放行某些请求

拦截器

拦截器是一种动态拦截方法调用的机制,在SpringMVC中动态拦截控制器方法的执行

作用:

在指定的方法调用前后执行预先设定的代码

阻止原始方法的执行

拦截器与过滤器

归属不同: Filter属于Servlet技术,Interceptor属于SpringMVC技术

拦截内容不同: Filter对所有访问进行增强,Interceptor仅针对SpringMVC的访问进行增强

声明拦截器的bean,并实现HandlerInterceptor接口(注意: 扫描加载bean)

@Component把它装进IOC容器

public class ProjectInterceptor implements HandlerInterceptor{

拦截的原始操作之前进行

public boolean preHandle(..) throws Exception{

.......

return true;这里必须是true ,否则原始操作无法进行就终止了

}

拦截的原始操作之后进行

public void postHandle(..) throws Exception{

.........

}

拦截的原始操作之后并且在postHandle之后进行

public void afterCompletion(..) throws Exception{

.........

}

}

拦截器的参数

参数:

request: 请求对象

response: 响应对象

handler: 被调用的处理器对象,本质上是一个方法对象,对反射技术中的method对象进行了再包装

返回值为flase: 被拦截的处理器将不执行

多拦截器执行顺序

当配置多个拦截器时,形成拦截器链

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/4 8:30:22

BioSIM抗人CD360/IL21R抗体SIM0509:助力免疫细胞功能调控研究

在生命科学领域&#xff0c;抗体产品是研究和开发中不可或缺的重要工具。随着生物技术的不断进步&#xff0c;越来越多的高质量抗体产品被推向市场&#xff0c;为科研工作者提供强有力的支持。其中&#xff0c;BioSIM 抗人 CD360/IL21R 抗体&#xff08;ATR-107 生物类似药&…

作者头像 李华
网站建设 2026/7/4 8:30:32

Med3DVLM: An Efficient Vision-Language Model for 3D Medical Image Analysis

视觉语言模型(VLM)在二维医学图像分析中已展现出潜力,但由于体积数据的高计算需求以及将三维空间特征与临床文本对齐的难度,将其扩展到三维领域仍具有挑战性。我们提出了Med3DVLM,这是一种三维视觉语言模型,旨在通过三项关键创新来应对这些挑战:(1)DCFormer,一种高效…

作者头像 李华
网站建设 2026/7/4 8:27:04

通达信很准的买入 源码

{}MA5:MA(C,5); MA10:MA(C,10); MA20:MA(C,20); MA30:MA(C,30); 五日乖离率:(C-MA5)/MA5*100; BB5:ATAN((MA5/REF(MA5,1)-1)*100)*180/3.1416; 速度5:SMA(EMA((MA5-REF(MA5,1))/REF(MA5,1),3)*100,3,1); 加速度5:EMA((速度5-REF(速度5,1)),3); BB10:ATAN((MA10/REF(MA10,1)-1)*…

作者头像 李华
网站建设 2026/7/4 8:28:53

GitHub Actions集成Miniconda-Python3.10实现CI/CD自动化测试

GitHub Actions 集成 Miniconda-Python3.10 实现 CI/CD 自动化测试 在数据科学和机器学习项目日益复杂的今天&#xff0c;一个常见的困扰是&#xff1a;代码在本地运行完美&#xff0c;一旦推送到远程仓库触发 CI 流程&#xff0c;却频繁报错。这类问题往往源于环境差异——你用…

作者头像 李华
网站建设 2026/7/2 8:58:45

Unix 操作系统:现代计算基石的核心解析

1 概述&#xff1a;不朽的计算哲学Unix 是一个强大的多用户、多任务操作系统&#xff0c;自1970年问世以来&#xff0c;以其“保持简单”&#xff08;Keep It Simple, Stupid, KISS&#xff09;​ 的设计哲学&#xff0c;成为了现代操作系统的基石。它不仅是一个技术产品&#…

作者头像 李华
网站建设 2026/6/26 16:23:16

巴菲特的投资策略与股市波动性管理

巴菲特的投资策略与股市波动性管理 关键词:巴菲特投资策略、股市波动性管理、价值投资、长期投资、安全边际 摘要:本文深入探讨了巴菲特的投资策略以及如何运用这些策略进行股市波动性管理。首先介绍了巴菲特投资策略产生的背景和适用范围,明确了预期读者。接着详细阐述了巴…

作者头像 李华