`

02-Struts1.3 Action ActionForward ActionMapping

阅读更多

 

一、Action

 

通常,在使用Struts1框架时,对于JSP组件请求应用程序执行的每个动作,应用程序都扩展Struts1org.apache.struts.action.Action以创建Action;

         Action类定义了根据Servlet环境不同可以被分别执行的两个方法,一般开发中使用:

public ActionForward execute(ActionMapping mapping, ActionForm form,	HttpServletRequest request, HttpServletResponse response) throws Exception

另一个方法是没有http的。

 

         Action类通过他的execute()方法来处理请求,返回一个ActionForward对象来指定合适的响应,一个典型的Action类会在execute方法中实现如下的逻辑处理:

               1、检验用户会话的当前状态;

               2、如果验证没有完成,按需要验证form bean的属性;

               3、根据请求来作出相应的处理;

               4、更新将会被用户生成下一个用户界面的对象;

               5、返回一个合适的AcitonForward对象,它将会指定用于生成响应的显示页面;

 

如果需要保存一个记录到数据库中,典型的过程为:

         ActionForward提供一个链接的输入页面

         ActionForm捕获输入

         ActionMapping配置Aciton

         Action将输入送到数据库中(通常会将这一步操作委托给业务逻辑去实现)

 

Aciton的主要职责:

         校验输入数据

         调用业务逻辑方法

         检测处理异常

         根据逻辑进行转向操作

 

Struts中常见的Action有:

         DispathAction:能同时完成多个Action功能的Action;

         ForwardAction:用来整合Struts和其他业务逻辑组件,通常只对请求做有效性检查;

         IncludeAction:用于引入其他的资源和页面;

         SwitchAction:用于从一个模块转换至另一个模块,如果应用分成多个模块时,就可以使用SwitchAction完成模块之间的切换;

 

说明:

         DispathAction是仅次于Action,使用最频繁的Action,他可以避免每个Action创建一个类,可支持多个逻辑处理

         当使用DispathAction要求表单提交时,会额外多传递一个参数,该参数用于区分到底调用Action的哪个方法,即在struts-config.xml

<action path="/teacher" name="TeacherForm" type="org.lxh.action.TeacherAction"
			parameter="operate" input="/index.jsp">

 

添加parameter属性,该属性用于指定参数名,即struts将根据该参数的值调用对应的方法

<html:link href="student.do?operate=entryAdd">添加</html:link>

 

注意:

         DispatchAction的配置中,parameter属性值不能够是executeperform,如果是,则会将DispatchAction中的覆盖掉,造成派发失效

         如果需要从一个页面或资源转换到另一个资源时,直接使用页面或资源路径的超级链接定位并不是好的做法,这使得控制器没有机会处理相关的请求事宜;

         使用ForwardAction可以完成请求的转发,当控制器调用ForwardActionperform()方法时,它会使用属性parameter所设定的路径进行forward的动作。

 

二、ActionForward

ActionForward用于封装转发路径,在Action中处理完用户请求之后,将会返回一个ActionForward对象,常用方式如下;

         return mapping.findForward("success");

调用ActionMapping对象的findForward方法,会从Struts配置文件中,找到一个名为successActionForward,然后返回给ActionServlet进行转向

 

ActionForward分为两类:

         全局ActionForward,可以被所有的Action访问,例如在某些页面需要用户必须登录之后才能访问,而不能直接输入页面地址来进行访问,这就需要在Action中进行判断,如果没有登陆,则将控制返回给登陆页面,这种情况下,使用全局的ActionForward

         局部ActionForward,在Action里配置,仅对该Action有效

 

ActionForward的三个属性:

         name,该Forward的逻辑名

         path,该Forward映射到的jsp资源

         redirect,只能是truefalse,设置是否使用重定向

         true:使用重定向,两次请求的参数将会分别封装在两个不同的request中,即在第二次的处理中,不能访问的第一次请求的参数;

         false:不使用重定向,两次请求的参数将会封装在同一个request中,即在第二次的处理中,可以得到第一次请求的参数;

 

可以在Action中使用如下方式获得已经配置好的ActionForwardActionForward forward = mapping.findForward("success")),服务器启动时,会将struts的配置文件读出,在内存中以hashMap的方式保存起来,Hashmap中的key就是配置的相关信息,value就是相应的对象,所以上面获得的ActionForward是已经在内存中生成的对象,是不能够动态修改的,即(forward.setRedirect(true);)会报配置已经被冻,struts-config.xml文件是不允许动态修改的;

 

ActionForward对象可以手动生成,如下:

         ActionForward forward = new ActionForward();

         forward.setPath("success.jsp");//设置ActionForward的转向页面

         return forward;

这样就可以动态修改,设置路径,重定向等属性值;

 

三、ActionMapping

 

为了操作成功,负责控制的ActionServlet需要知道每个请求的url应该如何映射到一个合适的Action类,这些信息就被封装在一个名为ActionMapping的类中

AcitonMapping对象对应了配置信息,在配置文件中一个Action标签就会对应一个ActionMapping实例,会将Action标签中的属性都放在ActionMapping中,它的一些重要属性如下;

         type:用于指定Action的实现类,也就是负责处理用户请求的业务控制器

         name:在配置文件中定义的,该ActionMapping将会用到的ActionForm的名字

         pathActionServlet根据该属性来转发用户的请求

<action path="/login" name="loginForm" type="org.lxh.action.OperTeacherAction" >
		<forward name="success" path="/success.jsp"></forward>
	</action>

 

当客户端请求login.do时,会将控制转发到LoginAction中,并且将请求参数封装在LoginForm中。

 

ActionMapping重要属性:

         unknown:设置true,则如果某个请求不能够被其他action处理,则由该action进行处理,对于一个应用,只有一个action可以被设置为true

         forward:代表满足该请求的资源,而不会实例化Action

<action path="/unknown" unknown="true" forward="/unknown.jsp" />

ActionServlet找不到响应的action来处理客户端的.do请求时,上面的action将会接管,因为它的unknown属性设置了true,将会自动跳转到unknown.jsp页面

 

         Scope:表示Struts框架在将ActionForm对象(与目标Action匹配的ActionForm)传送到Action之前,会将ActionForm对象保存的位置,可以取值为:

         request:将指示Struts调用request.setAttribute("ActionForm",ActionForm对象)方法,将ActionForm保存到request

         session:调用request.getSession().setAttribute()方法

在实际开发中,为了减少服务器端的压力,一般将scope值设置为request

 

 

 

分享到:
评论

相关推荐

    配置 struts1.3

    6. **结果转发与ActionForward** - 使用`&lt;forward&gt;`元素配置Action执行后跳转的目标页面,可以是相对路径或绝对路径,也可以是其他Action。 7. **异常处理** - `global-exceptions`允许我们定义全局的异常处理...

    struts 1.3 框架的源代码

    - Action根据业务逻辑的结果,返回一个ActionForward对象,指示Servlet转发到哪个JSP页面。 4. **模板技术** - Struts 1.3支持多种视图技术,如JSP、FreeMarker或Velocity,这些模板引擎使开发者可以将业务逻辑与...

    Struts1.3API

    4. **ActionForward**:定义了请求被Action处理后应转向的页面或资源,可以是相对路径或绝对URL。 5. **Tiles**:Struts1.3中的视图组织工具,允许开发者创建可重用的页面片段(Tiles),并通过定义模板来组合这些...

    struts是1.3API

    11. **ActionForward**:用于定义请求的转发路径,可以是相对路径或绝对路径,决定了用户请求后页面的跳转方向。 通过阅读Struts 1.3 API文档,开发者可以详细了解以上概念以及它们的使用方法,进一步提升开发...

    struts 1.3 API.zip

    - `ActionForward`:用于指定请求转发的目标,可以是另一个Action或一个JSP页面。 - `ActionServlet`:Struts的Servlet实现,负责初始化Struts配置和拦截器链。 - `ActionSupport`:Action的基础类,包含了一些...

    学习Struts1.3的相关jar包和API

    ActionForward类用于指定请求处理后的跳转路径,可以是相对路径或绝对URL。而ActionMapping则用来映射请求URL到具体的Action实例。 最后,ActionSupport类是大多数自定义Action类的基类,它提供了默认的行为,如...

    struts1.3页面跳转问题

    总结,Struts1.3中的页面跳转是通过Action类、struts-config.xml配置以及ActionForward、ActionRedirect等类实现的。理解并熟练运用这些概念和方法,能帮助开发者更高效地构建基于Struts1.3的应用程序。在实际项目中...

    struts1.3 api文档

    6. **ActionForward**:ActionForward 用于指定执行 Action 后的页面跳转,它可以是相对路径或绝对路径。 7. **Tiles 插件**:Struts 1.3 引入了 Tiles 模块,它允许将页面布局分解成可重用的组件,提高了页面设计...

    00000033_bean-struts的用法.rar

    - **Action**:具体的业务处理类,接收ActionForm Bean的数据,进行业务逻辑处理,并返回一个ActionForward对象指示视图如何展示结果。 - **ActionMapping**:定义Action与ActionForm Bean之间的映射关系,以及...

    struts1.3源码.rar

    5. **ActionForward**:定义了Action执行后的转发路径,可以是相对路径或者绝对路径,用于决定用户请求处理后的显示页面。 6. **RequestProcessor**:请求处理器,它是Struts框架处理请求的第一步,负责解析请求、...

    struts1.3源码

    4. **ActionForward**:ActionForward用于定义请求转发的方向,可以将请求转发到另一个JSP页面、Action或其他资源。 5. **Tiles**:Struts1.3集成了Tiles框架,它允许创建可重用的页面布局和组件。在`org.apache....

    spring-struts.jar

    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { // ... } } ``` 在这个例子中,`UserService` 是一个...

    struts-config.xml

    除了上述元素,`struts-config.xml`还允许定义其他元素,如`&lt;action-forward&gt;`用于定义Action内部的转发,以及`&lt;message-resource&gt;`来配置应用程序的消息资源文件。 正确理解和配置`struts-config.xml`是开发Struts...

    Struts1.3_Spring3.0_hibernate3.3示例

    它的核心组件包括Action、Form Bean、ActionServlet、ActionMapping和ActionForward等,提供了一种组织应用程序结构的方式,使得业务逻辑与表现层分离,提高了代码的可维护性和可扩展性。 Spring3.0是Spring框架的...

    MYECLIPS--STRUtS教程--PDF

    在动作映射方面,教程会解释如何使用Struts提供的ActionMapping来指定URL与Action之间的映射,以及如何通过ActionForward进行页面跳转。同时,它也会介绍Struts的拦截器(Interceptor),这些可插拔的组件可以增强...

    独立Struts1.3最简单登陆代码

    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { LoginForm loginForm = (LoginForm) form; String ...

    test-struts-all

    4. **Struts-config.xml**:配置文件,定义了各个Action及其关联的ActionForm和ActionForward。 5. **Web.xml**:Servlet配置文件,定义了ActionServlet以及初始化参数。 6. **其他资源文件**:可能包括图片、CSS...

    BBS-- STRUTS1.2

    6. ActionServlet根据ActionForward转发请求到指定的JSP页面,JSP页面负责显示视图。 三、STRUTS1.2优势 1. **解耦合**:STRUTS1.2通过MVC模式将业务逻辑、数据表示和用户界面分离,提高了代码的可维护性和可测试...

    jakarta-struts-1.2.4-src.zip_jakarta struts 1_jakarta struts-1.1

    3. **Action**:执行业务逻辑的Java类,通常会调用服务层(Service Layer)的方法处理请求,完成后通过ActionForward指定下一个视图。 4. **配置文件**:包括struts-config.xml和web.xml。前者定义了ActionMapping...

Global site tag (gtag.js) - Google Analytics