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;
}
}
分享到:
相关推荐
1. `@Action`: 这是Struts 2中最核心的注解,用于标记一个方法为处理请求的Action。你可以指定Action的名字、结果页面和其他属性。例如: ```java @Action(value = "myAction", results = { @Result(name = ...
在Struts2中,Action的配置和使用方式有多种,下面将详细介绍Struts2 Action参数的详细说明。 首先,我们来看Action的配置格式。在Struts2的配置文件(通常是struts.xml)中,Action的基本配置结构如下: ```xml ...
<package name="struts2" extends="struts-default" namespace=""> <action name="login_*" class="action.LoginAction" method="{1}"> <result name="isLogin">/login.jsp </action> </package> </struts> ```...
在Struts2中,`package`元素是核心组件,用于组织Action、拦截器等。一个包可以看作是一个模块,其中包含多个Action和拦截器。`package`元素具有以下重要的属性: 1. **name**:这是必填属性,用于为包设置唯一的...
在 Struts2 项目中,需要在 web.xml 和 struts.xml 文件中进行配置。web.xml 文件中,需要配置 Struts2 的过滤器,例如: ``` <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher...
总结来说,Struts2中的文件上传和下载是通过Action类和配置文件协同完成的,它提供了便捷的API来处理文件I/O,并且可以灵活地配置结果类型来满足不同的需求。通过理解这些基础知识,开发者可以轻松地在Struts2项目中...
本篇文章将详细介绍如何在Struts2中去除.action后缀,以及Struts1中隐藏.do扩展名,使URL更加简洁。 首先,让我们来看看Struts2的情况。在Struts2中,默认情况下,所有的请求都会映射到.action结尾的URL上。为了...
在Struts2中,使用通配符优化配置是实现这一目标的有效手段。通配符允许开发者以一种更加灵活的方式定义Action,避免了为每一个Action单独编写配置项的繁琐工作。 首先,我们来理解一下什么是通配符。在Struts2的...
<package name="default" namespace="/" extends="struts-default"> <action name="hello" class="com.example.struts2test.action.HelloWorldAction"> <result name="success">/hello.jsp </action> </package...
这通常通过在`struts-default.xml`或自定义的配置文件中设置`<package>`元素的`namespace`和`action`属性来实现: ```xml <package name="default" namespace="/" action-alias="*"> <default-action-ref name=...
这是Struts2的核心配置文件,用于定义Action、结果页面和拦截器等。 3. **设置Struts2的Filter** - 在Web.xml文件中,我们需要配置Struts2的DispatcherServlet(通常称为StrutsPrepareAndExecuteFilter)。这将...
<package name="default" namespace="/" extends="struts-default"> <action name="hello" class="com.example.HelloWorldAction"> <result name="success">/HelloWorld.jsp </action> </package> </struts> ``...
2. **包(packages)**:用于组织Action和配置相关的组件,如拦截器、结果类型等。 3. **Action配置**:定义Action的基本信息,如执行路径、方法名称、结果配置等。 4. **拦截器(interceptors)**:用于处理预处理...
在Struts2中,需要配置两个主要的过滤器:StrutsPrepareAndExecuteFilter和Struts2的默认配置。 - **StrutsPrepareAndExecuteFilter**:这是Struts2的核心过滤器,负责拦截所有进入应用程序的请求,并处理这些请求...
3. **`struts.xml`**:位于Web应用中,是Struts2的核心配置文件,用于配置Action、拦截器等。 4. **`struts.properties`**:同样位于Web应用中,用于指定一些高级配置项。 5. **`web.xml`**:Web应用的部署描述符,...
<package name="default" namespace="/" extends="struts-default"> <action name="hello" class="com.example.ExampleAction"> <result name="success">/WEB-INF/views/hello.jsp </action> </package> </...
<package name="default" namespace="/" extends="struts-default"> <result-type name="freemarker" class="org.apache.struts2.views.freemarker.FreemarkerResult"/> </package> ``` 这里我们设置了...
在深入理解Struts2配置时,我们首先需要了解其核心组件,包括Action和拦截器(Interceptor)。Action是业务逻辑的载体,而拦截器则是执行特定任务的中间层,比如日志记录、权限验证等。Struts2通过包(package)来...
在Struts 2中,动态方法调用是指通过配置文件指定Action类中的特定方法来响应不同的用户请求。默认情况下,Struts 2框架会查找并调用名为`execute()`的方法。但是,我们可以使用`<action>`元素中的`method`属性来...