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

注解配置SpringMVC

使用配置类和注解代替web.xml和Spring和SpringMVC配置文件的功能。

创建初始化类,代替web.xml

Spring3.2引入了一个便利的WebApplicationInitializer基础实现,
名为AbstractAnnotationConfigDispatcherServletInitializer,当我们的类扩展了
AbstractAnnotationConfigDispatcherServletInitializer并将其部署到Servlet3.0容器的时候,
容器会自动发现它,并用它来配置Servlet上下文。

web.xml的替代配置类

//代替web.xml
public class WebInit extends AbstractAnnotationConfigDispatcherServletInitializer {@Override
//    设置一个配置类代替spring的配置文件protected Class<?>[] getRootConfigClasses() {return new Class[]{SpringConfig.class};}@Override
//    设置一个配置类代替springMVC的配置文件protected Class<?>[] getServletConfigClasses() {return new Class[]{WebConfig.class};}@Override
//    设置springmvc的前端控制器DispatcherServlet的url-patternprotected String[] getServletMappings() {return new String[]{"/"};}
//    设置当前的过滤器  ctrl+o@Overrideprotected Filter[] getServletFilters() {
//        创建编码过滤器CharacterEncodingFilter characterEncodingFilter=new CharacterEncodingFilter();characterEncodingFilter.setEncoding("UTF-8");characterEncodingFilter.setForceEncoding(true);
//        处理请求方式的过滤器HiddenHttpMethodFilter hiddenHttpMethodFilter=new HiddenHttpMethodFilter();return new Filter[]{characterEncodingFilter,hiddenHttpMethodFilter};}
}

SpringConfig配置类,代替spring的配置文件

applicationContext.xml的替代配置类

//代替spring的配置文件
@Configuration  //将当前类标识为配置类
public class SpringConfig {
//ssm整合之后,spring的配置信息写在此类中
}

WebConfig配置类,代替SpringMVC的配置文件

//代替springmvc的配置文件/*** 扫描组件,视图解析器,默认的servlet,mvc的注解驱动,视图控制器,文件上传解析器,拦截器,异常解析器*///扫描组件
@ComponentScan("com.atguigu.controller")//开启mvc的注解驱动
@EnableWebMvcpublic class WebConfig implements WebMvcConfigurer {@Override//默认的servlet处理静态资源  ctrl+opublic void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {configurer.enable();}@Overridepublic void addViewControllers(ViewControllerRegistry registry) {
//  配置视图解析器    addViewController : 设置浏览器发送的请求为/上下文路径的时候所设置的逻辑视图就是indexregistry.addViewController("/").setViewName("index");}//    文件上传解析器@Bean //可以将标识的方法的返回值作为bean进行管理,bean的id为方法的方法名public CommonsMultipartResolver multipartResolver(){return new CommonsMultipartResolver();}//    配置拦截器@Overridepublic void addInterceptors(InterceptorRegistry registry) {FirstInterceptor firstInterceptor=new FirstInterceptor();registry.addInterceptor(firstInterceptor).addPathPatterns("/**");}//    异常解析器@Overridepublic void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> resolvers) {SimpleMappingExceptionResolver exceptionResolver=new SimpleMappingExceptionResolver();Properties properties=new Properties();properties.setProperty("java.lang.ArithmeticException","error");//设置异常映射exceptionResolver.setExceptionMappings(properties);//设置共享异常信息的键exceptionResolver.setExceptionAttribute("ex");resolvers.add(exceptionResolver);}//配置生成模板解析器@Beanpublic ITemplateResolver templateResolver() {WebApplicationContext webApplicationContext =ContextLoader.getCurrentWebApplicationContext();
// ServletContextTemplateResolver需要一个ServletContext作为构造参数,可通过WebApplicationContext 的方法获得ServletContextTemplateResolver templateResolver = newServletContextTemplateResolver(webApplicationContext.getServletContext());templateResolver.setPrefix("/WEB-INF/templates/");templateResolver.setSuffix(".html");templateResolver.setCharacterEncoding("UTF-8");templateResolver.setTemplateMode(TemplateMode.HTML);return templateResolver;}//生成模板引擎并为模板引擎注入模板解析器@Beanpublic SpringTemplateEngine templateEngine(ITemplateResolver templateResolver) {SpringTemplateEngine templateEngine = new SpringTemplateEngine();templateEngine.setTemplateResolver(templateResolver);return templateEngine;}//生成视图解析器并未解析器注入模板引擎@Beanpublic ViewResolver viewResolver(SpringTemplateEngine templateEngine) {ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();viewResolver.setCharacterEncoding("UTF-8");viewResolver.setTemplateEngine(templateEngine);return viewResolver;}
}

相关文章:

注解配置SpringMVC

使用配置类和注解代替web.xml和Spring和SpringMVC配置文件的功能。创建初始化类&#xff0c;代替web.xmlSpring3.2引入了一个便利的WebApplicationInitializer基础实现&#xff0c;名为AbstractAnnotationConfigDispatcherServletInitializer&#xff0c;当我们的类扩展了Abstr…...

多项新规重磅发布,微信视频号近期需要关注这几点

随着功能的完善和内容生态的丰富&#xff0c;视频号逐渐放慢产品更新频率&#xff0c;将重点放到商家准入标准、创作者扶持计划上来&#xff0c;本期我们将更侧重解读平台新规&#xff0c;帮助大家了解行业动向&#xff0c;把握最新趋势。01 视频号小店结算规则修订 取消48小时…...

Java调用第三方http接口的方式

1. 概述 在实际开发过程中&#xff0c;我们经常需要调用对方提供的接口或测试自己写的接口是否合适。很多项目都会封装规定好本身项目的接口规范&#xff0c;所以大多数需要去调用对方提供的接口或第三方接口&#xff08;短信、天气等&#xff09;。 在Java项目中调用第三方接…...

【跟我一起读《视觉惯性SLAM理论与源码解析》】第五章第六章 对极几何图优化库的使用

极平面&#xff0c;极点&#xff0c;极线的概念对极几何&#xff0c;对极约束的概念&#xff0c;通过叉积以及点积的性质推导单应矩阵以及基础矩阵光束平差法BA是LSAM中常用的非线性优化方法一个图由若干个顶点以及这些顶点连接的边构成&#xff0c;顶点通常是待优化的变量例如…...

从没想过开源 API 工具的 Mock 功能,这么好用

很多时候&#xff0c;接口尚未开发完成&#xff0c;在系统交互双方定义好接口之后&#xff0c;我们可以提前进行开发和测试&#xff0c;并不依赖上游系统的开发实现。 通过使用Mock模拟数据接口&#xff0c;我们即可在只开发了UI的情况下&#xff0c;无须服务端的开发就可以进行…...

智慧教室--智能管控系统

智慧教室系统是一款基于AIOT数字化平台的智能教育解决方案&#xff0c;该系统实现了全面数字化、自动化管理和智能化控制&#xff0c;可大大提高教学效率和质量&#xff0c;为学生带来更加优质的教育体验。智能管控是智慧教室系统的核心功能之一。通过物联网技术&#xff0c;将…...

React的useLayoutEffect和useEffect执行时机有什么不同

我们先看下 React 官方文档对这两个 hook 的介绍&#xff0c;建立个整体认识 useEffect(create, deps): 该 Hook 接收一个包含命令式、且可能有副作用代码的函数。在函数组件主体内&#xff08;这里指在 React 渲染阶段&#xff09;改变 DOM、添加订阅、设置定时器、记录日志以…...

C语言中#include<...>和#include“...“的区别

C语言文章更新目录 C语言学习资源汇总&#xff0c;史上最全面总结&#xff0c;没有之一 C/C学习资源&#xff08;百度云盘链接&#xff09; 计算机二级资料&#xff08;过级专用&#xff09; C语言学习路线&#xff08;从入门到实战&#xff09; 编写C语言程序的7个步骤和编程…...

ubuntu本地访问nas

需求 本地磁盘空间太小&#xff0c;本地网络里有个nas&#xff0c;希望将nas作为数据盘挂载到本地使用。 方法1 基于sftp访问nas 首先nas设置时要打开sftp访问功能。 然后用ubuntu桌面访问服务器的功能登录sftp&#xff0c;类似如下指令 sftp://user192.168.0.100 ubuntu下…...

第一章:网络参考模型

一、专业术语 ISO---&#xff08;International Organization for Standardization&#xff09;国际标准化组织 OSI---&#xff08;Open System Interconnection Reference Model&#xff09;开放式系统互联通信参考模型 IEEE---(Institute of Electrical and Electronics Engi…...

extends in typescript

困惑 初学 ts 时&#xff0c;extends 让我很困惑&#xff1a;有时它代表 扩大 &#xff0c;有时代表 缩小 。举几个例子说明&#xff1a; 例1&#xff1a; class Animal {} class Dog extends Animal {}这是 js 本身就有的 class 继承语法&#xff0c;很熟悉了。 Dog 是 An…...

如何找回回收站删除的文件

回收站作为删除文件后的临时存放点&#xff0c;只要我们是右键删除或者按delete删除的文件都会存放到这里&#xff0c;所以我们每次清理电脑后&#xff0c;都会清空回收站&#xff0c;这样可以让电脑保持流畅运行。但删除这个操作是很容易出错&#xff0c;很容易把某些重要的文…...

Git系列——Git部署及应用

下面从如下几个方面介绍下其部署及应用&#xff1a;Git服务器搭建Git客户端搭建Git常用命令Git服务器搭建Linux服务器搭建(Centos7.5):一、安装配置SSH&#xff08;参考XXX)二、检查OS是否自带Git1、git-version //查询版本2、rpm -qa git //查询git详细信息3、yum -y remove x…...

Java多线程(二)--线程相关内容

1.创建线程的几种方式继承 Thread 类&#xff1b;public class MyThread extends Thread { Override public void run() {System.out.println(Thread.currentThread().getName() " run()方法正在执行..."); }实现 Runnable 接口&#xff1b;public class MyRunnable…...

CF1692E Binary Deque 题解

CF1692E Binary Deque 题解题目链接字面描述题面翻译题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示思路代码实现题目 链接 https://www.luogu.com.cn/problem/CF1692E 字面描述 题面翻译 有多组数据。 每组数据给出 nnn 个数&#xff0c;每个数为 000 或 1…...

rust方法和关联函数

Rust方法 在大多数面向对象的语言中都存在方法&#xff0c;方法一般和类关联在一起。在Rust中也是类似的&#xff0c;方法和对象总是一起出现。Rust的方法和结构体&#xff0c;枚举&#xff0c;特征一起使用。 定义方法 Rust使用关键字impl来定义方法&#xff0c;例如&#…...

深度学习如何训练出好的模型

深度学习在近年来得到了广泛的应用&#xff0c;从图像识别、语音识别到自然语言处理等领域都有了卓越的表现。但是&#xff0c;要训练出一个高效准确的深度学习模型并不容易。不仅需要有高质量的数据、合适的模型和足够的计算资源&#xff0c;还需要根据任务和数据的特点进行合…...

智慧教室系统--重点设备监控系统

随着教育信息化的不断发展&#xff0c;智慧教室已成为现代教育的重要组成部分。而智慧教室的设备管理和维护也变得越来越重要。一旦智慧教室的重要设备出现故障或异常&#xff0c;将会对教学活动产生不利影响&#xff0c;因此建立智慧教室重点设备监控系统是必要的。一、智慧教…...

Linux中断处理

目录 一、什么是中断 二、中断处理原理 三、中断接口 3.1 中断申请 3.2 中断释放 3.3 中断处理函数原型 四、按键驱动 一、什么是中断 一种硬件上的通知机制&#xff0c;用来通知CPU发生了某种需要立即处理的事件 分为&#xff1a; 1. 内部中断 CPU执行程序的过程中&am…...

python中安装gurobi和pycharm没有语法提示问题解决

安装gurobi第一步 &#xff1a;下载gurobi ( http://www.gurobi.com ) &#xff0c;需要注册账号第二步、申请License注册如果可以通过校园网&#xff0c; 则直接生成。不能的话&#xff0c;通过网站&#xff0c;发邮件申请 http://www.gurobi.cn/NewsView1.Asp?id4第三、邮件…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源&#xff08;HTML/CSS/图片等&#xff09;&#xff0c;响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址&#xff0c;提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式&#xff0c;避免服务器受到各种恶意攻击和网络威胁&#xff0c;那么&#xff0c;服务器硬防通常都会应用在哪些场景当中呢&#xff1f; 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架&#xff08;一&#xff09; 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...