如果一个十来年的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

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

  1. strtus2改成springboot_jdk1.6环境下struts2改spring boot方案-阿里云开发者社区

    公司目前上线的两个项目都是比较老的,java版本是jdk1.6,mvc框架使用的是strus2. 随着不久前struts2官方公布新的安全漏洞,我们也不得不做出相应的整改措施,除了之前博文中所说把st ...

  2. strtus2改成springboot_jdk1.6环境下struts2改spring boot方案

    公司目前上线的两个项目都是比较老的,java版本是jdk1.6,mvc框架使用的是strus2. 随着不久前struts2官方公布新的安全漏洞,我们也不得不做出相应的整改措施,除了之前博文中所说把st ...

  3. strtus2改成springboot_springboot+struts2打成jar包运行

    springboot集成struts2,在开发工具(eclipse)运行正常.打成jar包或war包,使用java -jar执行,均会出现以下错误:求如何解决? java.lang.NullPoint ...

  4. (二):集成日志框架:springboot使用logback日志框架

    前言 项目中日志系统是必不可少的,目前比较流行的日志框架有log4j.logback等,可能大家还不知道,这两个框架的作者是同一个人,Logback旨在作为流行的log4j项目的后续版本,从而恢复lo ...

  5. SpringBoot升级到2.0后默认时间格式变化_springboot接收date类型参数

    springboot1.x时,请求返回默认将Date类型转换成时间戳: createTime: 1544693261000 然而在升级到springboot2.0后,默认返回的时间格式变成了UTC字符 ...

  6. SSM框架学习-SpringBoot和SpringMVC

    springBoot 端口号设置 在application.properties里面写:server.port=8080 每个设置的端口号只能debug(运行)一次,没有关闭进行再次运行会出现端口号被 ...

  7. php7不支持mysql扩展了么_php7不支持mysql扩展需要改成mysqli扩展

    最近升级php7发现不支持mysql扩展,需要改成用mysqli扩展 看代码class Db{ private $username = ''; private $password = ''; priv ...

  8. 改成中文版的_lol手游怎么改成中文版?英雄联盟手游中文版更改教程

    阅读本文前,请您先点击上面的蓝色字体,再点击"关注",这样您就可以继续免费收到文章了.每天都有分享,完全是免费订阅,请放心关注! [免责声明]本文部分文字与图片资源来自于网络,转载 ...

  9. 改logback logstash-logback-encoder 框架本身的日志级别

    大家好,我是烤鸭: 最近遇到一个问题,想把logback框架本身的日志级别修改,需要 logstash-logback-encoder 6.1 以上的版本才可以. 直接上代码 这里修改的不是业务日志级 ...

最新文章

  1. 你必须知道的.net学习总结
  2. 速率单位和信息量单位区分
  3. PHP生成PDF并转换成图片爬过的坑
  4. Java虚拟机学习(3): 类加载机制
  5. linux用unzip解压.zip文件失败解决方案
  6. wxWidgets:窗口删除
  7. 使用Mutex實現單一程式執行個體的注意事項(转)
  8. javax.servlet.ServletException: Circular view path []: would dispatch back to the current....
  9. JavaScript数组方法终极指南-地图
  10. Java数组快速排序
  11. JS继承的几种方式及优缺点
  12. 矩阵分析一子空间和特征分解
  13. VMware Workstation未能挂起虚拟机
  14. Vue3.x-bate + Antd2.x 项目搭建报错
  15. 保洁阿姨看完都会了!熬夜肝完这份Framework笔记,吐血整理
  16. Long tailed 长尾分布论文汇总
  17. 资源管理Placement部署(Nova)
  18. day40 ORM sqlalchemy
  19. 关于父子节点、父子元素、祖辈元素的获取
  20. U盘安装Linux红帽子6.4系统

热门文章

  1. 低效程序员的7个坏习惯
  2. Midway Serverless 发布 2.0,一体化让前端研发再次提效
  3. MQTT在游戏运营发行中的实践
  4. 如何生成 Flink 作业的交互式火焰图?
  5. 耗时又繁重的SQL诊断优化,以后就都交给数据库自治服务DAS吧!
  6. 冠状病毒过后世界九大未来预测
  7. 5G的7大用途,你知道几个?
  8. 一个多业务、多状态、多操作的交易链路?闲鱼架构这样演进
  9. 源码|详解分布式事务之 Seata-Client 原理及流程
  10. 可应用于实际的14个NLP突破性研究成果(四)