struts2配置中Action的name
和package的name和namespace是什麼作用
在struts2 struts.xml 配置中
- <package name="ajax" extends="json-default" namespace="/json">
- <action name="ajaxLogin" class="com.rg.email.action.AjaxLoginAction">
- <!-- 返回類型爲json 在sjon-default中定義 -->
- <result type="json">
- <!-- root的值對應要返回的值的屬性
- 這裏的result值即是 對應action中的 result -->
- <param name="root">result</param>
- </result>
- </action>
- </package>
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的名字,相當於上個例子的“張三”
包的名字只是作爲其他包引用本包的標記
- package com.rg.email.action;
- import java.util.HashMap;
- import java.util.Map;
- import org.apache.struts2.json.annotations.JSON;
- import net.sf.json.JSONObject;
- import com.opensymphony.xwork2.ActionSupport;
- import com.opensymphony.xwork2.ModelDriven;
- import com.rg.email.action.pojo.LoginPojo;
- public class AjaxLoginAction extends ActionSupport implements
- ModelDriven<LoginPojo> {
- private static final long serialVersionUID = 1L;
- private LoginPojo user = new LoginPojo();
- @Override
- public LoginPojo getModel() {
- return user;
- }
- // 用戶Ajax返回數據
- private String result;
- @JSON(name = "result")
- public String getResult() {
- return result;
- }
- public void setResult(String result) {
- this.result = result;
- }
- @Override
- public String execute() {
- System.out.println("AjaxLoginAction-->" + user.getUsername()
- + user.getPassword() + user.getVerification_code());
- // 用一個Map做例子
- Map<String, String> map = new HashMap<String, String>();
- // 爲map添加一條數據,記錄一下頁面傳過來loginName
- map.put("name", user.getUsername());
- // 將要返回的map對象進行json處理
- JSONObject jo = JSONObject.fromObject(map);
- // 調用json對象的toString方法轉換爲字符串然後賦值給result
- this.result = jo.toString();
- // 可以測試一下result
- System.out.println(this.result);
- return SUCCESS;
- }
- }