搜档网
当前位置:搜档网 › struts2的Action参数详细说明

struts2的Action参数详细说明

struts2的Action参数详细说明
struts2的Action参数详细说明

Struts2 Action参数详细说明

1,Action的配置格式基本为:

该结果名称所对应的JSP页面

如:

/test/msg.jsp

访问时:

访问myaaAction

2,method属性,该属性可以把一个类的多个方法映射为多个Action,如:

类文件

public class MethodAction extends ActionSupport

{

public String add()

{

return SUCCESS;

}

public String delete()

{

return SUCCESS;

}

public String modify()

{

return SUCCESS;

}

public String query()

{

return SUCCESS;

}

}

struts.xml配置文件:

结果页面

/method/addRes.jsp

/method/deleteRes.jsp

/method/modifyRes.jsp

/method/queryRes.jsp

页面:

增加

删除

修改

查询

3。动态调用方法DMI 如果是动态调用,那么就不必要象上面那样填写那么多的配置,可以直接在页面上指定调用的方法。如下:

1)类与以上配置一样

2)struts.xml配置为:

/method/Res.jsp

3)页面:

增加DMI

删除DMI

修改DMI

查询DMI

以上一般选择用2比较多,动态的调用方法调用的比较少,因为每个方法中可能调用的拦截器和过滤器可能不一样,所以,一般选用2。

4。forward跳转,如果在result中不加上type="redirect" ,那么就是forward的服务器跳转,加上后就是客户端的跳转如:struts配置

index.jsp

在页面中调用的时候,这么写:

返回首页

5。错误提示,当访问不存在的action 的时候,会报错,那么就应该到struts.xml中加上一个默认错误ACTION。如:

/error.jsp

错误的,不存在的页面,那么就在web.xml中加如下配置:

404

/error.jsp

可能页面错误哪个找不到,那么就要到在IE【工具】->【Internet选项】->【高级】中勾掉【显示友好http错误提示】;

----------------------------------------------------------------------------------------------------------------------

struts2中常用Result类型的用法

关键字: struts2

一、dispatcher

(1)为缺省的result类型,一般情况下我们在struts.xml会这么写:

/main.jsp

以上写法使用了两个默认,其完整的写法为:

?

?/maini.jsp

?

第一个默认:type="dispatcher";第二个默认:设置的为location参数,location只能是页面,不能是另一个action(可用type="chain"解决)。

(2)实现方式

从doExecute方法看出,有三个出口(finalLocation为要跳转的地址):pageContext.include(finalLocation);

dispatcher.forward(request, response); (dispatcher是根据finalLocation创建的) dispatcher.include(request, response);

而我们知道,forward与include都是转发到context内部的资源。

二、redirect

(1)可以重定向到一个页面,另一个action或一个网址。

?aaa.jsp

?bbb.action

?https://www.sodocs.net/doc/e95653042.html,

(2)实现方式:

查看doExecute方法,只有一个出口:

response.sendRedirect(finalLocation);

sendRedirect是重定向,是重新产生一个HTTP请求到服务器,故重定向后其原来所在的action上下文就不可用了。

三、chain

(1)主要用于把相关的几个action连接起来,共同完成一个功能。

?

?step2.action

?

?

?

?finish.jsp

?

(2)实现方式:

查看execute()方法,主要思想如下:

// 根据Action名称finalActionName及要调用的方法finalMethodName来new一个代理对象proxy,并执行之

?proxy = actionProxyFactory.createActionProxy(finalNamespace,

?finalActionName, finalMethodName, extraContext);

?proxy.execute();

(3)多个action间数据的传递

主要有两种方式:

1。由于处于chain中的action属于同一个http请求,共享一个ActionContext,故可以在上下文中获取,在页面上可以直接使用。手动获取的方法如下:

?HttpServletRequest request = ServletActionContext.getRequest();

?String s=(String)request.getAttribute("propName");

2。实现ModelDriven接口

在Step1Action中,加入getModel:

?public Object getModel() {

?return message;

?}

在Step2Action中,加入setModel:

?public void setModel(Object o){

?System.out.println("message is:"+o);

?}

注意,setModel的调用先于execute()方法后于构造方法。

相关主题