`

原创:第二节:struts1的处理流程及配置文件详解

阅读更多
通过第一节内容我们了解了struts1的简单处理过程.在处理的过程中我们使用到了struts1中的struts-config.xml配置文件,那么这一小节我们就针对其action配置的属性详细解析Action配置中属性含义及其使用。

1、首先我们来简单总结以下struts1的处理流程
    首先:由视图层发出请求,当 ActionServlet 接收到 HTTP 请求后,在 doGet 或 doPost 方法中都会调用process()方法处理请求
    其次:在ActionServlet 的 process() 方法中一旦选择了正确的子应用模块,就会调用RequestProcessor实例的process()方法来处理请求。在ActionServlet调用这个方法时,会把当前的request和response对象传给它
    然后:RequestProcessor实例的process()方法调用ProcessActionCreate()方法,先判断是否在 Action 缓存中存在Action实例,如果不存在,就创建一个Action实例,把它保存在 Action 缓存中
    最后:RequestProcessor实例的process()方法调用Action实例的execute()方法 并返回相应的试图界面

2、简单了解struts1的处理流程之后那么我们就来了解一下struts1配置文件中action的常用属性
首先列举action的属性代码如下:
        <action path="URL" 
		        type="ActionClass" 
		        name="userForm" 
		        scope="request" 
		        attribute="key" 
		        input="/register.jsp"
			    forward="/index.jsp" 
			    include="/index.jsp" 
			    unknown="true" 
			    parameter="test" 
			    className="mappingclass"
			    validate="true">
			    <forward name="" path=""></forward>
		</action>  
下面就对其属性解析
	    a、path :代表请求的Action的名称,无需指明后缀struts1自动处理
       例如上一节中的/Register 就是从视图中提交的Action请求 此请求有的方式是:
         <form action="${pageContext.request.contextPath}/Register.do" method="post">....</form>
       当其点击此提交时后缀名称为.do,(由于我们在会web.xml配置*.do的处理),所以经过mapping的地址映射,交给ActionServlet按照struts1的处理流程处理提交Action的请求。

	    b、type:代表请求的的Action交给那个Action处理,注意此类的名称一定是类的全名称(包括包名)

	c、name:代表的是请求参数封装的ActionForm的名称。 
备注:此名称与<form-beans><form-bean name="名称Form" type="Form类的全名"></form-bean></form-beans>中"名称Form"一致,并通过此form-bean中的type来指定封装的ActionForm类。

	    d、scope:代表把formbean的参数封装到那个作用域中,默认的作用域为session
    备注:当我们没有指定formbean的作用域时,在type指定的Action类中还可以通过以下代码获取:
         /** 获取ActionForm中的对象 并强制造型为UserForm 此获取方式为通过传递的ActionForm参数直接获取,开发中就是用此方式 */
		// UserForm userForm = (UserForm) form;
		/**
		 * 由于在Action的属性配置中的scope属性指定了userForm的作用域, 当采用的是默认值(session)时,
		 * 也可以直接从作用域中获取代码如下:
		 */
		UserForm userForm = (UserForm) request.getSession().getAttribute("userForm");
		
		System.out
				.println("用户名称:" + userForm.getUsername() + " 用户密码:"
						+ userForm.getUserpass() + "   用户邮箱:"
						+ userForm.getUseremail());
      /**备注:
由于在开发的过程中为了节省ActionForm占用的内存空间,我们一般不采用默认值,而是采用scope=”request”配置,因此我们也可以采用一下的方式获取*/
UserForm userForm = (UserForm) request.getAttribute("userForm");

   注意:由于在aciton的配置中我们没有配置attribute="key" 此属性时,在Action中获取的关键字采用默认的值及name的名称,当配置了attribute="key"此属性是必须通过"key"获取.如果你不明白看下面的介绍。

	   E、attribute 指定formbean存储的key,不设默认为name属性的值。
   举例:如果我们在action的配置中配置了attribute=”uform”的话,那么我们在Action中获取的方式就应该为:
 /** 通过方法参数中传递的ActionForm获取ActionForm中的对象 
并强制造型为UserForm */
UserForm userForm = (UserForm) form;
/**由于在action的配置中我们指明了attribute的属性及属性值,因此我们应该采用以下方式获取*/
		UserForm userForm = (UserForm) request.getAttribute("uform");
		System.out
				.println("用户名称:" + userForm.getUsername() + " 用户密码:"
						+ userForm.getUserpass() + "   用户邮箱:"
						+ userForm.getUseremail());
  备注:在指明了attribute属性后,我们如果还采用d中介绍方式即直接从作用域通过name的属性值获取的话,会出现javax.servlet.ServletException: java.lang.NullPointerException异常信息.

	F、input="/register.jsp" 指定formbean的数据是由哪个页面提供的。
说明:提供此属性的目的在于formbean校验失败时,程序方便 跳回formbean的输入页面,通过struts1错误信息标签,显示校验失败信息。
	G、forward="/index.jsp" 指定收到请求时,跳转到相应的jsp页面
强调:如果配置了此属性,则action将不再被调用,即接受到此action时,直接调至到index.jsp页面。
	H、include="/index.jsp" 指定收到请求时,进行页面包含
	I、unknown="true" 如果action把该属性设置为true,则它可以处理客户机发出的所有无效的.do请求,默认值为false
举例:如果在配置文件中添加如下的action配置,
<action path="/**" forward="/index.jsp"  unknown="true"/>
   当如果在地址栏中发出请求为:
http://localhost:8080/20110105struts1_2/regi.do
   如果在此配置文件中找不到regi.do的Action就会处理上面配置的action直接跳转到index.jsp页面 (备注:与此action中path名称无关,但必须配置一个path属性).
	J、parameter="test"配置action参数,调用actioMapping.getParameter方法可以获得这里配置的参数(后续会详细介绍)
	K、className="mappingclass" <action>标签和所有的配置信息使用哪个对象封装,默认值为ActionMapping对象。这是struts1的作者考虑,开发者使用自己开发的Mapping类提供的配置.
	L、validate="true" 请求参数封装到formbean中后,是否让struts自动调用formbean的validate方法进行数据校验。默认true(后续会详细介绍)
除此之外还用一些属性配置,我只做了常用属性的介绍.
3、forward标签
在action配置中,还有一些其他的标签配置,在上面种我们看到了<forward name="" path=""></forward> 即在处理完此action之后我们可以在Action中的execute方法中通过此标签的name属性获取此action,并跳转到相应的path地址中去.
举例:如果在action内部我们配置了forward标签的代码如下:
<forward name="message" path="/message.jsp"></forward>
  那么我们可以再Action返回值中做如下处理:
/** 获取跳转的地址并返回ActionForward */
		return mapping.findForward("message");
通过以上配置,在处理完此action后,struts1经过处理后就会跳转到/message.jsp视图层.


通过上面的介绍我们简单了解了struts1的处理流程、action配置、forward标签及在Action中的处理,希望你能够数量掌握及其应用.

以上内容归redarmy_chen原创,版权归redarmy_chen所有不得随意转载,如有问题请发送邮件到redarmy_chen@qq.com


分享到:
评论

相关推荐

    Struts2的工作流程及配置文件

    ### Struts2的工作流程及配置文件详解 #### 一、Struts2简介 Struts2是基于MVC设计模式的Java Web开发框架之一,它继承了Struts1的优点,并在此基础上进行了大量的改进和扩展。Struts2框架的核心是拦截器...

    Struts 2 properties文件详解

    ### Struts 2 properties文件详解 #### 概述 `struts.properties` 文件是Struts 2框架中的核心配置文件之一,它包含了Struts 2框架运行时所需的一系列配置属性。这些属性决定了Struts 2的行为特征以及与其他组件如...

    struts1的工作流程

    ### Struts1的工作流程详解 #### 一、概述 Struts1是Apache Struts的第一个版本,它是基于Java Servlet/JavaServer Pages技术构建的MVC框架。对于初学者来说,了解Struts1的工作流程是非常重要的,这有助于理解...

    Struts配置文件详解.

    Struts配置文件是Struts框架的核心组成部分,它定义了应用程序的行为和组件间的交互方式。配置文件基于XML格式,使得开发者可以灵活地配置ActionForm、Action、Forward等元素,以实现业务逻辑与视图的分离,增强应用...

    struts2 result配置详解

    Struts2 Result 配置详解 Struts2 框架中 Result 配置是一种非常重要的配置,它直接影响着应用程序的执行结果。Result 配置通常用于定义 Action 的执行结果,例如将结果.redirect 到一个新的 URL,或者将结果....

    struts2深入详解源码1-5章

    Struts2的配置文件(struts.xml)在这里也非常重要,它是整个框架的配置中心,定义了Action、Result以及Interceptor的映射关系。 第二章可能会详细讨论Struts2的Action和Result。Action类是开发者实现业务逻辑的...

    Struts1.3和config配置详解

    2. **数据源配置**:虽然Struts1.3本身并不直接处理数据库连接,但可以通过配置`&lt;plug-in&gt;`元素来集成第三方的数据源,如C3P0或DBCP。 3. **ActionForm配置**:`&lt;form-beans&gt;`标签用于定义表单bean,每个ActionForm...

    Struts-config.xml配置详解

    Struts的配置文件通常命名为struts-config.xml,它是整个Struts应用的核心配置文件,通过定义一系列的XML元素来设定框架的不同功能和行为。下面将详细介绍struts-config.xml中8个主要配置元素的功能和使用方法。 1....

    Struts2配置详解

    - Struts1在第一次请求时创建Action实例,而Struts2采用更灵活的策略,Action实例可以在需要时动态创建,这提高了性能和内存使用效率。 4. **ActionInvocation**: - 它是Struts2中执行Action和管理拦截器的关键...

    struts2 详解文档

    3. **第一个Struts2应用**:开发第一个应用通常涉及创建一个简单的Action类,编写对应的JSP页面,并配置Struts2的配置文件(struts.xml)。 4. **解决配置文件无提示问题**:这可能是因为缺少IDE的插件或配置,安装...

    实验指导\第二章Struts框架详解.doc

    2. **理解配置文件的作用**:`struts-config.xml`是Struts的配置文件,它定义了各个Action、ActionForm以及它们之间的映射关系,以及请求的转发规则。 ### 实验步骤 1. 创建名为`Login`的新工程,并添加Struts支持...

    struts文件

    - **执行流程概述**:当用户通过浏览器向服务器发送请求时,该请求首先被Struts2过滤器拦截,然后根据配置文件将请求分发给对应的Action类进行处理,最后返回结果视图给用户。 - **具体步骤**: - 用户发起HTTP...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    12.6.15 编写Struts的配置文件struts-config.xml 12.6.16 编写Spring和Hibernate的配置文件spring-config.xml 12.6.17 编写web.xml 12.6.18 验证示例 12.7 小结 第四篇 J2EE项目案例精选 第十三章 网上调查系统 13.1...

    struts2详解

    1. **struts-default.xml**:位于Struts2-core-2.1.6.jar文件下,是Struts2的默认配置文件,包含了框架的基础配置。 2. **Bean配置**:通过Bean的配置实现Struts2组件的依赖注入(DI)。示例如下: ```xml ...

    Struts2.应用开发详解(第二讲).rar

    本教程“Struts2应用开发详解(第二讲)”是系列教程的一部分,共计五部分,我们将深入探讨Struts2的核心概念和技术。 在Struts2框架中,Model代表业务逻辑,View负责展示,而Controller则是这两者之间的协调者,处理...

    struts2工作流程

    ### Struts2工作流程详解 #### 一、Struts2框架概述 Struts2作为一款流行的Java Web开发框架,其核心目标就是简化Web应用的开发流程。它通过一系列的组件和设计模式,使得开发者能够更加高效地构建出稳定且可维护...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (3)

    12.6.15 编写Struts的配置文件struts-config.xml 12.6.16 编写Spring和Hibernate的配置文件spring-config.xml 12.6.17 编写web.xml 12.6.18 验证示例 12.7 小结 第四篇 J2EE项目案例精选 第十三章 网上调查系统 13.1...

Global site tag (gtag.js) - Google Analytics