加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

Struts2开发 --- Action及异常解决

发布时间:2021-11-24 15:42:12 所属栏目:PHP教程 来源:互联网
导读:一、Action介绍 在Struts2中,Action是最重要的,因为struts2是由多个Action组成的;比如要对业务进行分发都需要使用Action; 而定义Action通常需要遵循几个规范: 1.尽量继承ActionSupport,因为他为你实现了很多规范; 2.重写public String execute()throw

一、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,虽然处理类都是一样的;

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读