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

来源:互联网 发布:matlab2014优化工具箱 编辑:程序博客网 时间:2024/04/29 11:34

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. }  
原创粉丝点击