Struts2开发 --- Action及异常处理
Struts2开发 --- Action及异常处理
一、Action介绍
在Struts2中,Action是最重要的,因为struts2是由多个Action组成的;比如要对业务进行分发都需要使用Action;
而定义Action通常需要遵循几个规范:
1.尽量继承ActionSupport,因为他为你实现了很多规范;
2.重写public String execute()throws Exception 方法,此方法是访问Action默认调用的方法(当然可以自己设定调用任意方法,此配置需要在struts.xml进行);
3.Action类中的属性是用于封装HTTP请求、页面结果数据的;在访问Action时,如果带有请求参数,则会自动调用setter方法对属性进行赋值;
了解Action接口和ActionSupport类:ActionSupport可以说是在Struts开发中最常用的类;
二、配置Action
我们在struts.xml中配置Action;
模板:
[html]- <struts>
- <constant name="struts.devMode" value="true"></constant>
- <package name="" extends="struts-default" namespace="" >
- <action name="" class="">
- <result>1.jsp</result>
- </action>
- </package>
- </struts>
配置Action规范:<action>元素必须在<package>中;
下面开始介绍struts.xml常用的元素;
1.<package>
package能够用几个属性:
(1)name:表示包名称,通过随意指定即可;
(2)extends:继承哪个父包,如果继承了某个父包,则会继承父包的action;通常我们需要继承 struts-default ;
(3)namespace:定义命名空间,如果不指定,则为默认的命名空间;如果为"/",则表示根命名空间;
(4)abstract:不常用,如果为true,则不能定义action;
举例:
[html]- <package name="myPackage" namespace="/" extends="struts-default">
- </package>
默认命名空间和根命名空间:
默认命名空间是一个很特殊的命名空间,如果要访问一个action,最后都会在默认命名空间中寻找;
比如/aaa/bbb.action,首先先去命名空间为"/aaa"中去找,如果找不到,则去默认命名空间中寻找bbb.action;
而根命名空间只是一个普通的命名空间;
2.<action>
<action>的属性有:
(1)name:指定了Action的名字,也是对外的URL;
(2)class:访问此Action的处理类,默认为ActionSupport,ActionSupport的返回值为SUCCESS,注意:必须要写出类的全名;
(3)method:如果不指定,则默认调用execute方法,如果指定,则调用此方法;
3.<result>
定义了Action的返回结果所对应的JSP(当然可以是任意的视图页面);
<result>的常用属性为
(1)name:Action方法返回的字符串,默认为success;
(2)type:结果类型,默认为dispatcher,此问题在下面会详细讲解;
代码示例:
[html]- <package name="MyPackage" extends="struts-default" namespace="/" >
- <action name="loginAction" class="org.login.action.LoginAction" >
- <result name="success" type="redirect">
- <param name="location">/result.jsp</param>
- </result>
- <result name="error" type="redirect">/result.jsp</result>
- </action>
- </package>
逻辑Action和物理Action的区别:
逻辑Action是在struts.xml中配置的action元素,物理Action是实际的Action类;
如果某个Action类存在fun1() 和fun2()方法,则可以定义两个逻辑Action,虽然处理类都是一样的;
|
评论暂时关闭