`
zwh910621
  • 浏览: 146740 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

struts1工作流程

阅读更多

Struts在Tomcat中的安装配置及工作流程

1.准备工作
      安装JDK及Tomcat,并分别设置环境变量:JAVA_HOME、CLASSPATH、COMCAT_HOME,并确保Tomcat已正常工作。本文以jdk1.5和Tomcat5.5.12为环境介绍Struts在Tomcat中的安装及工作流程。
2.安装Struts(通过二进制发布包安装)
 2.1下载Struts二进制发布包(
http://struts.apache.org/downloads.html
 2.2解压下载的二进制发布包,并将解压目录下lib目录中的所有.jar文档复制到TOMCAT_HOME\web应用\WEB_INF\lib目录下,即只有些Web应用使用Struts构架。
另:如果多个应该要同时使用Struts构架,则应该将解压目录下lib目录中的所有.jar文档复制到TOMCAT_HOME\common\lib目录下。
 2.3将对应lib目录下的struts.jar文件路径添加到CLASSPATH环境变量中。
通过以上配置Web应用就可以使用Struts构架进行项目开发了。
另外还可以通过Struts源码进行安装。
3.Struts构架的构成
 整个Struts应用是一个分工明确的有机整体,在控制器的统一指挥下,各个组件各负其责,协调工作,是MVC设计模式的具体实现。MVC模式分为:模型(Model)、视图(View)、控制器(Controller)三部分。
3.1模型(Model):业务逻辑层,用于实现具体的业务逻辑。此部分一般由JavaBean或EJB(企业级JavaBean)组成。Struts中的模型主要分为两个部分:
1.系统的内部状态
2.可以改变状态的操作(事务逻辑)
内部状态通常由一组ActinForm JavaBean表示。根据设计或应用程序复杂度的不同,这些Bean可以是自包含的并具有持续的状态,或只在需要时才获得数据(从某个数据库)。
大型应用程序通常在方法内部封装事务逻辑(操作),这些方法可以被拥有状态信息的bean调用。比如购物车bean,它拥有用户购买商品的信息,可能还有checkOut()方法用来检查用户的信用卡,并向仓库发定货信息。
小型程序中,操作可能会被内嵌在Action类,它是struts框架中控制器角色的一部分。当逻辑简单时这个方法很适合。
注:建议用户将事务逻辑(要做什么)与Action类所扮演的角色(决定做什么)分开。
3.2视图(View):表示层,与用户直接交互的视图。此部分一般通过JSP页面来实现,另外Struts还提供了丰富的自定义标识库,它与模型部分有效交互。
3.3控制器(Controller):控制层,是整个应用的控制中心,用于控制整个业务流程(Flow Control),使用Model与View协同工作。控制器通过专门的Servlet来实现的,该Servlet是一个Struts API中提供的ActionServlet类型的实例。
3.4 Struts框架的组成部分
Struts-config.xml    Struts配置文件
ActionServlet      控制器
Action Class      包含事务逻辑
ActionForm      显示模块数据
ActionMapping     帮助控制器将请求映射到操作
ActionForward     用来指示操作转移的对象
ActionError         用来存储和回收错误
Struts标记库    可以减轻开发显示层的工作
3.5主要的配置文件
 web.xml(TOMCAT_HOME/Web应用/WEB_INF),Web.xml是web应用的通过配置文件,主要完成ActionServlet的配置、配置首页的设置等。
Struts-config.xml(TOMCAT_HOME/Web应用/WEB_INF),struts-config.xml是整个Struts构架的核心,用来组装各个组件,是一个控制中心。
4.Struts构架的工作流程(如图所示)
初学Struts时,可能难以理解其工作流程,最简单的理解可以把Struts看作是一个“页面导航”构架,在struts_config.xml来规化应该程序的各个部分,Struts通过读取该配置文件来组织应用程序。

 

 

 

 

 

 

 

 

 

 

5.流程说明
首先,服务器接收到客户浏览器请求后,对请求进行过滤,若属于Struts的处理范围则自动提交给Struts控制器进行处理,否则按传统方式作出响应。
注:过滤标准依据web.xml中Servlet的配置信息:
<servlet>
<servlet-name>actionServlet</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>actionServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
以上信息配置了名为actionServlet的控制器Servlet,并说明凡是以.do(也可约定为其它)结尾的页面请求都由此Servlet来处理,实现此Servlet的类是org.apache.struts.action.ActionServlet.(Struts API中定义的组件类)
其次,控制器servlet开始工作,读取struts_config.xml中的配置信息
注:Struts_config.xml配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<struts-config>
<form-beans>
<form-bean name="formBeanName" type=" package.ClassNameForm "/>
</form-beans>
<global-forwards>
<forward name="failed" path="/error.jsp"/>
<forward name="successed" path="/right.jsp"/>
</global-forwards>
<action-mappings>
<action path="/login" type ="classmate.LoginAction" name ="formBeanName" scope="request" input ="/login.jsp"/>
<action path="/regist" forward="/regist.jsp"/>
</action-mappings>
</struts-config>
1. 使用指定的JavaBean来自动接收来自客户提交的表单数据,声明该JavaBean的代码对应于struts_config.xml中的:
<form-beans>
<form-bean name="formBeanName" type="package.ClassNameForm"/>
</form-beans>
 Name:该bean的名字
 Type:实现该bean的类
为实现自动填充功能,该Bean(package.ClassNameForm类)必须是org.apache.struts.action.ActionForm类(即其子类)的对象。
2. Servlet控制器读取Http分发规则(即Http请求与处理此请求的类的对应关系)
<action-mappings>
<action path="/login" type ="package.LoginAction" name =" formBeanName " scope="request" input ="/login.jsp"/>
<action path="/regist" forward="/regist.jsp"/>
</action-mappings>
说明:
path:和本Action对应的请求页面的相对路径(不包括后.do)。
type:处理请求的Action Bean类(完整路径)。
name:用到的ActionForm Bean的名字(<form-bean>元素中声明的)
scope:ActionForm Bean的作用域(默认为session)。
input:表单验证出错时的处理页面。
forward:指定目标响应页面(与<forward>元素不同,只有当没有指定type属性时本属性才生效)。
另:还可以在<action>中配置<forward>元素,即此Action处理后反回的目标页面
以上代码使用<action-mapping>元素的子元素<action>来约定控制器(ActionSevlet对象)分发HTTP请求的规则:
1. 若页面URI是login.do,则使用formBeanName来自动接收来自客户请求表单中的数据(该formBeanName中属性要与用户提交表单中的属性名称对应该,否则将无法接收),并将该请求分给一个package.LoginAction类型的实例来处理。该实例起到事件监听器的作用,类型必须是org.apache.struts.action.Action的子类。
注:控制器(ActionServlet)对象与JavaBean的情形类似,第一次运行时会自动实例化一个对象。
2. 若页面URI是regist.do,则直接转向/regist.jsp页面作出响应。
3. Action对象的功能
Action对象接收到发送来的Http请求和由ActionServlet对象已填充过的表单对象,然后调用其execute()方法进行处理,此方法有四个参数:
ActionMapping mapping:映射到struts_config.xml中的相关配置信息。
ActionForm form:ActionServlet对象填充过的表单(ActionForm Bean)的一个引用,可以从对象中获取表单数据。
HttpServletRequest request:来自客户端的Http请求信息。
HttpServletResponse response:响应客户端的Http信息。
执行完成后,返回给控制器ActionServlet对象一个封装了目标页面的ActionForward对象,此时,mapping对象调用findForward()方法 到struts_config.xml中的查找<forward>元素中映射信息,<forward>元素的定义如下:
<global-forwards>
<forward name="name1" path="/page1.jsp"/>
<forward name="name2" path="/page2.jsp"/>
</global-forwards>
Execute方法中的findForward()方法中的参数对应forward元素中的name属性,找到后将导航到相应的页面。
注:<forward>可以在struts_config.xml中两个地方定义:一个是<global-forwards>元素中,此时在整个应用中都有关效,可理解为编程语言中的全局变量;另一个是<action>元素中,此时作用域为本Action。 findForward()方法查找顺序为<action>?<global_forwards>
6.Struts构架工作流程总结
ActionSerlvet接收客户Http请求,使用ActionForm Bean自动填充客户送来的表单数据到ActionForm Bean对象中?根据配置信息(struts_config.xml)将请求分发给相应的Action对象?Action对象调用execute()方法处理请求(根据JavaBean和ActionForm取得业务逻辑和表单数据),并反回ActionForward对象给ActionSerlvet对象?根据ActionForward对象的信息(目标页面),ActionServlet再次将Http请求导航到目标页面,并发送到客户端。
以上是struts在Tomcat中的安装与基本配置,在以后的系列文章中将详细介绍其核心组件及运行机制。

分享到:
评论

相关推荐

    struts1工作流程.rar

    本压缩包文件“struts1工作流程.rar”可能包含了一份关于Struts1框架工作流程的详细文档“struts1工作流程.doc”。下面将详细介绍Struts1的工作流程及其相关知识点。 1. **MVC架构**: Struts1基于MVC设计模式,...

    Struts2工作流程图

    虽然Struts2号称是一个全新的框架,但这仅仅是相对Struts 1而言。Struts 2 与Struts 1相比,确实有很多革命性的改进,但它并不是新发布的新框架,而是在另一个赫赫有名的框架:WebWork基础上发展起来的。从某种程度...

    struts1的工作流程

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

    Struts1与Struts2原理 区别详解汇总

    #### Struts1工作流程 1. **用户提交请求**:客户端向服务器发送HTTP请求。 2. **ActionServlet接收请求**:ActionServlet接收到请求后,根据`struts-config.xml`文件中的配置决定调用哪个Action来处理请求。 3...

    struts2工作流程

    在深入探讨Struts2的工作流程之前,我们先了解一下MVC模式的基本概念。MVC模式将应用逻辑分隔为三个部分:模型(Model)处理业务逻辑,视图(View)负责展示数据,控制器(Controller)协调用户输入和模型间的交互。...

    Struts2工作流程

    在深入理解Struts2的工作流程之前,我们需要先了解一些基本概念。 1. **MVC模式**: MVC模式将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller)。模型负责业务逻辑,视图负责显示...

    Struts1工作原理浅析【转】

    Struts1 的工作流程可以分为以下七步: 1. 检索和用户请求匹配的 ActionMapping 实例,如果不存在就返回请求路径无效信息。 2. 如果 ActionForm 实例不存在,就创建一个 ActionForm 对象,并把客户提交的表单数据...

    servlet模拟struts1工作原理

    本文将通过使用Servlet来模拟Struts1的工作流程,深入理解其核心机制。 首先,让我们探讨Struts1的基本架构。Struts1框架的核心组件包括ActionServlet、ActionForm、Action、Tiles以及配置文件(struts-config.xml...

    最详细的Struts工作流程图

    这是一个详细的Struts工作流程图,里面包含JSP、java(Action、ActionForm等)类

    struts工作流程.doc

    在上述的描述中,我们了解了Struts工作流程的关键步骤: 1. **客户端请求**:当用户在浏览器中输入一个以`.do`结尾的URL(例如http://localhost:8080/helloapp/Hello.do)时,这个请求会被Web服务器捕获并传递给...

    struts2小程序 struts2代码

    这些配置是理解程序工作流程的关键。 3. **Interceptor拦截器**:拦截器允许在Action执行前后插入自定义逻辑,如日志、权限检查等。在项目中,可能会看到如`params`、`validation`、`exception`等内置拦截器的使用...

    Struts工作流程

    以下是Struts工作流程的详细说明: 1. **模型(Model)**: 模型层主要负责应用程序的状态管理和业务逻辑处理。在Struts框架中,模型通常由JavaBean或Enterprise JavaBeans(EJB)来实现。JavaBean是简单的Java类...

    struts1—jar

    理解Struts1的核心组件和工作原理对于任何Java Web开发者来说都是至关重要的,这有助于他们构建稳定、可扩展的应用程序。虽然Struts1已经被更现代的框架如Spring MVC取代,但其设计理念和MVC模式依然在现代Web开发中...

    struts2.0整合Struts 1

    Struts 2是一个强大的MVC(Model-View-Controller)框架,它是在WebWork的基础上发展起来的,旨在提供更高效、更灵活的Web应用程序开发。Struts 2整合Struts 1,允许开发者利用Struts 1已有的投资,同时享受Struts 2...

    struts1+mvn样例程序

    Struts1是一个经典的Java Web开发框架,它引入了模型-视图-控制器(MVC)设计模式,使得...通过这个简单的Hello World示例,开发者可以快速上手,了解Struts1的架构和Maven的工作流程,为进一步学习和实践提供基础。

    struts1教程,struts1入门

    本教程将帮助初学者深入理解Struts1的核心概念、工作原理以及如何使用它来构建动态Web应用程序。 **1. MVC模式** 在深入Struts1之前,首先理解MVC模式至关重要。MVC是一种设计模式,用于将业务逻辑、数据和用户界面...

    Struts1-renym

    **Struts1工作流程:** 1. 用户发送HTTP请求到服务器。 2. ActionServlet捕获请求,根据struts-config.xml中的配置找到对应的ActionMapping。 3. 如果有ActionForm,ActionServlet会将请求参数填充到ActionForm对象...

    struts1完整demo

    通过这个"struts1完整demo",开发者可以了解并实践Struts1的完整工作流程,包括配置、控制器、模型、视图的构建,以及错误处理和国际化等高级特性。这对于理解MVC架构和Java Web开发有着重要的价值,尽管现代Web开发...

Global site tag (gtag.js) - Google Analytics