1 struts.xml位置必须在项目的src下,名称也不能变化。
2 配置文件中主要由三个标签:package,action,result
3 package 标签:类似于代码中的包,以区别不同的action ,配置action 必须先写package ,一个package下面可以写多个action标签。
name 属性:此属性与功能本身没有关系,package之间name属性值不能重复
extends = “struts-default” 属性是固定的,只有写了之歌属性之后,才可以在package标签的下面写action 标签
namespace = “/” 属性:namespace属性与action中name属性组成访问路径。
4 action 标签:主要属性name,class,method
(1)name属性:在package下面可以写多个action标签,但是action标签中的name属性是不能重复的
(2)class :方法所在类的全路径:包名+类名称(不加后缀名的名称)
(3)method :比如在action里默认执行的方法是execute,但是在action配置中想执行其他方法,使用method进行配置
5 result 标签:根据action 的方法返回值,配置不同的路径(此标签不一定都存在)如果执行的结果后不需要访问别的路径则不需要配置这个标签
name 属性:必须和方法返回值一样
type 属性:配置到别的路径的方法(是转发还是重新定向,如果不配置,默认是转发)
访问action方法:
(1)在action标签中method属性写入执行方法的名称:
例如:package com.grl;
public class helloAcion {
public String execute()
{
return "OK";
}
public String add()
{
System.out.println("add.......");
return "add";
}
public String update()
{
System.out.println("update.....");
return "update";
}
}
要访问add,update方法配置如下:
<struts>
<package name="hellodeno" extends="struts-default" namespace="/">
<action name="hello" class = "com.grl.helloAcion" method = "add">
<action name="hello" class = "com.grl.helloAcion" method = "update">
</action>
</package>
</struts>
这种方式的缺点是:当方法比较多,需要为每一个方法配置一个action ,这样会太繁琐。所以一般经常使用通配符的方法来进行配置。
(2)使用通配符:
如上的两个方法add和update 用通配符配置如下所示:
<struts>
<package name="hellodeno" extends="struts-default" namespace="/">
<action name="book_*" class = "com.grl.helloAcion" method = "{1}">
</action>
</package>
</struts>
{1} 代表第一个*号匹配的内容
分模块开发:
每个开发者写自己的xm配置文件,在将配置文件引入到struts核心文件中去。引入文件
<include file = " com/grl/helloAcion /hello.xml" ></include> file 路径最开始一定不能带/。如果子配置文件跟struts位置相同,则直接写配置文件的名称即可。
action 编写的三种方法
(1)创建普通类,不继承任何类,任何接口
(2)创建类,实现接口Action,重写execute方法
(3)创建类,继承类ActionSupport