一、Action
通常,在使用Struts1框架时,对于JSP组件请求应用程序执行的每个动作,应用程序都扩展Struts1的org.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属性值不能够是execute或perform,如果是,则会将DispatchAction中的覆盖掉,造成派发失效
如果需要从一个页面或资源转换到另一个资源时,直接使用页面或资源路径的超级链接定位并不是好的做法,这使得控制器没有机会处理相关的请求事宜;
使用ForwardAction可以完成请求的转发,当控制器调用ForwardAction的perform()方法时,它会使用属性parameter所设定的路径进行forward的动作。
二、ActionForward
ActionForward用于封装转发路径,在Action中处理完用户请求之后,将会返回一个ActionForward对象,常用方式如下;
return mapping.findForward("success");
调用ActionMapping对象的findForward方法,会从Struts配置文件中,找到一个名为success的ActionForward,然后返回给ActionServlet进行转向
ActionForward分为两类:
全局ActionForward,可以被所有的Action访问,例如在某些页面需要用户必须登录之后才能访问,而不能直接输入页面地址来进行访问,这就需要在Action中进行判断,如果没有登陆,则将控制返回给登陆页面,这种情况下,使用全局的ActionForward
局部ActionForward,在Action里配置,仅对该Action有效
ActionForward的三个属性:
name,该Forward的逻辑名
path,该Forward映射到的jsp资源
redirect,只能是true或false,设置是否使用重定向
true:使用重定向,两次请求的参数将会分别封装在两个不同的request中,即在第二次的处理中,不能访问的第一次请求的参数;
false:不使用重定向,两次请求的参数将会封装在同一个request中,即在第二次的处理中,可以得到第一次请求的参数;
可以在Action中使用如下方式获得已经配置好的ActionForward(ActionForward 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的名字
path:ActionServlet根据该属性来转发用户的请求
<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
相关推荐
6. **结果转发与ActionForward** - 使用`<forward>`元素配置Action执行后跳转的目标页面,可以是相对路径或绝对路径,也可以是其他Action。 7. **异常处理** - `global-exceptions`允许我们定义全局的异常处理...
- Action根据业务逻辑的结果,返回一个ActionForward对象,指示Servlet转发到哪个JSP页面。 4. **模板技术** - Struts 1.3支持多种视图技术,如JSP、FreeMarker或Velocity,这些模板引擎使开发者可以将业务逻辑与...
4. **ActionForward**:定义了请求被Action处理后应转向的页面或资源,可以是相对路径或绝对URL。 5. **Tiles**:Struts1.3中的视图组织工具,允许开发者创建可重用的页面片段(Tiles),并通过定义模板来组合这些...
11. **ActionForward**:用于定义请求的转发路径,可以是相对路径或绝对路径,决定了用户请求后页面的跳转方向。 通过阅读Struts 1.3 API文档,开发者可以详细了解以上概念以及它们的使用方法,进一步提升开发...
- `ActionForward`:用于指定请求转发的目标,可以是另一个Action或一个JSP页面。 - `ActionServlet`:Struts的Servlet实现,负责初始化Struts配置和拦截器链。 - `ActionSupport`:Action的基础类,包含了一些...
ActionForward类用于指定请求处理后的跳转路径,可以是相对路径或绝对URL。而ActionMapping则用来映射请求URL到具体的Action实例。 最后,ActionSupport类是大多数自定义Action类的基类,它提供了默认的行为,如...
总结,Struts1.3中的页面跳转是通过Action类、struts-config.xml配置以及ActionForward、ActionRedirect等类实现的。理解并熟练运用这些概念和方法,能帮助开发者更高效地构建基于Struts1.3的应用程序。在实际项目中...
6. **ActionForward**:ActionForward 用于指定执行 Action 后的页面跳转,它可以是相对路径或绝对路径。 7. **Tiles 插件**:Struts 1.3 引入了 Tiles 模块,它允许将页面布局分解成可重用的组件,提高了页面设计...
- **Action**:具体的业务处理类,接收ActionForm Bean的数据,进行业务逻辑处理,并返回一个ActionForward对象指示视图如何展示结果。 - **ActionMapping**:定义Action与ActionForm Bean之间的映射关系,以及...
5. **ActionForward**:定义了Action执行后的转发路径,可以是相对路径或者绝对路径,用于决定用户请求处理后的显示页面。 6. **RequestProcessor**:请求处理器,它是Struts框架处理请求的第一步,负责解析请求、...
4. **ActionForward**:ActionForward用于定义请求转发的方向,可以将请求转发到另一个JSP页面、Action或其他资源。 5. **Tiles**:Struts1.3集成了Tiles框架,它允许创建可重用的页面布局和组件。在`org.apache....
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { // ... } } ``` 在这个例子中,`UserService` 是一个...
除了上述元素,`struts-config.xml`还允许定义其他元素,如`<action-forward>`用于定义Action内部的转发,以及`<message-resource>`来配置应用程序的消息资源文件。 正确理解和配置`struts-config.xml`是开发Struts...
它的核心组件包括Action、Form Bean、ActionServlet、ActionMapping和ActionForward等,提供了一种组织应用程序结构的方式,使得业务逻辑与表现层分离,提高了代码的可维护性和可扩展性。 Spring3.0是Spring框架的...
在动作映射方面,教程会解释如何使用Struts提供的ActionMapping来指定URL与Action之间的映射,以及如何通过ActionForward进行页面跳转。同时,它也会介绍Struts的拦截器(Interceptor),这些可插拔的组件可以增强...
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { LoginForm loginForm = (LoginForm) form; String ...
4. **Struts-config.xml**:配置文件,定义了各个Action及其关联的ActionForm和ActionForward。 5. **Web.xml**:Servlet配置文件,定义了ActionServlet以及初始化参数。 6. **其他资源文件**:可能包括图片、CSS...
6. ActionServlet根据ActionForward转发请求到指定的JSP页面,JSP页面负责显示视图。 三、STRUTS1.2优势 1. **解耦合**:STRUTS1.2通过MVC模式将业务逻辑、数据表示和用户界面分离,提高了代码的可维护性和可测试...
3. **Action**:执行业务逻辑的Java类,通常会调用服务层(Service Layer)的方法处理请求,完成后通过ActionForward指定下一个视图。 4. **配置文件**:包括struts-config.xml和web.xml。前者定义了ActionMapping...