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

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

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;
	}

}