第二章:深入struts配置文件
在这一章里,我们要学习以下几点内容
1:配置ActionSerlvet拦截用户请求
2:ActionForm的创建与配置
3:Action的创建与配置
4:Forward的定义转向配置
5)Action的excute方法
配置ActionSerlvet拦截用户请求
1:ActionSerlvet是核心控制器,是由struts框架自动产生的,它像过滤器一样会拦截所有用户的请求。但是这个过滤器必须要在web.xml文件中进行配置才能够发挥它的作用。幸运的是这些配置struts已经帮我们自动配置好,但是有必要进行了解.
<servlet-name>action</servlet-name> --ActionServlet的名字对应实例对应的类
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
........
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern> --定义ActionServlet过滤的通配符。必须要以do结尾。当然可以修改
</servlet-mapping>
配置ActionForm接受用户输入的数据
1)ActionForm实际上就是一个非常简单的javaBean。在它里面有许多的get,set方法,它的目的就是为了封装 从用户输入的数据。因此ActionForm通常与表单页面对应,每个表单对应一个ActionForm。表单中的输入 项对应ActionForm的一个属性.
2)Struts要求ActionForm必须要继承自org.apache.struts.action.ActionForm基类。
3)必须保证ActionForm中的属性名一定要与表单中元素名一致
4)所有的ActionForm必须要在Struts-config.xml中进行配置。配置节如下:
<form-beans>
<form-bean name="loginActionForm" type="org.chen.struts.loginForm" />
<form-bean name="shopActionForm" type="org.chen.struts.loginForm" />
........
<form-bean name="shopActionForm" type="org.chen.struts.loginForm" />
</form-beans>
5)一个ActionForm必须至少指定两项。
name:该项用于标识ActionForm的Id,以便于传递给Action进行使用
type:ActionForm的实现类
6)在eclipse中添加一个ActionForm的步骤如下:
A:右击--->new--->other--->myeclipse--->webstruts-->struts1.2 form
B:在弹出的对话框中
name中输入ActionForm的标识id
superclass:指定ActionForm的父类名。一般选择org.apache.struts.action.ActionForm
formtype:指定ActionForm的类名,因为它是一个javaBean。相当于为类取一个名字
formProperty选项卡中输入ActionForm的属性。
Action的创建与配置
1)Action是系统的业务控制器,它用于接收从ActionServlet转发过来的请求,并触发execute方法,我们可以 在execute方法里面调用模型进行数据处理
2)struts要求Action必须继承自org.apache.struts.action.Action基类
3)所有的Action必须要在struts-config.xml中进行配置。配置节如下:
<action name="loginActionForm"
path="/loginAction" scope="request"
type="org.chen.struts.loginAction">
<forward name="scuess" path="/scuess.jsp" />
<forward name="error" path="/error.jsp" />
</action>
说明:
A)name:并不是Action本身的名字,而是与之关联的ActionForm的名称
B)path:非常重要的属性。ActionSerlvet将用户的请求转发与之同名的Action.同名的意思是将请求 的".do"后缀去掉。匹配Action的path属性值
C)struts-config.xml中只要遇到path属性都要加"/"表示相当于WebRoot根目录而言
D)type:Action的类名
E)forward:将Action的转发映射到实际的jsp页面,在实际编程时应该用逻辑名进行转发
F)一个Action可以有ActionForm,也可以没有ActionForm。如果是post提交的一般会有ActionForm
比如:<form id="frm1" action="loginAction.do">,如果是通过get提交则不会有ActionForm,但 是Action总是会有的,因为要处理业务逻辑。比如:<a href="shopAddAction.do">
E)关于超链接与Action路径的问题(******************)
[1]对于表单中的Action而言,不存在路径问题,只要Action在classes下都可以定位
比如:
1.jsp页面在WebRoot下面,但Action在ht.netBook.Action下面。在表单中提交时
<html:form action="insertTalkAction.do">可以直接指定Action名就可了
或者2.jsp页面在WebRoot下面的page下面。都可以正确定位
[2]但对于超链接而言,则不一样。如果 超链接所在的页面1.jsp在WebRoot下面,则可以
<a href="insertTalkAction.do>进入</a>直接指定Action名
但是如果超链接所在的页面1.jsp在WebRoot下面的page下面的话,则通过"/"表示项目目录
<a href="/WebRoot/insertTalkAction.do>让struts回到WebRoot下面再去找
[3]如果是servlet的话,不管是对于表单还是对于超链接,都必须要找到web.xml文件
在它下面有。取出"servlet/loginSer"就行了,注意不是"/servlet/loginSer",即不要加
"/"。如果超链接所在的页面就在WebRoot的下面,则可以直接使用
<a href="servlet/loginSer"> 如果在超链接所在的页面在WebRoot下面的Page下面,则把
则要把路径回退一级<a href="..\servlet\loginSer>让struts回到WebRoot下面再去找
<servlet-mapping>
<servlet-name>loginSer</servlet-name>
<url-pattern>/servlet/loginSer</url-pattern>
</servlet-mapping>
[4]对于forward中的<forward name="error" path="/error.jsp" />中的path而言
"/"表示在WebRoot下面去找,但是对于jsp而言"/"表示项目目录。
如果要在WebRoot下面的page文件夹里面的error.jsp
则修改成为<forward name="error" path="/page/error.jsp" />
举例:
1)创建一个Action名为loginAction放入ht.OA.Action下面
2)创建一个login.jsp页面放入WebRoot根目录下面
3)创建一个index.jsp与error.jsp放入WebRoot的page文件夹下面
4)创建一个servlet放入ht.OA.servlets下面
5)完成登录页面的struts的测试
Forward的定义转向配置
1)前面说过ActionServlet把请求转发给Action,Action会触发excute方法,在此方法中调用 JavaBean进行业务逻辑处理,处理完毕之后,要把处理的结果显示到其它的jsp页面中。而这些 经过Action处理之后要进入的jsp页面就是Forward配置节的任务
2)Forward在struts-config.xml中配置格式如下:
<forward name="scuess" path="/scuess.jsp" />
<forward name="error" path="/error.jsp" />
3)每一个Forward相当于一个ActionForward对像,所以struts中的
ActionSerlvet,Action,ActionForwad构成了struts的核心
说明:
A)name:用来指定forward逻辑名,以便在编程中来使用
B)path:实际要转发到的jsp页面。注意要加"/"
Action的excute方法
1)ActionServlet接受到用户的"XXXXX.do"请求,通过struts-config.xml配置文件找到与之匹配的 Action配置节,通过Action的name属性找到与之对应的ActionForm然后把用户输入的数据填写到该 ActionForm中去,最后把请求连同ActionForm转发给Action,然后触发Action的exute方法
2)些方法里面有几个参数:
A)mapping:
1:用来获取与Action对应的forward定义转向。
2:通过mapping.findForward(name)来进行实际页面的转发
B)form:是填充了用户输入数据的ActionForm。在实际编程时,往往需要向子类转换
LoginActionForm loginActionForm=(LoginActionForm)form,得到loginActionForm之后可以
通过get方法得到用户填写的数据
C)request:得到用户的请求。事实上要得到用户输入的数据也可以通过request.getParameter方 法,但是那样就失去了struts的作用,所以一般都会有ActionForm去得到用户所输入 的数据,但是request.getParameter方法却可以得到get方法提交过来的数据,这是非 常重要的
D)response:得到用户的响应
E)exute方法会返回一个ActionForward实例,而mapping.findForward(name)正好可以返回这个 实例
相关推荐
### Struts配置文件详解 #### 一、Struts配置文件的重要性与作用 Struts框架作为SSH(Struts+Spring+Hibernate)三大框架之一,在企业级Web应用开发中扮演着核心角色。Struts配置文件是Struts框架的灵魂所在,它...
Struts 2的配置文件主要由两个部分组成:`struts.xml`和应用特定的配置文件(如`package`或`action`配置)。这些XML文件定义了请求如何被映射到特定的Action类,以及Action类如何与视图(JSP页面)交互。配置文件的...
本文将深入探讨Struts2配置文件的核心概念及其在实际开发中的应用。 **一、Struts2配置文件概述** 在Struts2中,配置文件主要分为两个部分:`struts-default.xml`和用户自定义的配置文件,如`struts.xml`或`struts-...
在这篇详尽的讲解中,我们将深入探讨Struts配置文件的关键元素和作用。 1. **struts-config.xml文件**:这是Struts框架的主要配置文件,通常位于Web应用的WEB-INF目录下。这个XML文件包含了所有关于动作映射、数据...
### 深入Struts2的配置文件:详解struts.xml的配置机制 #### 一、包配置(Package Configuration) 在Struts2框架中,**包配置**是管理Action和其他核心组件的重要方式之一。通过使用包,我们可以组织Action、拦截...
- 这是Struts配置文件的根元素,其配置类为org.apache.struts.config.ModuleConfig。该元素下有8个子元素,每个都扮演着不同的角色,如数据源配置、全局异常处理、全局转发等。 #### 2. **Data-Sources元素** - `...
本文将围绕“Struts2配置文件传值中文乱码”这一主题,深入探讨其成因、解决方案以及相关的配置细节,旨在帮助开发者有效解决中文乱码问题,提升用户体验。 ### Struts2框架简介 Struts2是Apache组织下的一个开源...
#### 一、Struts配置文件概述 在Struts框架中,`struts.xml`配置文件扮演着极其重要的角色。它主要用于定义应用中的各种配置信息,包括但不限于包(Package)、拦截器(Interceptor)、Action以及结果(Result)等...
本文将深入探讨Struts2的配置文件,特别是`struts.xml`文件中的关键元素和属性。 在Struts2中,`package`元素是核心组件,用于组织Action、拦截器等。一个包可以看作是一个模块,其中包含多个Action和拦截器。`...
本文将详细介绍Struts2配置文件中的各个节点及其作用,并为初学者提供深入的理解。 #### 二、Struts2配置文件概览 Struts2的配置文件主要包括以下几个方面: 1. **`struts-default.xml`**:位于`struts2-core-...
在深入探讨Struts2的配置文件之前,首先需要了解Struts2是一个基于MVC(Model-View-Controller)架构的Java Web框架。它简化了开发过程,提供了强大的控制层功能。配置文件`struts.xml`是Struts2的核心配置文件,...
《Struts2配置文件宝典》一文详细阐述了Struts2框架中配置文件的核心概念与实践技巧,尤其聚焦于如何高效地管理拦截器、包(package)以及Action的配置,为开发者提供了一套全面而深入的理解框架配置的指南。...
通过Struts配置文件,我们可以定义各个Action和它们对应的处理方法。 在配置简单的Struts应用时,主要涉及以下几个步骤: 1. **添加依赖**:确保你的项目包含了Struts2的核心库。这通常通过在Maven或Gradle的依赖...
深入Struts2框架,我们需要了解其核心组件和配置机制。Struts2是一个基于MVC(Model-View-Controller)架构的Java web开发框架,它简化了创建和维护大型web应用的过程。本文将探讨Struts2的配置文件、Action、请求...
本文将深入探讨Struts2配置文件的DTD(文档类型定义),以及如何使用这些配置元素。 首先,Struts2的配置文件基于DTD来解析和验证其结构。DTD是一套规则,用于定义XML文档的合法结构和元素。在Struts2中,配置文件...