struts1的工作原理
4-struts1原理

4
调试运行
完成的项目
使用Struts实现加法器
1 给项目添加Struts支持
新建Web项目 在项目节点 上单击右键 添加Struts支持
点选 MyEclipse Add Struts Capabilities
1
Struts原理1、页面提交的数据封装到
Controller (控制器) ActionForm中 2、通过请求路径查找Strutsconfig.xml中Action的配置,找 到并调用对应的Action
ActionServlet
2 6
开发时只需关注: · 两个核心组件: ActionForm [Add]Action · 一个配置文件
使用Struts实现加法器
3
添加Struts组件
3. 添加JSP页面
根据 Action 的 Forwords属性 的设置,添加add.jsp和 add_result.jsp两个页面 采用Struts提供的 对应前面Action html:form标签 的path属性
/ch02/add.jsp
<html:form action="/add" method="post"> 第一个数: <input type="text" name="firstNumber"/> 第二个数: <input type="text" name="secondNumber"/> <input type="submit" name="submitAdd" value="加"/> /ch02/add_result.jsp </html:form> ActionForm保存在 request或session中
struts1入门教程

1.什么是Struts1基于MVC的轻量级,WEB应用框架2.struts1工作原理a> 初始化: struts框架的总控制器ActionServlet是一个Servlet,它在web.xml中配置成自动启动的Servlet,在启动时总控制器会读取配置文件(struts-config.xml)的配置信息,为struts中不同的模块初始化相应的对象.b> 发送请求: 用户提交表单或通过URL向WEB服务器提供请求,请求的数据用HTTP协议传给WEB服务器.c> form填充: Struts的总控制器ActionServlet在用户提交请求时将数据放到对应的form对象中的成员变量中d> 派发请求: 控制器根据配置信息对象ActionConfig将请求派发到具体的Action,对应的formBean一并传给Action的excute()方法e> 处理业务: Action一般只包含一个excute()方法,它负责执行相应的业务逻辑(调用其它的业务模块)完毕后返回一个ActionForward对象.服务器通过ActionForward对象进行转发工作f> 返回响应: Action将业务处理的不同结果返回一个目标相应对象给总控制器g> 查找响应: 总控制器根据Action处理业务返回的目标响应对象,找到对应的资源对象,一般情况下为jsp页面h> 响应用户: 目标响应对象将结果传递给资源对象,将结果展现给用户struts1原理图:3.开发指南准备工作:1>到/下载struts的安装文件struts-1.3.10-all.zip2>解压struts-1.3.10-all.zip3>创建一个web project,并将上步中解压的lib文件下的jar包引进去4>配置web文件5>新建struts-config.xml6>创建数据库(mysql4. 项目开发4.1 页面制作index.jsp4.2 在struts-config.xml中需要修改4.3 创建com.javakc.struts1.action.StudentAction 业务类4.4 创建com.javakc.struts1.action.StudentForm类1)继承org.apache.struts.action.ActionForm类2)属性名要和表单中的属性名一一对应,并生成其对应的getter、setter方法4.5 在StudentAction中处理提交的请求1) 通过form表单或超链接可以将用户的请求提交到服务器进行处理,在系统架构中,服务器处理用户请求的场地就是StudentAction类的execute方法.4.6 在student_info.jsp中展示数据。
Struts框架详细分析

Struts框架详细分析Struts框架是一个开源的Java Web应用程序框架,用于构建基于MVC(Model-View-Controller)设计模式的Web应用程序。
它提供了一种结构化的方式来组织和管理Web应用程序的代码,使得开发人员可以更加高效地开发和维护应用程序。
本文将详细分析Struts框架的各个组成部分以及其工作原理。
一、框架概述Struts框架的核心思想是将应用程序分解为不同的层次:模型层(Model)、视图层(View)和控制层(Controller)。
模型层负责处理业务逻辑和数据存取,视图层负责展示用户界面,控制层负责接收用户的请求并调度合适的模型层处理。
通过这种分层的方式,Struts框架可以实现代码的解耦和重用。
二、组成部分1. 控制器(Controller)控制器是Struts框架的核心组件,负责接收用户请求并将其调度到合适的处理模块。
在Struts框架中,控制器通常由一个Servlet实现,称为ActionServlet。
ActionServlet会根据用户请求中的URL路径选择合适的Action类来处理请求。
2. 动作类(Action)动作类是处理用户请求的核心业务逻辑单元,它负责与模型层进行交互,并根据请求的内容进行相应的处理。
Struts框架提供了一个基本的Action类,称为ActionSupport,开发人员可以继承该类并实现自己的业务逻辑。
3. 视图(View)视图用于展示用户界面,通常是一个JSP页面。
在Struts框架中,视图可以通过标签库和表达式语言与模型层进行交互,动态地展示数据和接收用户输入。
4. 模型(Model)模型层主要负责处理业务逻辑和数据存取。
在Struts框架中,开发人员可以选择使用传统的JavaBean作为模型层,也可以使用更高级的框架,如Hibernate或MyBatis。
5. 配置文件Struts框架使用配置文件来管理应用程序的各个组件之间的关系。
Struts1_个人整理笔记

目标:熟练运用当前流行的java开源框架:Struts、Hibernate以及Spring来构建灵活、易于扩展的多层Web应用程序。
C/S:以数据库为中心B/S:多层架构才是真正的目的B/S多层架构将显示、业务运算、数据库等功能完全分离,杜绝彼此的耦合与影响,从而实现松耦合和良好的可维护性。
✧呈现层(UI Layer/Presentation Layer)⏹Struts✧业务逻辑层(Business Layer)⏹Spring✧持久化层(Persistence Layer)⏹HibernateC/S两层模式,每个客户端需要安装软件,但C/S做的界面灵活性比较好。
何谓两层模式,因为很多业务逻辑都放到了前端(界面里都混了很多业务逻辑),另一方面数据库里有很多存储过程或触发器。
业务逻辑都用存储过程来实现,这是一个弊端Java就不会把业务逻辑放在存储过程里,一般将业务逻辑封装在中间件(java)中。
当然java 有时也会将业务逻辑放在存储过程里,这是从性能上来考虑,因为放在存储过程里,性能肯定会高一些。
B/S 三层模式,客户端通过浏览器来访问,不需要安装软件。
分层就来了,分层带来的影响就是粒度变细了,耦合度变低,复用度就提高了,扩展性能也好了,维护性也好了。
切换工作区间 file-switch Workspace WebRoot-New-other select a wizard MyEclipse-web-JSP(Basic templates)基本模板在Servlet中拿jsp页面的值,使用getParamter()在jsp页面中拿servlet值,使用getAttribute()当在web客户端发送请求时(点击submit),将请求传到web server(tomcat),tomcat负责找到你要请求的servlet(此处为TestServlet),此时servlet做什么呢,首先String userName = req.getParameter("userName");得到表单数据(通过http Request),然后UserManager userManager = new UserManager();调用业务逻辑,当然,业务逻辑方法将表单的值返回給servlet,返回查询结果后,servlet将结果设置到Request里面req.setAttribute("otherList", userList); 把userList设置到属性中,下一个页面才拿得到,接下来servlet会选择视图,将查询结果显示出来。
struts1工作原理

struts1工作原理
Struts 1是一个基于模型-视图-控制器(Model-View-Controller,MVC)架构的Web应用程序框架。
它的工作原理如下:
1. 请求分发:当用户发送一个HTTP请求时,Struts的控制器
组件(ActionServlet)接收并拦截这个请求。
2. 配置查找:ActionServlet查找配置文件struts-config.xml,该
文件定义了请求路径与对应的控制器以及其他配置信息。
3. 控制器执行:根据请求路径,ActionServlet实例化并执行对
应的控制器(Action)组件。
控制器处理请求参数和业务逻辑,并根据需要访问模型(Model)组件来获取、修改数据。
4. 视图生成:控制器完成处理后,将结果数据传递给视图(JSP页面)组件,用于生成动态的HTML响应。
5. 响应发送:视图生成完毕后,ActionServlet将响应返回给客
户端浏览器,完成整个请求-响应周期。
在这个工作过程中,Struts 1还提供了其他重要的组件和功能,如表单验证、国际化支持、异常处理等,以及许多预定义的标签库和工具类,帮助开发者更方便地构建和管理Web应用程序。
三大框架的工作原理

struts1的工作原理图:1.初始化:struts框架的总控制器ActionServlet是一个Servlet,它在web.xml中配置成自动启动的Servlet,在启动时总控制器会读取配置文件(struts-config.xml)的配置信息,为struts中不同的模块初始化相应的对象。
(面向对象思想)2.发送请求:用户提交表单或通过URL向WEB服务器提交请求,请求的数据用HTTP协议传给web服务器。
3.form填充:struts的总控制器ActionServlet在用户提交请求时将数据放到对应的form对象中的成员变量中。
4.派发请求:控制器根据配置信息对象ActionConfig将请求派发到具体的Action,对应的formBean一并传给这个Action中的excute()方法。
5.处理业务:Action一般只包含一个excute()方法,它负责执行相应的业务逻辑(调用其它的业务模块)完毕后返回一个ActionForward对象。
服务器通过ActionForward对象进行转发工作。
6.返回响应:Action将业务处理的不同结果返回一个目标响应对象给总控制器。
7.查找响应:总控制器根据Action处理业务返回的目标响应对象,找到对应的资源对象,一般情况下为jsp页面。
8.响应用户:目标响应对象将结果传递给资源对象,将结果展现给用户。
AOP原理篇:为什么用AOP?1.为了方便,看一个国外很有名的大师说,编程的人都是“懒人”,因为他把自己做的事情都让程序做了。
用了aop能让你少写很多代码,这点就够充分了吧。
2.就是为了更清晰的逻辑,可以让你的业务逻辑去关注自己本身的业务,而不去想一些其他的事情,这些其他的事情包括:安全,事物,日志等。
AOP原理:spring用代理类包裹切面,把他们织入到Spring管理的bean中。
也就是说代理类伪装成目标类,它会截取对目标类中方法的调用,让调用者对目标类的调用都先变成调用伪装类,伪装类中就先执行了切面,再把调用转发给真正的目标bean。
struts1
Struts1学习报告Struts 1的基本框架:Struts 1框架以ActionServlet(struts-config.xml)作为核心控制器,整个应用由客户端请求驱动。
当客户端向Web应用发送请求时,请求将被Struts 1的核心控制器ActionServlet拦截,ActionServlet根据请求决定是否需要调用业务逻辑控制器处理用户请求(实际上,业务逻辑控制器还是控制器,它只是负责调用模型来处理用户请求),当用户请求处理完成后,其处理结果通过JSP呈现给用户。
对于整个Struts 1框架而言,控制器就是它的核心,Struts 1的控制器由两个部分组成:核心控制器和业务逻辑控制器。
其中核心控制器就是ActionServlet,由Struts 1框架提供;业务逻辑控制就是用户自定义的Action,由应用开发者提供。
对于大部分用户请求而言,都需要得到服务器的处理。
当用户发送一个需要得到服务器处理的请求时,该请求被ActionServlet拦截到,ActionServlet将该请求转发给对应的业务逻辑控制器,业务逻辑控制器调用模型来处理用户请求;如果用户请求只是希望得到某个URL资源,则由ActionServlet将被请求的资源转发给用户。
程序运行流图:Web.xml<servlet><servlet-name>action</servlet-name> 配置一个serlvet,名为action,类名org。
apache。
struts。
action。
ActionServlet<servlet-class>org.apache.struts.action.ActionServlet</servlet-class><init-param> 定义<param-name>config</param-name> servlet的初始化<param-value>/WEB-INF/struts-config.xml</param-value> 参数config参数用来设</init-param> 置struts配置文件的路径<init-param> 调试的级别<param-name>debug</param-name> 0(off) 1(最不严格)直到6(最严格)<param-value>3</param-value> 大多数struts在0到3之间</init-param><init-param> 用来处理应用配置文件的Digester的<param-name>detail</param-name> 调试级别,设置情况和debug类似<param-value>3</param-value></init-param><load-on-startup>0</load-on-startup> 设置该serlvet在WEB应用启动时被加</servlet> 载的次序,数值越小就越先加载,若为负或没设置就在首次访问serlvet加载<servlet-mapping><servlet-name>action</servlet-name> 配置一个servlet映射, *.do表明ActionServlet<url-pattern>*.do</url-pattern> 只是负责处理所有以.do结尾的URL,</servlet-mapping> 可以更改,推荐使用*.dostruts-config.xml(系统核心控制器)<struts-config><data-sources /> 配置应用所需的数据源<form-beans> 配置多个ActionForm Bean<form-bean name="loginForm" type="com.struts.form.LoginForm"></form-bean></form-beans> 配置一个ActionForm Bean,name属性用于设置ActionFormBean的名字,struts框架通过该名字引用它,type属性用来指定类的全名<global-exceptions /> 配置异常处理<global-forwards /> 配置全局转发关系<action-mappings> 配置多个Action映射<action 配置一个Action映射attribute="loginForm" 设置一个与Action相关的ActionForm Bean在指定范围内的属性key,供request.getAttribute(“loginForm”)的形式访问input="/login.jsp" 包含输入表单的URL,当表单验证数败,将请求转发至此name="loginForm" 指定一个在form bean中定义过的与该Action关联的名字path="/login" 指定访问该Action的路径,必须以”/”开头,无扩展名scope="request" 指定ActionForm Bean 的存在范围,默认值为sessiontype="com.struts.action.LoginAction"> 指定该Action的类全名<forward name="success" path="/index.jsp"></forward> 为该Action设置一个请</action> 求转发</action-mappings><message-resources parameter="com.yourcompany.struts.ApplicationResources" />为struts框架设置一个消息资源绑定</struts-config>Action代码:LoginAction.java(业务逻辑控制器)public class LoginAction extends Action{//处理用户请求的execute方法public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response){//获取封装用户请求参数的ActionForm对象//获取LoginForm的实例//将ActionForm强制转换LoginForm//当用户名为scott,密码为tiger时返回成功if ("scott".equals(loginForm.getUsername())&& "tiger".equals(loginForm.getPassword())){//处理成功,返回一个ActionForward对象return mapping.findForward("success");}else{//处理失败,返回一个ActionForward对象return mapping.findForward("success");}}}其中ActionMapping mapping 包含了这个Action的配置信息,与struts-config.xml文件中的<action>元素相对应Actionform form 包含了经过验证的用户输入表单数据HttpServletRequest request 当前的HTTP请求对象HttpServletResponse response当前的HTTP响应对象LoginForm Bean 用来封装数据信息。
struts1工作原理
struts1工作原理Struts1工作原理1. 什么是Struts1Struts1是一个开源的Java Web应用框架,用于开发MVC (Model-View-Controller)模式的Web应用程序。
它提供了一种结构化的方式来组织、管理和处理Web应用程序的请求和响应。
2. MVC模式简介什么是MVC模式MVC模式是一种软件设计模式,用于将一个应用程序的逻辑分为三个独立的部分:模型(Model)、视图(View)和控制器(Controller)。
每个部分都有不同的职责,有助于实现应用程序的解耦和可重用性。
MVC模式在Struts1中的应用在Struts1中,模型(Model)负责处理业务逻辑和数据,视图(View)负责表示用户界面,而控制器(Controller)负责协调模型和视图之间的交互。
3. Struts1的工作原理Struts1的工作原理可以分为以下几个步骤:配置Struts1环境首先,需要在Web应用程序的配置文件中配置Struts1环境。
通常使用一个名为``的文件来定义应用程序的相关设置,例如控制器的映射和配置文件路径等。
客户端发送请求当客户端发送一个请求时,请求会被发送到Web服务器。
通常,请求的URL中会包含一个特定的后缀,用于指示该请求需要由Struts1来处理。
Struts1的Front Controller接收请求Struts1的Front Controller是一个核心组件,它负责接收所有的请求。
当一个请求到达时,Front Controller会根据配置文件中的映射规则,将请求路由到相应的Action。
Action处理请求一旦请求被路由到相应的Action,Action就会开始处理该请求。
它会根据请求的参数和业务逻辑的需要,执行相应的操作。
例如,从数据库中获取数据、处理用户输入、调用其他模块等。
Action返回结果一旦Action完成了请求的处理,它会生成一个结果对象并将其返回给Struts1的Front Controller。
浅析Struts体系结构与工作原理(图)
浅析Struts体系结构与工作原理(图)基本概念Struts是Apache 基金会Jakarta 项目组的一个Open Source 项目它采用MVC模式能够很好地帮助java 开发者利用J EE开发Web应用和其他的java架构一样 Struts 也是面向对象设计将MVC模式分离显示逻辑和业务逻辑的能力发挥得淋漓尽致Structs 框架的核心是一个弹性的控制层基于如Java Servlets JavaBeans ResourceBundles与XML等标准技术以及Jakarta Commons 的一些类库Struts有一组相互协作的类(组件)Serlvet 以及jsp tag lib组成基于struts构架的web应用程序基本上符合JSP Model 的设计标准可以说是一个传统 MVC设计模式的一种变化类型Struts有其自己的控制器(Controller)同时整合了其他的一些技术去实现模型层(Model)和视图层(View)在模型层 Struts可以很容易的与数据访问技术相结合如JDBC / EJB 以及其它第三方类库如Hibernate / iBATIS 或者 Object Relational Bridge(对象关系桥) 在视图层 Struts能够与JSP 包括 JSTL 与 JSF 以及 Velocity 模板 XSLT 与其它表示层技术Struts 为每个专业的Web 应用程序做背后的支撑帮助为你的应用创建一个扩展的开发环境Struts的体系结构与工作原理MVC即Model View Controller的缩写是一种常用的设计模式 MVC 减弱了业务逻辑接口和数据接口之间的耦合以及让视图层更富于变化 MVC的工作原理如下图所示图Struts 是MVC的一种实现它将 Servlet和 JSP 标记(属于 J EE 规范)用作实现的一部分 Struts继承了MVC的各项特性并根据J EE 的特点做了相应的变化与扩展 Struts的体系结构与工作原理如下图所示图从图中我们可以知道 Struts的体系结构包括模型(Model)视图(View)和控制器(Controller)三部分下面让我们从MVC 角度来看看struts的体系结构(Model )与工作原理)模型(Model)在Struts的体系结构中模型分为两个部分系统的内部状态和可以改变状态的操作(事务逻辑)内部状态通常由一组Actinform Bean表示根据设计或应用程序复杂度的不同这些Bean可以是自包含的并具有持续的状态或只在需要时才获得数据(从某个数据库)大型应用程序通常在 ... 内部封装事务逻辑(操作)这些 ... 可以被拥有状态信息的bean调用比如购物车bean 它拥有用户购买商品的信息可能还有checkOut() ... 用来检查用户的信用卡并向仓库发定货信息小型程序中操作可能会被内嵌在Action类它是struts框架中控制器角色的一部分当逻辑简单时这个 ... 很适合建议用户将事务逻辑(要做什么)与Action类所扮演的角色(决定做什么)分开)视图(View)视图主要由JSP建立struts包含扩展自定义标签库(TagLib)可以简化创建完全国际化用户界面的过程目前的标签库包括 Bean Tags HTML tags Logic Tags Nested Tags 以及Template Tags等)控制器(Controller)在struts中基本的控制器组件是ActionServlet类中的实例servelt 实际使用的servlet在配置文件中由一组映射(由ActionMapping类进行描述)进行定义对于业务逻辑的操作则主要由Action ActionMapping ActionForward这几个组件协调完成的其中Action 扮演了真正的业务逻辑的实现者ActionMapping与ActionForward 则指定了不同业务逻辑或流程的运行方向 struts config xml 文件配置控制器Struts体系结构中的组件图上图显示了 ActionServlet (Controller) Actionform (form State) 和 Action (Model Wrapper) 之间的最简关系体系结构中所使用的组件如下表ActionServlet 控制器ActionClass 包含事务逻辑Actionform 显示模块数据ActionMapping 帮助控制器将请求映射到操作ActionForward 用来指示操作转移的对象ActionError 用来存储和回收错误Struts标记库可以减轻开发显示层次的工作Struts配置文件struts config xml Struts配置文件struts config xml 我们默认可以在目录WEB INFstruts config xml找到这个文件文件的配置包括全局转发ActionMapping类Actionform bean 和JDBC数据源四个部分)配置全局转发全局转发用来在JSP页之间创建逻辑名称映射转发都可以通过对调用操作映射的实例来获得例如NuW=mactionMappingInstace findForward( logicalName ); 全局转发的例子<global forwards><forward name= bookCreated path= /BookView jsp /></global forwards>属性描述Name 全局转发的名字Path 与目标URL的相对路径)配置ActionMapping ActionMapping对象帮助进行框架内部的流程控制它们可将请求URI 映射到Action类并且将Action类与Actionform bean相关联ActionServlet在内部使用这些映射并将控制转移到特定Action类的实例所有Action类使用perform() ... 实现特定应用程序代码返回一个ActionForward对象其中包括响应转发的目标资源名称例如<action mappings><action path= /createBook type= BookAction name= bookform scope= request input= /CreateBook jsp ></action><forward name= failure path= /CreateBook jsp /><forward name= cancel path= /index jsp /></action mappings>属性描述Path Action类的相对路径Name 与本操作关联的Action bean的名称Type 连接到本映射的Action类的全称(可有包名)Scope Actionform bean的作用域(请求或会话)Prefix 用来匹配请求参数与bean属性的前缀Suffix 用来匹配请求参数与bean属性的后缀attribute 作用域名称className ActionMapping对象的类的完全限定名默认的是apache struts action ActionMapping input 输入表单的路径指向bean发生输入错误必须返回的控制unknown 设为true 操作将被作为所有没有定义的ActionMapping的URI的默认操作validate 设置为true 则在调用Action对象上的perform() ... 前 ActionServlet将调用Actionform bean的validate() ... 来进行输入检查通过<forward >元素可以定义资源的逻辑名称该资源是Action类的响应要转发的目标属性描述Id ID ClassName ActionForward类的完全限定名默认是apache struts action ActionForward Name 操作类访问ActionForward时所用的逻辑名Path 响应转发的目标资源的路径redirect 若设置为true 则ActionServlet使用sendRedirec ... 来转发资源)配置Actionform Bean ActionServlet使用Actionform来保存请求的参数这些bean的属性名称与HTTP请求参数中的名称相对应控制器将请求参数传递到Actionform bean的实例然后将这个实例传送到Action类例子<form beans><form bean name= bookform type= Bookform /></form beans>属性描述Id ID className Actionform bean的完全限定名默认值是apache struts action ActionformBean Name 表单bean在相关作用域的名称这个属性用来将bean与ActionMapping进行关联Type 类的完全限定名)配置JDBC数据源用<data sources>元素可以定义多个数据源属性描述Id ID Key Action类使用这个名称来寻找连接Type 实现JDBC接口的类的名称下面属性需要<set property>元素定义在Struts 版本中已不在使用但你可用<data source>元素例如 | <data sources><data source id= DS key= conPool type= apache struts util GenericDataSource<set property id= SP autoCommit= true description= Example Data Source Configuration driverClass= test mm mysql Driver maxCount= minCount= url= jdbc:mysql://localhost/test user= struts password= ghq /><data source/></data sources>属性描述desciption 数据源的描述autoCommit 数据源创建的连接所使用的默认自动更新数据库模式driverClass 数据源所使用的类lishixinzhi/Article/program/Java/ky/201311/28531。
struts1笔记
1:学习struts之前首先简单的了解一下struts是什么和为什么使用strutsStruts1是apache软件基金组织jakarta项目的一个子项目,struts的前身是CraigR.McClanahan编写的jsp model2架构。
在所有的MVC框架中,出现最早的应用最广泛的就是struts框架。
它主要是采用servlet和jsp技术来实现的,Struts是基于sun javaee平台的MVC框架,它采用的MVC模式“分离现实逻辑和业务逻辑”的功能发挥的淋漓尽致。
广泛使用struts原因:a:建立在MVC这种公认模式上的。
Struts在M、V、C上都有涉及。
但它主要是提供一个好的控制器和一套定制的标签库上。
(所以具有MVC的一系列优点,如:结构层次分明,高可以重用性、增加了程序的健壮性和伸缩性,便于开发与涉及分工,提供了集中统一的权限控制、校验、国际化、日志等)b:开源项目,得到了包括他的发明者Craig R.McClanahan在内的一些程序大师和高手持续而细心的呵护,并接受了实战的检验,使其功能越来越大,体系日臻完善。
C:与其他技术和框架具有很好的融合性,如:spring 、hibernate等D:大大提高了开发速度2:struts原理:Model部分:Struts的Model部分由ActionForm和JavaBean组成。
其中ActionForm用于封装用户请求参数,所有的用户请求参数由系统自动封装成ActionForm对象;该对象被ActionServlet 转发给Action;然后Action根据ActionForm离得请求参数处理用户请求。
JavaBean则封装了底层的业务逻辑,包括数据库访问等,在更复杂的应用中JavaBean多代表的并非是一个简单的JavaBean,可能是EJB最贱或其他业务逻辑组件。
(注意:ActionForm并不属于model 层,而是属于控制层)View部分Struts的View部分采用JSP实现。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、struts1体系结构:
客户端发送请求(Http Request),被struts1的核心控件器ActionServlet接收,ActionServlet 根据truts-config.xml里的映射关系找到对就的Action,若找不到就返回500错误到JSP页面。
若有就在Action里的excute()方法里执行相应的逻辑操作,比如调用Model层的方法,然后通过ActionForward,跳转到对应的JSP页面。
2、struts1流程图:
struts1的几个核心组件是值得我们注意的:
1 、ActionServlet(核心控制器)。
2、RequestProcessor类(处理异常的核心组件)。
3、ActionForm(接收页面中传过的数据)。
4、Action(是控制器,主要是从ActionForm中接收页面传进来的数据,然后进行逻辑处理)。
5、ActionForward(页面跳转,跳转到jsp组件)。
6、ActionMapping(配置每个Action所对应的映射关系)。
现在我们来说一下struts1执行form提交的流程吧!
1、ActionServlet是在web.xml中配置的一个自动启动项。
当web服务器启动时,也就同时实例化了ActionServlet类,ActionServlet会去初始化struts-config.xml的配置信息,并将其加载到内存中,并会去实例化action-bean,action-form等对象。
2、当ActionServlet接收到来自客户端的请求时,就会去检索和去请求相匹配ActionMapping 实例,如果没有找到则返回500错误.
3、如果找到了就检查对应的ActionForm实例是否存在,
a、如果存在,先把该实例相关数据reset清空一下,然后就把用户提交的表单数据填充到ActionForm实例中.
b、如果不存在,就创建一个ActionForm对象,再把用户提交的表单数据填弃到ActionForm 实例中
4、接着,再根据配置,看看是否要对表单进行验证(validate),如果需要验证,则调用ActionForm的validate()方法对表单进行验证.
a、如果验证没通过,则返回错误信息。
b、如果不需要验证,或者需要验证但validate方法返回null或者是返回一个不包含ActionMessage的ActionErrors对象的话,表明验证成功。
则继续下一步
5、ActionServlet根据ActionMapping实例所包含的映射信息决定将请求发送给哪个Action,如果对应的Action实例不存在,则创建该Action的实例,然后调用该Action的execute()方法
6、执行完Action实例的execute()方法后,该方法会返回一个ActionForward对象
7、ActionServlet再把客户端发过来的请求,转发给ActionForward对象所指向的JSP组件
8、ActionForward所指向的JSP组件再生成动态网页,送回给客户端。