struts2.3.15升級到2.5.13需要做的工作
struts2.3.15升級到2.5.13需要做的工作
1.首先jdk1.6要升級到jdk1.7以上
由於jdk1.6和1.7的一些方法不同,一些類中方法需要修改
- MonitorService.java
- FileUpftp.java
jdk1.6 jdk1.7 FTPClient 的不同
主要是FTPClient和執行緒方面的一些方法修改(
以後加上
)
FTPClient 1.例項化的變化: 只列舉主要變化其他內容不列舉
jdk1.6版本 | jdk1.7 |
---|---|
//登入伺服器 ftpClient = new FtpClient(ipAddress, ipPort); ftpClient.login(userName, PassWord); //登出 ftpClient.sendServer("QUIT\r\n"); //建目錄 ftpClient.ascii(); ftpClient.sendServer("XMKD " + pathName + "\r\n"); ftpClient.binary(); //上傳檔案到FTP伺服器 TelnetOutputStream ftpOut = ftpClient.put(destination); //從FTP檔案伺服器上下載檔案 TelnetInputStream ftpIn = ftpClient.get(SourceFileName); //從FTP檔案伺服器上刪除檔案 String str = "DELE "+path+"/" + FileName + "\r\n"; ftpClient.sendServer(str); |
//登入伺服器 ftpClient = FtpClient.create(ipAddress); ftpClient.login(userName,null, PassWord); //登出 ftpClient.close(); //建立目錄 ftpClient.setAsciiType(); ftpClient.makeDirectory("XMKD " + pathName + "\r\n"); ftpClient.setBinaryType(); //上傳檔案到FTP伺服器 TelnetOutputStream ftpOut = (TelnetOutputStream) ftpClient.putFileStream(destination); //從FTP檔案伺服器上下載檔案 TelnetInputStream ftpIn = (TelnetInputStream) ftpClient.getFileStream(SourceFileName); //從FTP檔案伺服器上刪除檔案 String str = path+"/" + FileName; ftpClient.deleteFile(str); |
2.struts2包替換(建議maven管理jar包,替換簡單)
下載jar包
struts2.5.13所有的jar包從官網下載的
https://struts.apache.org/index.html
最新的jar包https://struts.apache.org/download.cgi#struts2513
Version Notes
Full Distribution:
struts-2.5.13-all.zip (65MB) [PGP] [MD5]
然後替換所有struts開頭的jar包,具體細節不說了就是煩,刪除了下面這個jar包
3.修改web.xml:
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
修改成
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
4.struts2配置修改
struts.xml部分的頭部修改
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
問題報錯:
org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException:
org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException:
.apache.struts2.json.JSONException: java.lang.reflect.InvocationTargetException
網上解決辦法:http://ask.csdn.net/questions/260958
這是因為 struts2.5 為了提升安全性,新增了 allomethod 這麼個玩意。
解決方法是在配置檔案中新增:
<package name="exam" extends="json-default">
<global-allowed-methods>regex:.*</global-allowed-methods>
<action name="user" class="userAction">
...
</action>
</package>
或者,針對action,在 action 塊中新增
<allowed-methods>regex:.*</allowed-methods>
同樣也支援在你的 action 上使用 @AllowedMethods
註解
預設的設定為
<global-allowed-methods>execute,input,back,cancel,browse,save,delete,list,index</global-allowed-methods>
全域性設定是增量而不是覆蓋的,支援正則和直接匹配方法,原始碼在這兩段
// com.opensymphony.xwork2.DefaultActionProxy#prepare
// com.opensymphony.xwork2.config.entities.ActionConfig#isAllowedMethod
老專案因為爆出漏洞然後我找了一下午這個問題,最終開啟研發模式,並搜尋官網文件解決。 struts 真是個坑啊。
5.struts2頁面修改
頁面報錯,否則報錯如下:
Struts has detected an unhandled exception:
Messages:
/tagDef/export_record_now.jsp (line: 41, column: 4) Attribute id invalid for tag iterator according to
TLD
File: org/apache/jasper/compiler/DefaultErrorHandler.java
頁面中一些標籤需要修改: jstl標籤中的變數id要變為var如圖:
struts專案就是這麼坑,漏洞釋出的頻率比較高
相關文章
- Rxjava1升級到Rxjava2的工作RxJava
- 升級Win11專業工作站版金鑰,無需程式碼一秒升級
- 全站HTTPS升級系列(一)升級前的科普工作HTTP
- spring升級到3.1.1 hibernate升級到4備忘Spring
- openGauss1.1.0升級到2.0.1(無需root許可權預安裝)
- 升級Shell工作環境
- mongodb單機從3.2升級到4.0.4升級MongoDB
- 【RMAN】改變FRA到新路徑,需要做哪些工作
- 升級JDK時涉及的工作任務JDK
- oracle 10 rac 升級 10.2.0.1升級到10.2.0.5Oracle
- oracle從10.2.0.4升級到11.2.0.1的三種升級方法Oracle
- CentOS升級MySQL到5.5CentOSMySql
- yum升級php到5.3PHP
- oracle 升級到 11.2.0.2Oracle
- MySQL 5.7 升級到 8.0MySql
- Linux環境下CRS升級到10.2.0.4.2 Database升級到10.2.0.4.3LinuxDatabase
- ABP Framework 手動升級指南:從6.0.1升級到7.0.0Framework
- oracle資料庫升級11.2.0.3升級到11.2.0.4Oracle資料庫
- Oracle 12c升級需遵循的簡單步驟NFOracle
- 政府網站為什麼要做IPv6升級改造?網站
- Mac 升級 PHP 到 7.4 版本MacPHP
- ccproject升級到1135Project
- Cocospod 升級到指定版本
- MongoDB升級--從3.4到3.6MongoDB
- centos 升級nginx到1.10.2CentOSNginx
- Windows升級到oracle 11g的異機物理升級文件(冷備)WindowsOracle
- 應用升級SpringCloud版本時的注意事項(Dalston升級到Edgware)SpringGCCloud
- oracle 10.2.0.1 rac 升級到10.2.0.4 rac時,dbua升級的元件列表Oracle元件
- PHP版本升級:從php7.1升級到php7.2PHP
- 9.2.0.4 升級到10.2.0.5升級後 Oracle Ultra Search 元件NO SCRIPTOracle元件
- 升級到iOS 18、降級回iOS 17iOS
- 升級到資料庫到10.2.0.5.0版本資料庫
- 不可不知的 MySQL 升級利器及 5.7 升級到 8.0 的注意事項MySql
- 如何優雅的升級到webpack4Web
- ORACLE EXADATA升級—從11.2.3.1.0到11.2.3.3.0–(9)升級後的檢查Oracle
- Win10專業版系統怎麼升級到工作站版Win10
- 安全專家:微軟需將IE與Windows分開升級微軟Windows
- MySQL 5.6.47升級到5.7.20(一)MySql