strtus2改成springboot_ssh框架使用springBoot升级迁移替换Struts2

如果一个十来年的ssh项目想使用springboot的便捷性,但又不想从零开始,那么就让我们开始迁移吧。

在pom文件添加springboot 依赖

创建application 启动类

迁移web.xml

web.xml文件中定义了filter, struts2等等一堆filter, 这时我们需要做的一件事是在springboot中使我们的filter, struts2 能正常work。 这样就不需要我们改变项目中已经定义好的大量的action、controller层代码.

//声明当前类为一个配置类

@Configuration

//自动扫描包路径

@ComponentScan({"com.demo.action", "com.demo.util","com.demo.security"})

//引入之前已经存在的配置文件

@ImportResource(locations = {

"classpath:applicationContext-configuration.xml",

"classpath:applicationContext-orm.xml",

"classpath:applicationContext-business.xml",

"classpath:ApplicationContext-RabbitMQ.xml",

"classpath:applicationContext-security-authorization.xml",

})

public class ApplicationConfig {

private static final Logger log = LoggerFactory.getLogger(ApplicationConfig.class);

private LogRequestFilter logRequestFilter = new LogRequestFilter();

private StrutsPrepareAndExecuteFilter strutsPrepareAndExecuteFilter = new StrutsPrepareAndExecuteFilter(); //springboot启动时初始化struts2拦截器

@Bean

@Order(1)

public FilterRegistrationBean loginFilter() {

/*

* * LoginFilter

* com.demo.servlet.LoginFilter

*

* * LoginFilter

* /login/*

* /login.html

*

*/

FilterRegistrationBean registrationBean = new FilterRegistrationBean();

registrationBean.setFilter(new LoginFilter());//注册拦截filter

registrationBean.addUrlPatterns("/login/*", "/login.html");//拦截路径

return registrationBean;

}

@Bean

@Order(2)

public FilterRegistrationBean strutsPrepareAndExecuteFilter() {

/*

* * struts2

* org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

*

* * struts2

* /*

*

* * struts2

* FORWARD

*

*/

log.debug("Instantiating StrutsPrepareAndExecuteFilter");

FilterRegistrationBean registrationBean = new FilterRegistrationBean();

registrationBean.setFilter(strutsPrepareAndExecuteFilter);//注册Struts2拦截器

registrationBean.setName("StrutsPrepareAndExecuteFilter");

registrationBean.addUrlPatterns("/*");//默认拦截所有请求

return registrationBean;

}

}

通过以上code, 我们已经将web.xml的配置完全迁移,这时我们通过springboot 已经可以开始启动项目了。

当然,在springboot中使用Struts2是不合理的也是官方不支持使用的, 后续的工作我们可以逐步整合hiberante, springsecurity,最后将Struts2替换成springmvc. 慢慢减少我们的配置文件。

(1)FilterRegistrationBean: spring 对filter 拦截器的一个注册类, 自带setorder方法, [email protected]�动和拦截的优先级。

(2)@Order 控制filter的启动和拦截的优先级。

(3)@Bean注解用于告诉方法,产生一个Bean对象,然后这个Bean对象交给Spring管理。产生这个Bean对象的方法Spring只会调用一次,随后这个Spring将会将这个Bean对象放在自己的IOC容器中。

(4) StrutsPrepareAndExecuteFilter 这个类就不多说了,相信大部分使用struts2的小伙伴都知道这是struts2的启动类

(5) @ImportResource等同于xml配置。参考:https://blog.csdn.net/jiaobuchong/article/details/50530027

(6)@Configuration 用于定义配置类,可替换xml配置文件,[email protected]法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。

参考: https://blog.csdn.net/qq_35981283/article/details/77826537

https://www.jianshu.com/p/3bd687e9d1e7

springboot 系列教程:

https://blog.csdn.net/softwave/article/details/77152373

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/519601.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

同样做前端,为何差距越来越大?

阿里妹导读:前端应用越来越复杂,技术框架不断变化,如何成为一位优秀的前端工程师,应对更大的挑战?今天,阿里前端技术专家会影结合实际工作经验,沉淀了五项重要方法,希望能对你的职业…

云+X案例展 | 民生类:必创科技助力打造智慧城市

本案例由必创科技投递并参与评选,CSDN云计算独家全网首发;更多关于【云X 案例征集】的相关信息,点击了解详情丨挖掘展现更多优秀案例,为不同行业领域带来启迪,进而推动整个“云行业”的健康发展。每当夜幕降临&#xf…

刚刚,阿里宣布开源Flutter应用框架Fish Redux!

3月5日,闲鱼宣布在GitHub上开源Fish Redux,Fish Redux是一个基于 Redux 数据管理的组装式 flutter 应用框架, 特别适用于构建中大型的复杂应用,它最显著的特征是 函数式的编程模型、可预测的状态管理、可插拔的组件体系、最佳的性…

谈谈结构体部分成员排序(重载的利用/sort)

涉及知识点: 1.重载运算符的知识 2.sort函数的使用 3.高精度排序 sort函数的用法? 通过面向百度GOOGLE编程的我,得知,sort的用法 sort函数详解(史上最完整QAQ) - AlvinZH - 博客园 对于数组而言&…

qt最大化和还原实现_研究进展 | 水生所关于细菌异化型硝酸盐还原成铵与反硝化脱氮两种途径抉择的分子调控机制研究取得进展...

在无氧和缺氧条件下,许多细菌可利用硝酸根和亚硝酸根作为电子受体进行无氧呼吸,包括异化型硝酸盐还原成铵(dissimilatory nitrate reduction (DNR) to ammonia,DNRA)和反硝化脱氮(denitrification)两种相互竞争的DNR途径,在氮元素…

rabbitmq 集群 ha负载 Consumer raised exception, processing can restart if the connection factory

文章目录1. 背景2. 现象3. 原因分析4. 解决方案5. 成功案例1. 背景 线上有一个rabbitmq 集群,一台磁盘模式的 两台内存模式的. 使用erlang 做cookie 做同步.haproxy做负载 2. 现象 在连接一会后 程序抛出异常 Consumer raised exception, processing can restart if the con…

2019 年,容器技术生态会发生些什么?

1. Kubernetes 项目被采纳度将持续增长 作为“云原生”(Cloud Native)理念落地的核心,Kubernetes 项目已经成为了构建容器化平台体系的默认选择。但是,不同于一个只能生产资源的集群管理工具,Kubernetes 项目最大的价…

中国科学院院士徐宗本:人工智能的基石是数学

来源:科学网 “人工智能的基石是数学,没有数学基础科学的支持,人工智能很难行稳致远。” 近日,由联合国教科文组织和中国工程院联合主办的联合国教科文组织国际工程科技知识中心2019国际高端研讨会上,中国科学院院士、…

编写一个C程序,实现以下功能:输入n个人的身高,然后从n个人中选出身高差值最小的两个人作为礼仪(如果差值相同的话,选取其中最高的两个人),要求输出两个礼仪的身高。

题目要求 编写一个C程序,实现以下功能: 输入n个人的身高,然后从n个人中选出身高差值最小的两个人作为礼仪 (如果差值相同的话,选取其中最高的两个人),要求输出两个礼仪的身高。(使用…

Jenkins操作手册

文章目录一、企业实战(JenkinsGitLabSonarQube)1. Jenkins下载2. Jenkins运行3. .Jenkins登录4. Jenkins安装推荐插件5. Jenkins创建管理员用户6. Jenkins自定义安装插件7. Jenkins 安全设置8. jenkins安装和第一个Java项目构建9. jenkins发布项目到测试环境10. Jenkins通过Dep…

MySQL运维实战 之 PHP访问MySQL你使用对了吗

大家都知道,slow query系统做的好不好,直接决定了解决slow query的效率问题 一个数据库管理平台,拥有一个好的slow query系统,基本上就拥有了解锁性能问题的钥匙 但是今天主要分享的并不是平台,而是在平台中看到的奇…

三个数差的平方公式推导过程_勾股数公式的简单推导

勾股数 是指满足 的正整数,它们的通用公式为 ,下边我从定义出发,利用平方差公式举例实验找规律,推导出这一通用公式。由 可知 当 为奇数时 和 全都是奇数;当 为偶数时 和 全都是偶数。( ,与 同奇…

通过阿里云K8S Ingress Controller实现路由配置的动态更新

简介 在Kubernetes集群中,Ingress作为集群内服务对外暴露的访问接入点,其几乎承载着集群内服务访问的所有流量。我们知道,Nginx Ingress Controller是Kubernetes社区很重要的一个子项目,其内部主要依托于高性能的负载均衡软件Ngi…

编写一个C程序,实现以下功能:用一个函数实现两个字符串的比较,即自己写一个strcmp函数,函数原型为:int strcmp(char *p1,char *p2);设p1指向字符串s

题目描述: 编写一个C程序,实现以下功能: 用一个函数实现两个字符串的比较,即自己写一个strcmp函数,函数原型为: int strcmp(char *p1,char *p2); 设p1指向字符串s1,p2指向字符串s2,…

工作流实战_14_flowable_已办任务列表查询

项目地址:https://gitee.com/lwj/flowable.git 分支flowable-base 视频讲解地址 https://space.bilibili.com/485524575/channel/detail?cid94579 1、演示 2、代码 这里也是通过sql来查询的 SELECT DISTINCTt1.ID_ AS taskId,t1.NAME_ AS taskName,t2.FIRST_ AS…

SpringBoot使用prometheus监控

本文介绍SpringBoot如何使用Prometheus配合Grafana监控。 1.关于Prometheus Prometheus是一个根据应用的metrics来进行监控的开源工具。相信很多工程都在使用它来进行监控,有关详细介绍可以查看官网:https://prometheus.io/docs/introduction/overview/…

合同相似可逆等价矩阵的关系及性质_笔记:辛矩阵和Siegel上半平面

1.辛矩阵(1.1)定义。 设 , 是交换幺环。定义其中 ,以及注意,对任意 , 令 ,演算知 。因此有群概形的正合列:(1.2)等价条件。设 ,利用分块矩阵计算,可知下述条件…

详解异构计算FPGA基础知识

戳蓝字“CSDN云计算”关注我们哦!作者 | 浩仔责编 | 阿秃随着云计算,大数据和人工智能技术应用,单靠CPU已经无法满足各行各业的算力需求。海量数据分析、机器学习和边缘计算等场景需要计算架构多样化,需要不同的处理器架构和GPU&a…

开发函数计算的正确姿势——使用 brotli 压缩大文件

大文件问题 函数计算对上传的 zip 代码包尺寸限制为 50M。某些场景中代码包中会超过这一限制,比如二进制 serverless-chrome 经过一番裁剪以后 ZIP 压缩包的体积为 43.4M,类似的还有 liboffice ,此外常见的还有机器学习训练的模型文件。 目…

流程变量的分组_01

项目地址:https://gitee.com/lwj/flowable.git 分支flowable-base 视频地址:https://www.bilibili.com/video/av79774697/ 业务场景: 实际场景中,有可能我们的流程变量会比较多,如果一个变量就作为一条记录存储的话&a…