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,虽然处理类都是一样的; ![]() (编辑:应用网_丽江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |