Struts2 学习笔记
吃透最简单的Helloword实例之后 ,接着再一一去研究 请求参数的接收与发送,参数的封闭,校验,result,struts2标签库这些最为核心的东西(其实这些也正是最常用的东西),经过这样的学习,应该领会了一些Struts2的流程,接着再去阅读相关文档去了解Strust2的拦截器设计思想(这叫先使用再体会的学习方法),接着可以做一些针对于自定义拦截器的实现来深化对Struts2的认识。此时,你已经达到企业中使用的级别了,接下来就可以玩一些SSh整合
一、基本配置
1.web.xml配置
1
2
3
4
5
6
7
8
|
<
filter
>
<
filter-name
>struts2</
filter-name
>
<
filter-class
>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</
filter-class
>
</
filter
>
<
filter-mapping
>
<
filter-name
>struts2</
filter-name
>
<
url-pattern
>/*</
url-pattern
>
</
filter-mapping
>
|
2.struts.xml
默认放在src文件下
1
2
3
4
5
6
7
8
9
|
<!--package 类似java的包:用区分不同的请求
name:给包取的名字 (name属性为每个package设置一个唯一的标识,这个标识在所有的package定义中不能重复)
namespace:与请求地址的对应,对于action配置进行逻辑划分
namespace="/" --http://localhost:8080/xxx/分部工程名/下的所有请求
namespace="/yy" --http://localhost:8080/xxx/yy分部工程名/下的所有请求
extends: 通过使用extends,你可以指定本package继承另外一个package的所有的配置
--!>
|
1
2
3
4
5
|
<
package
name
=
"my"
namespace
=
"/"
extends
=
"struts-default"
>
<
action
name
=
"helloworld"
>
<
result
>/index.jsp</
result
>
</
action
>
</
package
>
|
访问URL:localhost:8080/helloworld
3.action类
属性:name:是要处理的请求名
class:请求名所有对应的处理类
method:请求名所有对应的处理类中的方法(默认为excute)
<action name="hello" calss="xxx.xxx.xxxxaction" method="execute">
Struts2 中有3中方式
a.普通java类,定义execute()方法
public class xxxAction
b.实现Action接口,重写execute()方法
public class xxxAction implements Action
c.继承java类ActionSupport
public class xxxAction extentds ActionSupport
for example:
1
2
3
4
5
6
|
public
class
MyDefineAction
extends
ActionSupport{
@Override
public
String execute()
throws
Exception {
return
"success"
;
//我们必须返回一个字符串给struts.xml识别
}
}
|
对应struts2.xml 文件
1
2
3
4
5
|
<
package
name
=
"my"
namespace
=
"/"
extends
=
"struts-default"
method
=
"execte"
>
<
action
name
=
"hello"
class="xxx.xxx.xxx.MyDefineAction>
<
result
name
=
"success"
>/index.jsp</
result
>
</
action
>
</
package
>
|
我们相应的可以在action中创建不同的method 实现不同的返回,到达不同的.jsp
不同action:name对应不同的method
三种方式: 配置struts.xml中的 action
a. 普通配置 域名为 http://localhost:8080/Test/register(login)
1
2
3
4
5
6
7
8
|
<
package
name
=
"my"
namespace
=
"/"
extends
=
"struts-default"
>
<
action
name
=
"login"
class
=
"com.yc.action.UserAction"
method
=
"login"
>
<
result
name
=
"success"
>login.jsp</
result
>
</
action
>
<
action
name
=
"register"
class
=
"com.yc.action.UserAction"
method
=
"register"
>
<
result
name
=
"success"
>register.jsp</
result
>
</
action
>
</
package
>
|
b. 动态配置 url为: http://localhost:8080/Test/user!register
1
2
3
4
5
|
<!-- 动态配置 必要设置: struts.enable.DynamicMethodInvocation value="true"-->
<
action
name
=
"user"
class
=
"com.yc.action.UserAction02"
>
<
result
name
=
"login_success"
>/login.jsp</
result
>
<
result
name
=
"register_success"
>/register.jsp</
result
>
</
action
>
|
c. 约定配置 采用通配符 url为: http://localhost:8080/Test/user_register
1
2
3
|
<
action
name
=
"*_*"
class
=
"com.yc.action.{1}Action"
method
=
"{2}"
>
<
result
name
=
"success"
>/{2}.jsp</
result
>
</
action
>
|
d.当在对应的action中没有匹配对result,那就到global-result去匹配
1
2
3
|
<
global-results
>
<
result
name
=
"fail"
>/index.jsp</
result
>
</
global-results
>
|
<!--注意:global-results这个标签只能放在package中action的前面-->