当前位置: 首页 > 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第三、邮件…...

重新安装微信新版本后才发现历史记录文件夹名称不匹配!解决方法

重新 安装/恢复 电脑&#xff0c;安装微信最新版本 记录文件夹变更为&#xff1a;xwechat_files 旧的格式&#xff1a;WeChat Files 找很多方法&#xff0c;以及腾讯官方的说明&#xff0c;无效、费解&#xff0c;来点干货&#xff0c;成功解决经验&#xff1a; &#xff08;1&…...

姜翰奇补题

3.23-3.29一、PTA天梯赛5:第5&#xff0c;7&#xff0c;8&#xff0c;10&#xff0c;11&#xff0c;12二、牛客&#xff1a;136周赛三、马蹄集&#xff1a;DFS和BFS搜索题目四、牛客&#xff1a;蓝桥杯模拟赛3.30-4.5一、PTA天梯赛6:第8、9、10二、牛客&#xff1a;137周赛三、…...

Java集成LibreOffice实现高效Office文档批量转PDF方案

1. 为什么选择LibreOffice进行文档转换 在企业日常办公中&#xff0c;我们经常需要处理大量的Office文档。想象一下这样的场景&#xff1a;财务部门每月要生成上百份报表&#xff0c;人力资源部门要处理大量简历&#xff0c;而市场部门则需要频繁修改和分享各种方案文档。这些文…...

棕榈酰化修饰:从基础研究到癌症治疗的5个关键突破点

棕榈酰化修饰&#xff1a;从基础研究到癌症治疗的5个关键突破点 在肿瘤免疫治疗领域&#xff0c;蛋白质翻译后修饰的调控机制正成为突破性疗法的新靶点。棕榈酰化修饰——这种将16碳棕榈酸共价连接到蛋白质半胱氨酸残基上的动态过程&#xff0c;近年来因其在癌细胞信号传导中的…...

号令天下:守财数字能量号组413与313能守财吗

在数字能量学的体系中&#xff0c;延年磁场是主导守财的核心能量&#xff0c;天医磁场主打招财纳福&#xff0c;生气磁场侧重拓展人脉&#xff0c;二者并不具备直接的守财属性。像 413、313 这类组合&#xff0c;核心作用集中在招财聚财方面&#xff0c;守财能力相对薄弱&#…...

OpenClaw自动化监控:百川2-13B-4bits量化模型驱动的异常检测

OpenClaw自动化监控&#xff1a;百川2-13B-4bits量化模型驱动的异常检测 1. 为什么选择OpenClaw做自动化监控&#xff1f; 去年我负责的一个个人项目遇到了运维难题——每天需要手动检查服务器状态、扫描日志关键词、生成异常报告。这种重复性工作不仅耗时&#xff0c;还经常…...

AI时代程序员必看!揭秘Harness Engineerin

当AI智能体开始批量编写代码&#xff0c;程序员会失业吗&#xff1f;OpenAI的一个实验给出了惊人答案&#xff1a;在一次实验中&#xff0c;3名工程师配合1500个AI智能体&#xff0c;竟在5个月内完成了100万行代码的产品开发——人类一行代码都没写&#xff01;但背后真正的秘密…...

多模态整合进阶必读:MIT APOLLO框架核心思想(非常详细),从原理到精通,收藏这一篇就够了!

麻省理工学院与瑞士苏黎世联邦理工学院的联合研究团队&#xff0c;提出了计算框架 APOLLO&#xff0c;即通过潜变量优化学习部分重叠潜空间的自编码器&#xff0c;其通过显式建模共享信息和模态特异性信息&#xff0c;为更全面、精准地解析细胞状态及其调控逻辑提供了一条可行的…...

ncmdumpGUI高效使用指南:NCM文件转换完全掌握

ncmdumpGUI高效使用指南&#xff1a;NCM文件转换完全掌握 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换&#xff0c;Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 一、建立NCM转换认知体系 1.1 理解NCM文件加密机制 …...

OpenBMC实战:phosphor-bmc-code-mgmt仓库代码逻辑全解析(附避坑指南)

OpenBMC实战&#xff1a;phosphor-bmc-code-mgmt仓库代码逻辑全解析&#xff08;附避坑指南&#xff09; 在嵌入式系统开发领域&#xff0c;BMC&#xff08;Baseboard Management Controller&#xff09;固件的可靠更新机制是确保服务器稳定运行的关键环节。作为OpenBMC项目的核…...