Struts1工作原理浅析

合集下载

4-struts1原理

4-struts1原理
1、ActionForm 2、Action 3、添加jsp页面 4、配置struts-config.xml
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中

1Struts的工作原理

1Struts的工作原理

1. Struts的工作原理在Struts中,用户的请求一般以*.do作为请求服务名,所有的*.do请求均被指向ActionSevlet,ActionSevlet根据Struts-config.xml中的配置信息,将用户请求封装成一个指定名称的FormBean,并将此FormBean传至指定名称的ActionBean,由ActionBean完成相应的业务操作,如文件操作,数据库操作等。

每一个*.do均有对应的FormBean名称和ActionBean名称,这些在Struts-config.xml中配置。

2. Struts优点与缺点Struts是开源软件,使开发者能更深入的了解其内部实现机制。

Struts 优点:业界"标准"(很多成功案例),学习资源丰富。

Struts的优点主要集中体现在两个方面:Taglib和页面导航。

a、利用Struts提供的taglib可以大大节约开发时间。

b、维护扩展比较方便。

通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。

c、表现与逻辑分离d、表单验证解决了请求数据的验证问题,增强了系统健壮性。

e、便于团队开发Struts缺点:a、大量的使用标签,对于初学者难度较大。

b、ActionForms使用不便、无法进行单元测试(StrutsTestCase只能用于集成)3. Struts提供了几个标签库?都是什么标签库?Struts提供了五个标签库,即:HTML、Bean、Logic、Template和Nested。

HTML 标签用来创建能够和Struts 框架和其他相应的HTML 标签交互的HTML 输入表单Bean 标签在访问JavaBeans 及其属性,以及定义一个新的bean 时使用Logic 标签管理条件产生的输出和对象集产生的循环Template 标签随着Tiles框架包的出现,此标记已开始减少使用Nested 标签增强对其他的Struts 标签的嵌套使用的能力< Html:form>, < html:submit>, < Html:button>, <Html:text>, <Html:select><logic:iterate>, <logic:forward>, <logic:redirect>, <logic:iterate>, <logic:present>,<logic:empty> ... 参考:struts Logic标签说明<bean:write>, <bean:message>, <bean:parameter>, <bean:size>4. Tiles框架是什么?Tiles框架为创建Web页面提供了一种模板机制,它能将网页的布局和内容分离5.谈谈HashMap和Hashtable的区别。

Struts框架详细分析

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源码解读

struts1源码解读

这些只是本人个人的理解,如有误解之处请多指点。

Struts的核心类就是org.apache.struts.action.ActionServlet,它继承于javax.servlet.http.HttpServlet,当我们配置Struts时就要在web.xml文件中配置这个Servlet类。

当ActionServlet初始化时,就调用init()方法。

1、initInternal():初始化Struts框架内在的消息资源,如与系统日志相关的日志、警告和错误消息。

通过调用MessageResources.getMessageResources(internalName)方法生成一个MessageResources类,getMessageResources()方法里先获得一个MessageResourcesFactory对象,然后通过调用MessageResourcesFactory对象的createResources(config)来实现的。

MessageResourcesFactory是一个abstract类,任何继承自它的类都要实现createResources()方法,生成MessageResources对象。

org.apache.struts.util.PropertyMessageResourcesFactory类就是继承了MessageResourcesFactory的一个类,在MessageResourcesFactory定义了一个factoryClass静态属性,protected static StringfactoryClass="org.apache.struts.util.PropertyMessageResourcesFactory" ;而在MessageResourcesFactory.createFactory()静态方法中,通过org.apache.struts.util.RequestUtils的静态方法applicationClass(factoryClass)返回了一个factoryClass变量值对象的class,从而通过此class初例化得到了一个MessageResourcesFactory对象。

struts1 详解

struts1 详解

01struts基础J2EE1.4ServletJspJDBCJTA(Java Transaction API)JPA(Java persistence API)---EJBJavaMailJSTLEJBJNDIModel_1的执行流程Mode2_2的执行流程Struts框架的版本Struts充当表现层的作用。

Struts框架的核心组件ActionServlet总控制器。

核心组件,用于将具体的请求分配到各自处理的Action组件中。

Action具体的业务处理过程组件ActionFrom(FormBean)获取表单参数,并将参数封装到Bean中。

ActionForward用来Action的请求转发ActionMapping帮助控制器[ActionServlet]将请求映射到操作类[Action]Struts-config.xml用来配置Stuts组件的关联关系。

Struts框架的工作流程Struts-config.xml<form-bean name="loginForm" type="com.softfz.login.LoginForm" />name:用来表示actionform的名称type:用来表示actionform的类路径<actionattribute="loginForm" name="loginForm"path="/loginAction" scope="request"type="com.softfz.login.LoginActionAction" validate="true"input="/index.jsp" />attribute:表示ActionFrom的实例放到作用域中的名称.LoginForm aa = new LoginForm();aa.setUsername(request.getParameter("username"));aa.setPassword(request.getParameter("password"));request.setAttribute("attribute的值",aa);name:表示Action和ActionFrom关联的名称。

struts1工作原理

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应用程序。

struts的工作原理

struts的工作原理

struts的工作原理Struts是一个基于Java技术的开源Web应用框架,它的工作原理主要包括以下几个方面:1. 请求处理流程:当客户端发送一个HTTP请求时,Struts框架会先由Servlet容器接收请求并将其传递给Struts的核心控制器DispatcherServlet。

DispatcherServlet负责将请求分发给相应的Action类进行处理。

2. 控制器:Struts的控制器是一个Servlet,它通过配置文件(struts-config.xml)定义了请求的处理方式。

在接收到请求后,控制器根据配置文件中的映射关系,找到对应的Action,并将请求转发给该Action处理。

3. Action处理:Action是Struts中的核心组件,它是一个POJO(Plain Old Java Object),负责接收请求的数据并调用业务逻辑处理。

Action可以通过实现Action接口或继承ActionSupport类来定义相应的处理方法。

4. 视图解析:在Action处理完成后,会返回一个逻辑视图名(logical view name),它表示了请求处理的结果。

Struts框架将根据视图配置文件(struts-config.xml)中的映射关系,找到对应的视图解析器(View Resolver)来解析逻辑视图名,并生成具体的视图页面。

5. 视图渲染:视图渲染是将模型数据填充到具体的视图页面中的过程。

Struts框架支持多种视图技术,如JSP、FreeMarker等。

视图模板通常包含了动态生成的HTML代码以及与模型数据相关的标签或脚本。

6. 响应输出:最后,Struts框架将渲染好的视图页面作为HTTP响应返回给客户端浏览器,并结束请求处理流程。

总结起来,Struts框架的工作原理是通过控制器分发请求给对应的Action进行处理,再将处理结果交给视图解析器解析并渲染成最终的视图页面,最后将视图页面作为HTTP响应返回给客户端。

struts的工作原理

struts的工作原理

struts的工作原理Struts是一个基于Java的开源Web应用程序框架,它遵循了MVC(Model-View-Controller)设计模式,用于简化Web应用程序的开辟过程。

Struts的工作原理涉及到请求的处理、控制流程以及数据流动等方面。

下面将详细介绍Struts的工作原理。

1. 请求处理:当用户在浏览器中输入URL并发送请求时,请求首先到达Web服务器。

Web服务器根据URL的映射规则将请求转发给Struts框架。

2. 控制流程:Struts框架通过一个核心控制器(Controller)来管理请求的处理流程。

核心控制器是一个Servlet,它负责接收请求并将其分发给相应的Action处理。

3. Action处理:Action是Struts框架的核心组件之一,负责处理具体的业务逻辑。

每一个Action对应一个特定的请求,它接收请求参数、执行相应的业务逻辑,并返回结果。

4. 数据流动:在Struts框架中,数据的流动遵循MVC设计模式。

当请求到达Action时,Action会根据请求参数获取所需的数据,并将其存储在一个称为ActionForm的JavaBean中。

5. 视图呈现:视图(View)负责将处理结果展示给用户。

在Struts框架中,通常使用JSP (JavaServer Pages)作为视图技术。

Action会将处理结果传递给JSP,然后JSP负责将结果呈现给用户。

6. 结果返回:在Action处理完成后,它会返回一个结果对象给核心控制器。

结果对象包含了下一步要执行的操作,比如跳转到另一个页面或者返回错误信息。

7. 响应生成:核心控制器根据结果对象中的指示,生成相应的响应并返回给Web服务器。

Web服务器将响应发送给浏览器,最终用户可以看到处理结果。

总结:Struts框架的工作原理可以概括为:用户发送请求到Web服务器,Web服务器将请求转发给Struts框架的核心控制器,核心控制器将请求分发给相应的Action进行处理,Action处理完成后将结果返回给核心控制器,核心控制器根据结果生成响应并返回给Web服务器,最终用户可以看到处理结果。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、引入strutsModel 1结构如图1所示:Mode1 1是一个以JSP文件为中心的模式,在这种模式中JSP页面不仅负责表现逻辑,也负责控制逻辑。

专业书籍上称之为逻辑耦合在页面中,这种处理方式,对一些规模很小的项目如:一个简单的留言簿,也没什么太大的坏处,实际上,人们开始接触一些对自己来说是新的东西的时候,比如,用JSP访问数据库时,往往喜欢别人能提供一个包含这一切的单个JSP页面,因为这样在一个页面上他就可以把握全局,便于理解。

但是,用Model 1模式开发大型时,程序流向由一些互相能够感知的页面决定,当页面很多时要清楚地把握其流向将是很复杂的事情,当您修改一页时可能会影响相关的很多页面,大有牵一发而动全身的感觉,使得程序的修改与维护变得异常困难;还有一个问题就是程序逻辑开发与页面设计纠缠在一起,既不便于分工合作也不利于代码的重用,这样的程序其健壮性和可伸缩性都不好。

Model 2引入了"控制器"这个概念,控制器一般由Servlet来担任,客户端的请求不再直接送给一个处理业务逻辑的JSP页面,而是送给这个控制器,再由控制器根据具体的请求调用不同的事务逻辑,并将处理结果返回到合适的页面。

因此,这个servlet控制器为应用程序提供了一个进行前-后端处理的中枢。

一方面为输入数据的验证、身份认证、日志及实现国际化编程提供了一个合适的切入点;另一方面也提供了将业务逻辑从JSP文件剥离的可能。

业务逻辑从JSP页面分离后,JSP文件蜕变成一个单纯完成显示任务的东西,这就是常说的View。

而独立出来的事务逻辑变成人们常说的Model,再加上控制器Control本身,就构成了MVC模式。

实践证明,MVC模式为大型程序的开发及维护提供了巨大的便利。

二、struts工作原理来自客户的所有需要通过框架的请求,统一由ActionServlet接收(ActionServlet Struts已经为我们写好了,只要您应用没有什么特别的要求,它基本上都能满足您的要求),根据接收的请求参数和Struts配置(struts-config.XML)中ActionMapping,将请求送给合适的Action去处理,解决由谁做的问题,它们共同构成Struts的控制器。

Action则是Struts应用中真正干活的组件,它解决的是做什么的问题,它通过调用需要的业务组件(模型)来完成应用的业务,业务组件解决的是如何做的问题,并将执行的结果返回一个代表所需的描绘响应的JSP(或Action)的ActionForward对象给ActionServlet 以将响应呈现给客户。

这里要特别说明一下的是:就是Action这个类,它不应该包含过多的业务逻辑,而应该只是简单地收集业务方法所需要的数据并传递给业务对象。

实际上,它的主要职责是:校验前提条件或者声明调用需要的业务逻辑方法检测或处理其他错误路由控制到相关视图三、struts运行机制Struts的工作流程:在web应用启动时就会加载,初始化ActionServlet,ActionServlet从struts-config.xml文件中读取配置信息,把它们存放到各种配置对象中,当ActionServlet 接收到一个客户请求时,将执行如下流程.(1)检索和用户请求匹配的ActionMapping实例,如果不存在就返回请求路径无效信息;(2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中;(3)根据配置信息决定是否需要表单验证.如果需要验证,就调用ActionForm的validate()方法;(4)如果ActionForm的validate()方法返回null或返回一个不包含ActionMessage的ActuibErrors对象, 就表示表单验证成功;(5)ActionServlet根据ActionMapping所包含的映射信息决定将请求转发给哪个Action,如果相应的Action实例不存在,就先创建这个实例,然后调用Action的execute()方法;(6)Action的execute()方法返回一个ActionForward对象,ActionServlet在把客户请求转发给 ActionForward对象指向的JSP组件;(7)ActionForward对象指向JSP组件生成动态网页,返回给客户;四、Struts1的安装与基本配置我们主要针对Struts1.1版本进行讲解,这里假定读者已经配置好Java运行环境和相应的Web容器,本文例子所使用的是j2sdk和Tomcat4.1.27。

下面,将采用类似于step by step的方式介绍其基础部分。

安装Struts到/ 下载Struts的安装文件,本文例子使用的是1.1版。

接下来您要进行如下几个步骤来完成安装:1、解压下载的安装文件到您的本地硬盘2、生成一个新的Web应用,假设我们生成的应用程序的根目录在/Webapps/mystruts目录。

在server.xml文件中为该应用新建一个别名如/mystruts3、从第1步解压的文件中拷贝下列jar文件到/Webapps/mystruts/WEB-INF/lib目录,主要文件有如下一些。

struts.jar commons-beanutils.jarcommons-collections.jarcommons-dbcp.jarcommons-digester.jarcommons-logging.jarcommons-pool.jarcommons-services.jarcommons-validator.jar4、创建一个web.xml文件,这是一个基于servlet的Web应用程序都需要的部署描述文件,一个Struts Web应用,在本质上也是一个基于servlet的Web应用,它也不能例外。

Struts有两个组件要在该文件中进行配置,它们是:ActionServlet和标签库。

下面是一个配置清单<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3 //EN" "/dtd/web-app_2_3.dtd"><web-app><servlet><servlet-name>action</servlet-name><servlet-class>org.apache.struts.action.ActionServlet</servlet-class><init-param><param-name>config</param-name><param-value>/WEB-INF/struts-config.xml</param-value></init-param><init-param><param-name>debug</param-name><param-value>2</param-value></init-param><load-on-startup>2</load-on-startup></servlet><servlet-mapping><servlet-name>action</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping><taglib><taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri><taglib-location>/WEB-INF/struts-bean.tld</taglib-location> </taglib><taglib><taglib-uri>/WEB-INF/struts-html.tld</taglib-uri><taglib-location>/WEB-INF/struts-html.tld</taglib-location> </taglib><taglib><taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri><taglib-location>/WEB-INF/struts-logic.tld</taglib-location> </taglib></web-app>上面我们在web.xml中完成了对servlet和标签库的基本配置,而更多的框架组件要在struts-config.xml中进行配置:5、创建一个基本的struts-config.xml文件,并把它放在/Webapps/mystruts/WEB-INF/目录中,该文件是基于Struts应用程序的配置描述文件,它将MVC结构中的各组件结合在一起,开发的过程中会不断对它进行充实和更改。

在Struts1.0时,一个应用只能有一个这样的文件,给分工开发带来了一些不便,在Struts1.1时,可以有多个这样的文件,将上述缺点克服了。

需在该文件中配置的组件有:data-sourcesglobal-execptions form-beans global-forwards action-mappings controller message-resources plug-in配置清单如下:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration1.1//EN""/struts/dtds/struts-config_1_1.d td"><struts-config><message-resources parameter="ApplicationResources" /></struts-config>因为Struts是建立在MVC设计模式上的框架,你可以遵从标准的开发步骤来开发你的Struts Web应用程序,这些步骤大致可以描述如下:1、定义并生成所有代表应用程序的用户接口的Views,同时生成这些Views所用到的所有ActionForms并将它们添加到struts-config.xml文件中。

相关文档
最新文档