Struts是在servlet基础上设计的一种框架。下面看一段servlet的web.xml配置的配置。
在其配置文件中可以看出WEB容器会将浏览的每一个地址交给一个对应的servlet类来处理,从而每一个路径都必须对应一个servlet类。在做servlet开发时,其servlet仅仅将路径交给相应servlet类来处理,并没有对页面提交过来的数据进行一些处理,然而在开发时往往要求对页面数据进行一些处理。这是servlet的不足之处,Struts框架弥补了servlet的不足之处。
下面是struts框架总的执行流程:
在做servlet开发时,配置web.xml中可以采用*号通配符的形式来配置浏览器的路径例如:<url-pattern>*.do</url-pattern>,意思是说将以.do结尾的路径都交给这个servlet类来处理。这样就明白了struts框架中.do和ActionServlet了,意思就是说在struts中会将所有以.do结尾的路径的请求都会交给ActionServlet(一个大的servlet类)来处理。在struts框架中每一个具体路径交给ActionServlet时,它会根据struts-config.xml的配置信息找到该路径对应的Action类。从而将这个路径交给其对应Action来处理。
看看下面一张图就会明白struts框架到底做了那些事。
从这张流程图中可以看出struts是怎么做的。
在struts框架中通过反射技术将页面中form提交过来数据封装成一个formbean对象传给 Action类中execute方法中的ActionForm参数(也就是前面提到的ActionForm类),在struts中也提供了直接通过request请求来获得参数,但是既然使用了struts框架就应该使用前面的方法来获得页面数据。
在ActionForm的类中提供了valiedate()方法,它返回一个ActionError类的对象。如果该对象为空,说明校验没有出错,action不会跳转到input视图(也就是struts配置文件中<action></action>标签队中input属性,该属性的作用是校验出错跳转的页面,一般情况下也就是输入数据的页面,这下明白为什么叫input而不叫error了吧)。如果校验成功则把该参数传给对应的Action来处理。在Action处理完这些数据后,会依据要求传到不同页面。这就是一个完整的struts1的实现原理。
在struts的Action类的execute方法中有四个参数,分别是ActionMapping 类、ActionForm类、HttpRequest类、HttpResponse类。实际上这些参数是不需要手动来传值的,由ActionServet传过来的。
ActionMapping类:该类实际上ActionServlet读取struts配置文件中<forward name=”***” path=”***.jsp”></forward>标签生成的一个类,它的作用是把当前Action和<forward></forward>标签对中path属性中的jsp文件关联。在一个Action中可以有多个<forward><forward>标签对。从而得知ActionMapping 可以包含多个forward标签对的信息。
ActionForm类:该类实际上是ActionServlet类读取struts配置文件中的:
<form-bean></form-bean>标签对中type属性(通过反射)生成一个 formbean对象,它实际可以封装页面提交过来数据。
其余两个没有什么好讲的了。
分享到:
相关推荐
Struts1是Apache组织开发的一个基于MVC(Model-View-Controller)设计模式的Web应用框架,它简化了开发...实际开发中,虽然Struts1已经被Struts2和其他现代框架取代,但了解其工作原理对理解和使用其他框架仍然有裨益。
作为struts2的初学者,有时候理解struts框架的原理,网上看图会一头雾水,所以要是能自己体会实现struts框架的整个过程,对理解struts思路会更加清晰一些,这个源码就是自己实现的过程,代码有详细注释
本文将深入探讨Struts1的基本原理,帮助理解其架构设计和工作流程。 **1. MVC架构** MVC模式是软件工程中一种用于分离业务逻辑、数据和用户界面的设计模式。在Struts1中,Model代表应用程序的数据和业务逻辑,View...
Struts2 的重要性在于其成熟的架构设计和实现原理,使得开发人员能够通过组件化的方式开发复杂的企业级应用。 Struts2 的架构设计采用了拦截器(Interceptor)机制,拦截器是一种设计模式,它允许开发者在不修改源...
在深入理解Struts的工作原理之前,我们先来简单回顾一下MVC模式的基本概念: **Model(模型)**:这是应用程序的核心业务逻辑,通常由Java Beans或Enterprise JavaBeans (EJBs)实现,它们处理数据和业务规则。 **...
综上所述,《Struts2技术内幕-深入解析Struts2架构设计与实现原理》这本书详细介绍了Struts2的各个方面,无论是对于初学者还是有经验的开发者,都能从中获取到宝贵的知识,理解Struts2的精髓,提升开发效率和应用...
本书《Struts2技术内幕——深入解析Struts2架构设计与实现原理》结合提供的《struts2基础.chm》资料,为我们提供了深入理解Struts2内部机制的机会。 首先,Struts2的核心在于它的拦截器(Interceptor)机制。拦截器...
根据提供的文件信息,“Struts框架原理图”主要阐述了Struts框架的工作原理、流程以及页面间的跳转机制。为了更好地理解和应用...对于希望构建复杂Web应用的开发者来说,深入理解Struts框架的工作原理是非常必要的。
在本文中,我们将深入探讨如何使用Struts1实现一个在线商城系统,以及涉及的相关技术,如JSP、JavaScript等。 首先,让我们了解Struts1的核心概念。Struts1通过提供一系列的控制器Servlet、配置文件(struts-config...
Struts1是一个经典的Java Web框架,它为开发者提供了一种结构化的MVC(Model-View-Controller)设计模式实现方式,极大地简化了Web...然而,了解Struts1的文件上传对于理解MVC模式和Web开发的基本原理仍然很有价值。
Struts1是一个经典的Java Web开发框架,它在2000年代初期被广泛使用,为MVC(模型-视图-控制器)设计模式提供了一种实现。...这有助于我们理解和掌握Struts1框架的基本工作原理,对于初学者来说是一份宝贵的实践资料。
首先,我们需要理解文件下载的基本原理。在Web应用中,当用户点击一个链接或提交一个表单以下载文件时,服务器会将文件内容以二进制流的形式发送到客户端,浏览器接收到这个流后,将其保存为本地文件。Struts2框架...
为了更好地理解Struts框架的实现原理,你需要对以下几个关键点有深入的理解: 1. MVC模式及其在Struts中的实现。 2. Action和ActionContext的角色及交互。 3. 拦截器的工作原理与自定义拦截器的编写。 4. 结果...
Struts2是一个强大的MVC(模型-...通过实践这个项目,开发者可以深入理解Struts2框架的工作原理,以及如何在实际开发中有效地使用它。同时,这也涉及到Eclipse的项目配置和管理,进一步巩固了Java Web开发的基础技能。
在"我的Struts"(MyStruts)项目中,我们可以看到作者尝试自己实现了一个类似Struts的框架,虽然可能功能不那么完善,但这是一个很好的学习和理解Struts工作原理的机会。通过阅读和分析这个项目,可以深入理解MVC...
在本文中,我们将深入探讨如何使用Struts1实现录入学生信息的功能,同时也会涉及Struts1的核心概念、配置和工作原理。 首先,让我们理解Struts1的基本结构。在Struts1框架中,每个应用程序都有一个`struts-config....
`struts原理.txt`文件可能包含了文字描述,进一步解释了Struts2的核心概念和机制,比如Action的配置、结果映射、拦截器的实现方式,以及Struts2如何整合其他技术,如Spring或Hibernate进行依赖注入和持久化操作。...
Struts2框架作为Java Web开发领域中的一款经典MVC(Model-View-Controller)框架,其工作原理涉及到了一系列复杂...理解Struts2的工作原理,不仅有助于高效开发Web应用,更能够深化对MVC架构的理解,提升整体编程能力。