当前位置: 首页 > news >正文

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: 被拦截的处理器将不执行

多拦截器执行顺序

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

http://www.gsyq.cn/news/182783.html

相关文章:

  • SSH公钥认证失败排查:Miniconda-Python3.10服务器权限修正
  • Conda info查看环境信息:Miniconda-Python3.10诊断配置问题
  • 安装包冲突排查指南:Miniconda-Python3.10精准控制依赖版本
  • 小白也能学会的PyTorch安装教程GPU版本(基于Miniconda-Python3.10)
  • 联蔚盘云-ADF的数据采集方案-Azure Storage数据源
  • Pyenv与Miniconda共用方案:Python3.10灵活管理多个AI项目
  • 利用Miniconda-Python3.10镜像在云服务器上快速部署PyTorch训练任务
  • 清华镜像使用方法:快速拉取Miniconda-Python3.10 Docker镜像
  • HTML Meta标签设置:提高Miniconda-Python3.10相关内容搜索可见性
  • 非遗万象图:自动化采集与多源数据融合实战
  • 清华镜像源列表更新:Miniconda-Python3.10配置中科大、阿里云备选
  • Pyenv rehash重新索引命令:确保Miniconda-Python3.10工具可用
  • Linux用户权限设置:Miniconda-Python3.10多用户共享环境配置
  • 2025年如何选择优质的企业加密软件与数据防泄露系统服务商? - 睿易优选
  • AI 得流量者得天下?
  • PostgreSQL在psql中执行INSERT语句时不显示插入条数信息的方法
  • Mobile GUI Agent相关学习资料整理
  • 《代码大全2》前三分之二读后感
  • 人工智能之核心基础 机器学习 第二章 监督学习
  • GitHub Actions集成Miniconda-Python3.10实现CI/CD自动化测试
  • 绍兴企业如何选择靠谱的AI全网营销系统?超越功能清单的深度洞察
  • 【拯救HMI】HMI “卡成 PPT” 怎么办?—— 性能优化指南
  • 运势运程算命程序源码公开:PHP无依赖版开箱体验
  • 不同地区研发中心的角色如何进行定位
  • 1994-2024年上市公司气候变化减缓专利技术专利数量数据(附原始专利)
  • Token计费模型设计:Miniconda-Python3.10支撑高并发API服务
  • 靠谱的应急事故池清淤压滤干化施工哪个好
  • 大模型学习全流程:从入门到项目实战,附免费学习资源_大模型零基础教程(非常详细),大模型入门到精通
  • Linux系统AI开发入门:Miniconda-Python3.10带你迈出第一步
  • 人形机器人肢体通信与驱动的最佳技术方案