struts2配置中Action的name 和package的name和namespace作用

struts2配置中Action的name 和package的name和namespace是什麼作用 

 

在struts2 struts.xml 配置中

 

Xml代碼 複製代碼 收藏代碼
  1.     <package name="ajax" extends="json-default" namespace="/json">  
  2.         <action name="ajaxLogin" class="com.rg.email.action.AjaxLoginAction">  
  3.   
  4.             <!-- 返回類型爲json 在sjon-default中定義 -->  
  5.             <result type="json">  
  6. <!--                 root的值對應要返回的值的屬性   
  7.                 這裏的result值即是 對應action中的 result -->  
  8.                 <param name="root">result</param>  
  9.             </result>  
  10.         </action>  
  11.     </package>  
  12.       

 

name="ajax"
namespace="/json"
name="ajaxLogin"
這三個怎麼去理解啊 .

----------------------------
1.package中的name只是一個標識,你可以隨意命名;
2.action中的name對應你頁面中的一個action跳轉,比如你頁面有個表單提交: <form action="struts.xml中action裏的name">
3.namespace是用於區分包中相同的類,如果沒寫,說明該包爲默認空間,如果寫了(如這個例子),那麼就說明包ajax的空間爲/json。

namespace實際上是在包的基礎上對Action的進一步組織和劃分,可以解決Action重名問題,因爲在不同的命名空間中是可以有相同的Action名的,就好比一班有個叫張三的,二班也有個叫張三的,當我們呼叫某個張三時,就得帶上“命名空間”,Action也是如此,例子的ajaxLogin就必須通過 /json/ajaxLogin.action的方式來進行調用。

ajaxLogin那個name就是Action的名字,相當於上個例子的“張三”

包的名字只是作爲其他包引用本包的標記

 

 

Java代碼 複製代碼 收藏代碼
  1. package com.rg.email.action;   
  2.   
  3. import java.util.HashMap;   
  4. import java.util.Map;   
  5.   
  6. import org.apache.struts2.json.annotations.JSON;   
  7.   
  8. import net.sf.json.JSONObject;   
  9.   
  10. import com.opensymphony.xwork2.ActionSupport;   
  11. import com.opensymphony.xwork2.ModelDriven;   
  12. import com.rg.email.action.pojo.LoginPojo;   
  13.   
  14. public class AjaxLoginAction extends ActionSupport implements  
  15.         ModelDriven<LoginPojo> {   
  16.   
  17.     private static final long serialVersionUID = 1L;   
  18.   
  19.     private LoginPojo user = new LoginPojo();   
  20.   
  21.     @Override  
  22.     public LoginPojo getModel() {   
  23.         return user;   
  24.     }   
  25.   
  26.     // 用戶Ajax返回數據   
  27.     private String result;   
  28.   
  29.     @JSON(name = "result")   
  30.     public String getResult() {   
  31.         return result;   
  32.     }   
  33.   
  34.     public void setResult(String result) {   
  35.         this.result = result;   
  36.     }   
  37.   
  38.     @Override  
  39.     public String execute() {   
  40.         System.out.println("AjaxLoginAction-->" + user.getUsername()   
  41.                 + user.getPassword() + user.getVerification_code());   
  42.   
  43.         // 用一個Map做例子   
  44.         Map<String, String> map = new HashMap<String, String>();   
  45.   
  46.         // 爲map添加一條數據,記錄一下頁面傳過來loginName   
  47.         map.put("name", user.getUsername());   
  48.   
  49.         // 將要返回的map對象進行json處理   
  50.         JSONObject jo = JSONObject.fromObject(map);   
  51.   
  52.         // 調用json對象的toString方法轉換爲字符串然後賦值給result   
  53.         this.result = jo.toString();   
  54.   
  55.         // 可以測試一下result   
  56.         System.out.println(this.result);   
  57.   
  58.         return SUCCESS;   
  59.     }   
  60.   
  61. }  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章