xworkcore源碼
『壹』 struts2 如何升級
我前幾天剛做的2.3.1.2升級到2.3.15.1GA
如果你的應用沒有修改過struts2的源碼,那升級很簡單
增加3個jar
struts2一個,xwork一個,把原版本的替換掉,另外增加一個common-lang3的包
其他什麼都不用動。
web.xml struts.xml沒有變化,只是15版本里增加了一些debug信息,如果你不想看,就把struts.xml里devmode改成false
『貳』 在Eclipse中如何關聯源代碼
可在隨便一個類中寫上ActionSupport,先按下Ctrl鍵,再將游標移到要查看的類(ActionSupport)上並點擊,此時會跳到如下界面:
點擊Attach Source…(黏貼源碼),會彈出如下對話框,並在對話框中選中External location(外部位置):
這里我要導入的是xwork-core-2.3.24.jar的源碼,因為ActionSupport這個類就在這個Jar包中。我們以普通文件夾的方式打開xwork-core-2.3.24.jar的源碼。
點擊OK即可。
『叄』 如何將 struts2 官方 例子導入Myeclipse
Unable to load。。。說明你的項目沒有發布好,你把那些替換後,在沒有錯誤的情況下,重新發布一遍。報的錯就是在tomcat的WEB-INF/下不能載入那些jar包,如果你的jar包對著,你就重新發布你的項目,要不然就是你的jar看對不對
『肆』 struts2.3.4.1 xwork-core為什麼關聯不上源碼
也是相對應的。那就是xwork-core-2.3.4.jar 你難道沒從官網上下載?xwork的jar包都在Struts里了,xwork也沒有了,只有Struts2
『伍』 jquery.post("url",{},function(data),'json');裡面的data如何用java操作
1、引入包(本文中的包全部引自struts-2.1.8.1\lib):
struts2-json-plugin-2.1.8.1.jar
json-lib-2.1.jar
commons-collections-3.2.jar
commons-beanutils-1.7.0.jar
commons-lang-2.3.jar
commons-logging-1.0.4.jar
ezmorph-1.0.3.jar
這7個包是返回json形式的數據必須的。因為json大量引用了Apache commons的包,所以要加入4個,commons包,除了commons的包外,還需要引入一個 ezmorph的包。最後加入struts2必須的6個包:
struts2-core-2.1.8.1.jar
xwork-core-2.1.6.jar
ognl-2.7.3.jar
freemarker-2.3.15.jar
commons-fileupload-1.2.1.jar
commons-io-1.3.2.jar
2、後台:
1) Userinfo實體類代碼
public class UserInfo implements Serializable {
private int userId;
private String userName;
private String password;
get set方法略
}
2) Action類
public class TestAction extends ActionSupport {
private String message; //使用json返回單個值
private UserInfo userInfo; //使用json返回對象
private List userInfosList; //使用josn返回List對象
get set方法略
/*返回單個值*/
public String returnMsg(){
this.message = "成功返回單個值";
return SUCCESS;
}
/*返回UserInfo對象*/
public String returnUser(){
userInfo = new UserInfo();
userInfo.setUserId(10000);
userInfo.setUserName("劉棟");
userInfo.setPassword("123456");
return SUCCESS;
}
/*返回List對象*/
public String returnList(){
userInfosList = new ArrayList<UserInfo>();
UserInfo u1 = new UserInfo();
u1.setUserId(10000);
u1.setUserName("張三");
u1.setPassword("111111");
UserInfo u2 = new UserInfo();
u2.setUserId(10001);
u2.setUserName("李四");
u2.setPassword("222222");
userInfosList.add(u1);
userInfosList.add(u2);
return SUCCESS;
}
}
3) struts.xml(必須繼承json-default、json-default繼承自struts-default)
<package name="default" namespace="/json" extends="json-default">
<action name="returnMsg" class="com.testAction " method="returnMsg">
<result name="success" type="json">
<param name="root">validate</param>
</result>
</action>
<action name="returnUser "
class="com.testAction " method="returnUser ">
<result name="success" type="json">
<param name="includeProperties">
userInfo\.userId,userInfo\.userName,userInfo\.password
</param>
</result>
</action>
<action name="returnList" class="com.testAction "
method="returnList">
<result name="success" type="json">
<param name="includeProperties">
userInfosList\[\d+\]\.userName,userInfosList\[\d+\]\.password
</param>
</result>
</action>
</package>
3、前台:
1) 頁面引入jquery-1.4.2.js
2) 代碼如下:
<script language="javascript">
function getMsg(){
$.ajax({
url:'json/returnMsg.action',
type:'post',
dataType:'json',
success:function(data){
$("#result").html(data.message);
}
});
}
function getUser(){
$("# result ").html("");
$.ajax({
url:'json/returnUser.action',
type:'post',
dataType:'json',
success:function(data){
$("#result").append("用戶ID:"+data.userInfo.userId+"")
.append("用戶名:"+data.userInfo.userName+"")
.append("密碼:"+data.userInfo.password+"");
}
});
}
function getUserList(){
$("# result ").html("");
$.ajax({
url:'json/returnList.action',
type:'post',
dataType:'json',
success:function(data){
$.each(data.userInfosList,function(i,value){
$("#result").append("第"+(i+1)+"個用戶")
.append("用戶名:"+value.userName+"")
.append("密碼:"+value.password+"");
}
}
});
}
</script>
<div id="result"></div>
<input type="button" value="獲得單個消息" onclick="getMsg()"/>
<input type="button" value="獲得用戶信息" onclick="getUser()"/>
<input type="button" value="獲得用戶列表" onclick="getUserList()"/>
4、只要繼承extends="json-default",result type設置成json之後,容器會把action的屬性自動封裝到一個json對象中(json攔截器來做),然後調用ajax的callback方法. 返回json數據
5、includeProperties 參數:輸出結果中需要包含的屬性值,這里正則表達式和屬性名匹配,可以用「,」分割填充多個正則表達式。
如:輸出UserInfo的所有屬性及UserInfo的userName屬性
<result type="json">
<param name="includeProperties"> userInfo.*,
userInfo \. userName </param>
</result>
6、excludeProperties 參數:輸出結果需要剔除的屬性值,也支持正則表達式匹配屬性名,可以用「,」分割填充多個正則表達式,類同includeProperties
7、輸出一個JSON List列表
<result name="success" type="json">
<param name="includeProperties">
userInfosList\[\d+\]\.userName,userInfosList\[\d+\]\.password
</param>
</result>
其中userInfosList是action中的一個List類型的屬性,userInfosList \[\d+\]\. userName表示,userInfosList中存儲的對象0..end的userName屬性(list中存儲的對象必須有userName屬性)。
8、為什麼要用includeProperties或excludeProperties 參數:主要是為了過濾掉介面,pojo的set、list、其它對象等不需要的數據防止循環取其它關聯對象或找不到介面。如果不配置,默認是處理 action中的所有屬性,如果action中有介面注入,json攔截器可能找不到介面而返回不了結果,還有如果action中有一個對象,這個對象與好多對象都有關聯,json攔截器會將相關聯的所有對象的屬性全部轉換成json格式,如果其它對象有list、set,其返回結果相當龐大,有可能是死循環而無法返回 。如果不用<param name="includeProperties">或其他方式進行json數據過濾,通過debug你會發現前台返回的json字元串,是把 action中的所有屬性全部轉化成json字元串返回給客戶端(包括service介面、pojo所有屬性及有關聯的pojo。有時候根本返回不了結果,也不報錯,後台執行了,但前台執行不到callback function,這主要是因為找不到介面或者關聯的pojo太多,造成死循環),一般情況下用的最多的就是root、 includeProperties 和excludeNullProperties參數。當然還有其他的方法,如給pojo的屬性加json註解。
9、總結: action中避免使用get開頭的action方法,去掉action中的介面的get方法 為json類型的result配置includeProperties, excludeProperties等參數.
『陸』 Map request=(Map)ActionContext.getContext().get("request");
我也正好在看這個,把我剛理解的給你說下吧,不一定對。
Map request=(Map)ActionContext.getContext().get("request");
Map request // 聲明一個名字為request的Map對象(這個名字不是request也可以)
然後對request進行實例化,但是因為 ActionContext.getContext().get("request");不是Map類型的
所以前面需要加「(Map)」進行強制轉換。
「ActionContext」是「xwork-core-2.2.3.jar」(反正就是Xwork了 也許咱們的版本不一樣,有興趣的話你可以去了解一下Xwork)下面的「com.opensymphony.xwork2.ActionContext;」包,
後面的.getContext().get("request");就都是ActionContext裡面的方法(函數)了。
注意的是,「get("request");」括弧裡面的request不能變,這個request不是你前面聲明的request對象,具體了解可以去上面說的包下面看源碼,
本來想給你大概說下ActionContext的,但是我這代碼關聯不上,你自己去看吧。
據體用法的話,既然已經有request這個對象了,比如你可以在JSP頁面中加
<%= request.getAttribute("list") %>看看效果。
或者假如你要希望資料庫寫數據,要用到」list「那麼可以調用這個action中的這個reuest,
例如 Map m = action.request;
最後,就像J2SE中的Main()方法一樣,這都是固定的,記住就可以了。至於用法那就多種多樣,光說具體用法那就說死了,但事實是很靈活的東西,看需求吧。
兩年後再補充一點吧,ActionContext對象裡面封裝了Action用到的一些數據。另外struts2把我們的request對象做了一些修改,重新封裝成它自己需要的並放在了ActionContext對象中。
『柒』 java的擴展jar包有哪些
jar包 用途
axis.jar SOAP引擎包
commons-discovery-0.2.jar 用來發現、查找和實現可插入式介面,提供一些一般類實例化、單件的生命周期管理的常用方法.
jaxrpc.jar Axis運行所需要的組件包
saaj.jar 創建到端點的點到點連接的方法、創建並處理SOAP消息和附件的方法,以及接收和處理SOAP錯誤的方法.
wsdl4j-1.5.1.jar Axis運行所需要的組件包
activation.jar JAF框架的jar包
annotations-api.jar 使用註解所需jar
ant.jar 用於自動化調用程序完成項目的編譯,打包,測試等
aopalliance-1.0.jar 支持Spring AOP
asm-2.2.3.jar ASM位元組碼庫
asm-commons-2.2.3.jar ASM位元組碼庫
asm-util-2.2.3.jar Java位元組碼操縱和分析框架
aspectjrt.jar 處理事務和AOP所需的包
aspectjweaver.jar 處理事務和AOP所需的包
axiom-api-1.2.7.jar Axis 對象模型
axiom-impl-1.2.7.jar Axis 對象模型
bcprov-jdk15-140.jar 基於java1.5 的加密演算法實現
bfmclientmodel.jar 使用WebSphere所需jar包
bpcclientcore.jar 使用WebSphere所需jar包
bpe137650.jar 提供遠程訪問BPE容器的實現。
bsh-2.0b4.jar 解決負載邏輯運算
c3p0-0.9.0.jar 開放源代碼的JDBC連接池
cglib-nodep-2.1_3.jar Spring中自動代理所需jar包
cobertura.jar 測量測試覆蓋率
commons-beanutils-1.7.0.jar 動態的獲取/設值Java Bean的屬性
commons-chain-1.1.jar 實現責任鏈設計模式的Java 類庫
commons-codec-1.3.jar 用來處理常用的編碼方法的工具類包,例如DES、SHA1、MD5、Base64等等
commons-collections-3.1.jar 對標准java Collection的擴展
commons-collections.jar 對標准java Collection的擴展
commons-digester-1.8.jar 用於處理struts-config.xml配置文件
commons-fileupload-1.1.1.jar struts上傳文件
commons-httpclient-3.1.jar 用來簡化HTTP客戶端與伺服器端進行各種通信編程實現
commons-io-1.1.jar 針對java.io.InputStream和Reader進行了擴展
commons-lang-2.4.jar 對java.lang.*的擴展
commons-logging-1.1.1.jar 日誌包
commons-pool-1.3.jar 實現對象池化框架
commons-validator-1.3.1.jar 用來把驗證規則程序提取出來,以供重復使用
db2jcc.jar java連接DB2所需jar
db2jcc_license_cu.jar java連接DB2所需jar
dom4j-1.6.1.jar 解析XML
ehcache-1.2.4.jar hibernate的二級緩存如果用ehcache的時候需要此jar包
emf.jar 基於Eclipse的模型框架
ezmorph-1.0.6.jar 使用JSON所需的jar包
FastInfoset-1.2.2.jar 使用WebService所需的jar包
freemarker-2.3.8.jar Strus2支持的一種表現層框架
geronimo-activation_1.1_spec-1.0.2.jar Apache Geronimo所帶jar包,
geronimo-annotation_1.0_spec-1.1.1.jar Apache Geronimo所帶jar包
geronimo-javamail_1.4_spec-1.3.jar Apache Geronimo所帶jar包
geronimo-jaxws_2.1_spec-1.0.jar Apache Geronimo所帶jar包
geronimo-jms_1.1_spec-1.1.1.jar Apache Geronimo所帶jar包
geronimo-servlet_2.5_spec-1.2.jar Apache Geronimo所帶jar包
geronimo-stax-api_1.0_spec-1.0.1.jar Apache Geronimo所帶jar包
hibernate3.jar Hibernate3的核心jar包
htmclientmodel.jar 使用WebSphere所需jar包
jakarta-oro.jar 一套文本處理工具,提供per15.0兼容的表達式,AWK-like表達式,Glob表達式。
javassist.jar Javassist 位元組碼解釋器
jaxb-api-2.1.jar 使用WebService所需的jar包
jaxb-impl-2.1.7.jar 使用CXF所需jar包
jaxb-xjc-2.1.7.jar 使用CXF所需jar包
jaxen-1.1.1.jar 解析XML
jcifs-1.2.22.jar 實現單點登陸
jdom2-1.0.jar 解析XML
jdom-1.0.jar 解析XML
jettison-1.0.1.jar 使用CXF所需jar包
jetty-6.1.9.jar Jetty Http伺服器jar
jetty-util-6.1.9.jar Jetty Http伺服器jar
jra-1.0-alpha-4.jar 使用CXF所需jar包
js-1.6R7.jar 使用CXF所需jar包
json-lib-2.2.3-jdk13.jar 使用JSON所需的jar包
jsonplugin-0.25.jar strus2的JSON插件
jsr311-api-0.8.jar 使用CXF所需jar包
jstl.jar JSTL標簽庫
jta.jar 標準的 JAVA 事務處理介面
junit.jar 用於單元測試
jxl.jar 通過java操作excel表格的工具類庫
ldap.jar JNDI目錄服務和LDAO伺服器所需的jar
ldapbp.jar JNDI目錄服務和LDAO伺服器所需的jar
log4j-1.2.15.jar 提供日誌功能
mail.jar java發送郵件jar包
neethi-2.0.4.jar 使用CXF所需jar包
odmg-3.0.jar ODMG是一個ORM的規范,Hibernate實現了ODMG規范,這是一個核心的庫
ognl-2.6.11.jar struts2中OGNL語言
ojdbc14.jar Oracle資料庫驅動包
opensaml-1.1.jar 使用CXF所需jar包
oro-2.0.8.jar Validator框架所需的jar包
oscache-2.1.jar Java 對象的緩存工具
poi-3.1-FINAL-20080629.jar 操作exce所需jar包
poi-contrib-3.1-FINAL-20080629.jar 操作exce所需jar包
poi-ooxml-3.6-20091214.jar 提供對office的word、excel、visio及ppt的操作
poi-ooxml-schemas-3.6-20091214.jar 提供對office的word、excel、visio及ppt的操作
poi-scratchpad-3.1-FINAL-20080629.jar 提供對office的word、excel、visio及ppt的操作
processCommon.jar IBM WebSphere 運行所需jar
ProcessCommonLibrary.jar IBM WebSphere 運行所需jar
processIdentity.jar IBM WebSphere 運行所需jar
ProcessInformation.jar 進程監視軟體包
proxool-0.9.1.jar 資料庫連接池
proxool-cglib.jar 資料庫連接池
quartz-1.6.0.jar 開源作業調度框架
saaj-api-1.3.jar 使用axis所需的jar
saaj-impl-1.3.2.jar 使用axis所需的jar
serializer-2.7.1.jar XML序列化
slf4j-jdk14-1.5.6.jar 整合各種日誌框架的工具
spring208.jar spring核心框架
spring-ldap-1.2-RC1.jar spring下LDAP
spring-mock.jar spring的測試框架
standard.jar 使用JSTL標簽庫所需的jar
stax-api-1.0.1.jar 解析XML
struts2-core-2.0.14.jar struts2核心jar
struts2-spring-plugin-2.0.6.jar struts2整合Spring所需jar
taglibs-datetime.jar Apache開源組織提供標簽庫,用於格式化日期。
taglibs-mailer.jar 用於發送郵件
taglibs-string.jar Apache開源組織提供標簽庫,用於對String的操作。
task137650.jar Portal技術在SOA系統集成應用中實現所需的jar
utility.jar Apache開源組織提供標簽庫
velocity-1.5.jar 一個免費的開源模板框架
wsdl4j-1.6.2.jar 用來解析服務的WSDl文件
wss4j-1.5.4.jar 創建CXF所需jar
wstx-asl-3.2.6.jar 創建CXF所需jar
xbean-spring-2.8.jar 使用xfire所需jar
xerces-2.6.2.jar XML解析器
xfire-all-1.2.6.jar 用於實現WebService
XmlSchema-1.1.jar 使用xfire所需jar
xwork-2.0.7.jar WebWork核心jar
這只是一部分,還有很多。
『捌』 eclipse 單擊某個 類-右鍵- 查看聲明() Open Declaration 只能看到一些綠色的字。怎麼辦我想看源代碼
你可以在頁面上按住Ctrl鍵,然後把滑鼠移到那個類名上,會出來超鏈接的,再點進去就行了
那就說明你的jdk裝的時候沒有把原代碼放進去。你看下jdk目錄下的src目錄裡面有沒有
『玖』 struts2問題 /lib/struts2-core-2.0.14.jar!/struts-default.xml:30:72
重新 安裝一下tomcat 看了一下你的源代碼,results 標簽里是name屬性不是type屬性
action中要提供對應的getter setter方法才可以自動填充屬性。
導致那個異常的原因還是tomcat的問題 用我的綠色版就ok了