Struts2.0默認的平臺需求是:
但是因為一些原因,我們必須使用JDK1.4來編譯,所以只能應用Struts提供的J4,來進行一下移植了,說實話,還是挺好的,只需要簡單的操作,便可以把JDK更改為1.4的了.原本我以為弄不好還得重新寫代碼呢,結果才發現,嗯,如此的簡單.
好了,不廢話了.
要想應用JDK1.4,使用的主要的是Struts2.0的發行包里提供的J4目錄中的Retrotranslator.利用它可以將原JDK5的包轉化成JDK1.4的.關于Retrotranstator的介紹,可以查看http://retrotranslator.sourceforge.net/,里面寫的很詳細.
在J4目錄中,已經將Struts2.0基本的兩個Jar文件轉好了,分別是struts2-core-j4-2.0.9.jar和xwork-j4-2.0.4.jar.如果你的程序中還用到的其他的Jar包,可以通過腳本把Jar包轉成J4版本的.我們的程序中用到了spring和sitemesh兩個Plugin的Jar包,所以需要將這兩個包轉成J4的.
java -jar retrotranslator-transformer-1.2.2.jar -advanced -srcjar ../lib/struts2-sitemesh-plugin-2.0.9.jar -destjar struts2-sitemesh-plugin-j4-2.0.9.jar
java -jar retrotranslator-transformer-1.2.2.jar -advanced -srcjar ../lib/struts2-spring-plugin-2.0.9.jar -destjar struts2-spring-plugin-j4-2.0.9.jar
可以將它們寫到一個Bat文件中,如果你用的是Windows的系統的話,使用Linux的用戶可以存成sh文件.
執行Bat文件,將生成兩個新的J4版本的包,struts2-sitemesh-plugin-j4-2.0.9.jar和struts2-spring-plugin-j4-2.0.9.jar.
將這四個Jar包放到WEB-INF/lib中,再將J4目錄中的retrotranslator-transformer-1.2.2.jar, backport-util-concurrent-3.0.jar和retrotranslator-runtime-1.2.2.jar一起放到WEB-INF/lib下.
之后再把自己寫的程序中所使用的JDK5的特性去掉,嗯,我們只用了Annotations等幾個特性,所以改起來還是相當容易了.
至此,你的程序應該就可以在JDK1.4上運行了.
我使用的環境Tomcat5.0+jdk1.4.運行我修改后的程序,測試通過......
Over
PS:程序開發到后期,才告知運行環境有變,真的很讓人郁悶啊
問題是這樣的:
上傳文件,需要限制上傳文件的大小,這個可以在配置Action的interceptor來解決,只需設置一下maximumSize的值就可以了,我這里設置的是1048576(1M).
如果我現在上傳一個大小為1.5M的文件,會報文件尺寸過大的錯誤,這個錯誤的顯示信息可以通過在全局的國際資源文件中配置:struts.messages.error.file.too.large.這時沒有什么問題.
但只時我上傳一個大小為5M的文件,就會報一個
這里是因為Struts2.0默認的上傳文件的大小是2M.如果上傳超過這個大小的就會報錯.可以通過在struts.xml中修改默認的上傳文件大小:<constant name="struts.multipart.maxSize" value="5242880" />,我在這里設置成了5M,允許上傳5M的文件.
如果用戶上傳的文件,超過了在Action中Iterceptor中的大小,而小于Struts.xml文件中設置的大小,一切正常;一旦上傳的文件超過了Struts.xml文件中設置的大小,問題就出現了,雖然也能正常的返回上傳頁,但數據丟失......這個受不了啊
哪位高人也遇到過這種問題,并且解決了,不妨告訴小弟一下,^_^,小弟這里先謝謝了....
PS:暫時將Struts.xml中設置了1G,如果用戶要上傳再大的文件,那也沒辦法了,抓緊時間搞定它....唉.
這個插件是:s2ss(Struts 2 Scripting Support), 地址:http://code.google.com/p/s2ss/
下載地址:http://s2ss.googlecode.com/files/struts2-groovy-plugin-0.2.jar
將這個Jar包放到WEB-INF/lib下,之后修改struts.properties,添加一行:
struts.objectFactory=groovyObjectFactory
也可以修改struts.xml,添加下面一行:
<constant name="struts.objectFactory" value="groovyObjectFactory" />
個人習慣使用后面一種.
再將Groovy的包放到WEB-INF/lib下,我用的是groovy-all-1.0.jar.
這個插件所依賴的包有:
在struts.xml中配置Action,與正常的配置差不多,只不過class里用的是Groovy的類,而且需要加上Groovy的擴展名,如下:
<action name="groovy" class="com.puras.groovy.TestAction.groovy">
<result>/WEB-INF/pages/groovy/test_action.jsp</result>
</action>
攔截器與Action相似,
..
<interceptor name="groovyInterceptor" class="com.puras.groovy.Interceptor.groovy" />
..
<interceptor-ref name="groovyInterceptor" />
這里就只演示Action的了.呵
下面來編寫TestAction.groovy:
package com.puras.groovy;
class TestAction {
def message;
def execute() {
message = "Hello world"
return "success"
}
def getMessage() {
return message
}
}
不用進行編譯,直接將.groovy文件復制到WEB-INF/classes/com/puras/groovy/下就可以了.
類之間的調用等,與使用Java相同.
最后再編寫一下用于顯示的test_action.jsp就OK啦.代碼如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> 現在,啟動你的WEB服務器,之后打開瀏覽器,輸入地址:http://localhost:8080/your_webapp/groovy.action,就可以看到效果了. 下一步目標:
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" ">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<s:property value="message"/>
<br />
<hr />
</body>
</html>