升級struts2-2.5,其實並沒有想象中的那麼難
最近公司在阿里的伺服器總是受到DDOS攻擊,和老大一起檢視了攻擊詳情發現是由於struts版本過低,導致被入侵,於是升級了一下struts的版本到2.5,希望可以一次性解決這個問題
jar包放在百度雲上自行下載:連結: https://pan.baidu.com/share/init?surl=NGfwEY_PomZC2wG5UOudlw
提取碼:m3n6
複製這段內容後開啟百度網盤手機App,操作更方便哦
首先,替換jar包(注意:並不是圖片裡有的都要放到自己的專案中,自己的專案中用到了哪些,就替換掉哪些,要注意的是:如果你的專案中沒有用到log4j.xml在換成2.5以後,執行tomcat啟動專案,總是會提示你專案中缺少log4j.xml,這個問題自己建立一個log4j.xml放在src下,配一些最基本的東西就可以了,如果原來的專案是log4j.jar要保留,把log4j-api-2.8.2.jar也是要拷貝進去不然的話,在刪除log4j.jar之後會報錯,tomcat啟動不起來)
然後刪除自己專案中的xwork-core-2.3.20.jar,因為這個類庫在struts升級到2.5版本已經包含在了struts2-core中了,所以一定要刪除
之後要在自己的web.xml中修改下面程式碼
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
把 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter 中的.ng 去掉 修改為
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
修改之後,需要前往struts.xml中 把原先的頭部資訊修改為
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd"><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd">
其實也就是把版本換成2.5
在專案裡有jsp的小夥伴們,如果你們用了s標籤,請修改一下幾點
<s:setname="myCode" value=" *** "/>
改成
<s:setvar="myCode" value=" *** "/>
-------------------------------------------------------------------------------------------------------------------------------------
<s:propertyescape="true" var="someProperty"/>
改成
<s:propertyescapeHtml="true" var="someProperty"/>
還有就是
由於新版本的Struts預設不能修改action的訪問字尾,不能使用通配的方式呼叫action裡的方法,所以新增:
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
<constant name="struts.enable.SlashesInActionNames" value="true"/>
使得<constant name="struts.action.extension" value="do" />可以生效
如原版本的struts的版本小於等於2.3,且專案進行動態方法配置,則可在全域性中新增
<global-allowed-methods>regex:.*</global-allowed-methods>
另外也是最重要的: struts2.5版本適用jdk1.7或者以上
您可能遇到的錯誤:
(1)Caused By: java.lang.IllegalArgumentException
at com.bea.objectweb.asm.ClassReader.<init>(Unknown Source)
at com.bea.objectweb.asm.ClassReader.<init>(Unknown Source)
參考文章:http://www.mamicode.com/info-detail-2306642.html
相關文章
- 超越身邊80%的人,其實沒有你想象的那麼難!
- API 與 Webhook,其實並沒有那麼難懂APIWebHook
- 想拿到BAT的前端開發崗offer,並沒有想象中的那麼難!BAT前端
- 相親原始碼中移動支付的實現,沒有想象中那麼難原始碼
- Netty快速上手:Netty沒有你想象的那麼難Netty
- 聊聊Spring的FactoryBean其實沒那麼難SpringBean
- 全球“萬人迷”MySQL或許並沒有想象中的那麼“香”MySql
- 「碼農讀書」:我們並沒有自己想象的那麼理性
- Javascript之其實我覺得原型鏈沒有難的那麼誇張!JavaScript原型
- 人臉融合?沒有想象中難!
- Java轉python機器學習,並沒有大家想象的那麼美好!JavaPython機器學習
- 復刻或重製老遊戲,可能並沒有想象中那麼簡單遊戲
- 基本型號 14 英寸 MacBook Pro 可能沒有您想象中那麼快Mac
- 在遊戲裡新增簡單模式,沒有想象中那麼簡單遊戲模式
- OLED螢幕還未普及,移動VR沒有想象中爆發那麼快VR
- 基於 Serverless 的 Valine 可能並沒有那麼香Server
- 賺錢,沒你想的那麼難
- 《英國皇家學會開放科學》:“一萬小時定律”並沒想象中那麼重要
- 解讀 App Store 稽核黑箱政策 —— 遠沒有你想象的那麼邪惡APP
- Eutelsat:“超高清並沒有我們希望的那麼成功”
- 『研究發現“一萬小時定律”並沒想象中那麼重要』今日資料行業日報(2019.08.28)行業
- 設計師如何針對遊戲做出平衡改動?其實並沒那麼簡單遊戲
- Android螢幕適配很難嘛?其實也就那麼回事Android
- webpack-dev-server 其實並不難WebdevServer
- 加州大學:研究表明青少年花時間在手機和網路上並不像想象中的那麼有危害
- 程式設計真的有那麼難學嗎?其實不然,無非是沒找對方法罷了(以c/c++為例)程式設計C++
- 走出架構誤區,架構師並不是想象的那麼容易架構
- App抓包其實沒那麼複雜!Charles來幫你搞定APP
- 利用Python寫個開心消消樂小遊戲,並沒有想象中的複雜Python遊戲
- 分散式鎖沒那麼難,手把手教你實現 Redis 分佈鎖!|保姆級教程分散式Redis
- 世嘉的霧遊戲有沒有那麼奇葩?遊戲
- Python的協程真的有那麼難嗎?Python
- 其實吧,LRU也就那麼回事。
- 360win10升級助手沒有了怎麼辦_win10系統沒有360升級助手的解決方法Win10
- 【秋招復盤】覆盤我的美團,阿里,騰訊等面試經驗,其實進BAT上班真沒那麼難!阿里面試BAT
- 幽默:K8S沒有那麼難,部署在Kubernetes上個人部落格K8S
- 思邁特軟體VP徐晶:其實,金融科技也沒那麼“高大上”
- CSS 滾屏效果,要比想象中的難CSS