struts2 action 配置方法 &&struts2的配置文件

struts2 action 配置方法 &&struts2的配置文件

 struts2 action几乎完全吸收了xwork 的精华,近日学习struts 2,总结一下action的配制方法。首先看一下com.opensymphony.xwork2.Action的接口声明,Action提供execute() 方法,子类必须实现execute() 方法。

  public interface Action {
    public String execute() throws Exception;
}

com.opensymphony.xwork2.ActionSupport是com.opensymphony.xwork2.Action的缺省实现,实现了execute()方法。我们开发的Action通常继承com.opensymphony.xwork2.ActionSupport

1.简单的action配置

 
  Menu
  /tutorial/Logon.jsp

   前台发送调用logon.action的请求,截听器调用默认的execute()方法

2.在开发中通常将多个方法写在一个action中,对于这样action可以采用集中配置方式
2.1.一个方法一个action配制

 


2.2通配符方式
2.2.1 *

 

  method="{1}"表示,第一个通配符是方法.

  action调用的例子:addCrud.action, deleteCrud.action, updateCrud.action, viewCrud.action


2.2.2 分割符加上*,分割符如:下划线_, 惊叹号!

 

   调用方式:crud_add.action, crud_delete.action

 

      调用方式:crud!add.action, crud!delete.action


2.3 url pattern: /{model}/{method}.action
“/User/add.action” 调用User的add方法

 

class=”com.infoq.actions.{1}Action”>
/{1}/view.action
/{1}/view.jsp
/{1}/edit.jsp
/{1}/home.jsp

 
http://blog.csdn.net/lianghyan/archive/2007/08/22/1754637.aspx

=========================================================

 

struts2的配置文件

struts2相关的配置文件有web.xml(必须的),struts.xml(必须的),struts.properties,struts-default.xml,velocity.properties,struts-default.vm。

web.xml: 包含所有必须的框架组件的web部署描述符;

struts.xml:配置包含result/view类型、action映射、拦截器等的struts2的主要配置文件。

struts.properties: 配置struts2的框架属性;

struts.properties 配置文件(此文件放在/WEB-INF/classes/)

此文件包含了一系列的key-value对象,每个key就是一个struts2的属性,value就是一个struts2的属性值。

此配置文件提供了一种改变框架默认行为的机制。其所包含的所有属性都可以在web.xml配置文件中使用"ini-param"标签进行配置,或者在struts.xml文件中使用"constant"标签进行配置。

****************************

struts.xml常用配置使用方法**

****************************

1、标签重用配置文件

如果package,action,interceptor等配置较多时,都放到一个struts.xml中比较不容易维护。

所以需要将struts.xml文件分成多个配置文件,然后在struts.xml文件中使用标签引用这些配置文件。结构清晰,配置文件复用。

例子:

   

   ...

..

2、action配置

默认情况下,struts2会调用动作类的execute方法,但有时,好几个请求动作对应一个action类中不同的方法。

这种情况下,可以在标签中通过method方法指定要执行的动作类的方法名,并且需要为不同的动作起不同的名字(也叫别名,即name值)。

   ......

   ......

  上面2个动作的class属性都指向同一个类,name为他起了2个动作别名,my1和my2.

在每个动作里又指定了要运行的方法名。

下来在action类里一定要有这1个方法print。

package ction2.method

public class Myaction extends ActionSupport{

  public String execute() throws Exception{

    ........这是一般的方法,配合第一个action

          }

  public String print() throws Exception{

    ....... 这是第2个action的方法

   }

}

除了 在struts.xml中配置别名外,还可以不用修改struts.xml而直接用请求参数来描述指定动作,格式如下:

http://localhost:8080/contextPath/actionName!method.action

通过请求指定动作的详细内容:   actionName!method.action

如这个,后面可以这样写:/my2!print.action 即可访问之。

3、请求参数设置

zhengsha

26

/result.jsp

4、action类中定义相应的setter方法读取此参数,一般不用设置getter方法

public class Myaction extends ActionSupport

{

private String name;

private String age;

public void setName(String name)

{

this.name= name;

}

public void setAge(String age)

{

this.age= age;

}

public String execute() throws Exception

{System.out.println("name is"+name+";age is"+age);}

}

5、result 配置

默认状态下,标签的type属性是"dispatcher",即转发。

如果result的type属性没有定义,struts2会自动将其定义为success。

用户也可以自己设置

/result.jsp

如有一个result被多个使用,这时可以使用标签来定义全局的,代码如下:

/result.jsp

 如果action里没有相应的result,那struts2就会使用全局的

6、拦截器配置

struts2拦截器如同servlet里的过滤器,struts2执行action的execute()方法前先执行在struts.xml中配置的拦截器,执行完所有的intercepor方法后,会执行execute方法。

注意:在action里面最后必须一定要引用struts2自带的拦截器缺省堆栈defaltStack,否则出错。

如:

(必须加,否则出错!)

7、package配置

package 可以将逻辑上相关的一组action,result,interceptor等组件分为一组。

package 属性有:

name(必须的)       package的表示,为了让其他的package引用

extends(可选的)  从哪个package继承的

namespace(可选的)  下面讲

abstract(可选的)  定义这个package为抽象的,这个package中不需要定义action

namespace 讲解

"/" 表示根namespace,所有直接在应用程序上下文环境下的请求(Context)都在这个package下查找。

""表示默认的namespace。当所有的namespace中都找不到的时候,就在这里找。

例如:

...

...

...

a、 如果请求为 /barspace/bar.action ,则查找 “/barspace”,如果找到"bar",则执行相应的    action;如果没找到,就执行默认的namespace。

b、     如果请求为“/no.action”则namespace(“/”)被查找,找到了则执行对应的action,否则执行默认的namespace。

8、action配置

result默认的name为success.

action中的方法通配符

例子:

editcurd action 将调用edit方法,

deletecurd action将调用delete方法。

默认的action

当没有指定action的class属性的时候,默认使用com.opensymphiony.xwork.ActionSupport。

ActionSupport下有2个方法,input 和 execute,每个方法都是简单的返回success。

当请求的action不存在的时候,struts2会返回404错误页面,但我们也可以定义自己的默认页面,使用如下方法:

/error.jsp

/{1}.jsp

//每个action将会被映射到以自己名字 命名的 jsp上。

你可能感兴趣的:(SSH)