Struts 2(一):初识Struts
【很久以前的笔记,后续继续完善】
在了解Struts 2框架之前,首先了解一下Model 1和Model 2架构,以及它们的优缺点。
1.1 Model 1架构模式
Model 1的核心是JSP文件,使用Model 1开发的项目包含大量相互独立的JSP文件和少部分JavaBean。使用Model 1进行开发时,Model 1的程序流程比较容易理解,用户通过表单提交信息给JSP页面,JSP页面接收用户提交的信息后通过JavaBean连接数据库并操作数据库,然后将结果返回给用户,其流程如下图所示:

Model 1非常容易理解,也非常容易实现,但是它有许多缺点:
(1)在JSP页面中充斥着大量的Java脚本代码,前端显示代码与业务逻辑代码混合,修改某一处很容易带来其他错误
(2)代码重用性非常差,JSP页面中充斥着大量功能类似的代码
(3)可扩展性差,前期开发的项目如果需要添加新的功能将是非常复杂
1.2 Model 2架构模式
Model 2是通过面向对象技术实现MVC模式,MVC中包含三个基本组成部分,分别是Model(模型,一般采用JavaBean来实现)、View(视图,一般采用JSP来实现)、Controller(控制器,一般采用Servlet来实现)。Model 2的程序流程相对Model 1来说要稍微复杂一些,首先是用户提交信息给控制器,控制器接收用户提交的信息并决定使用哪个模型完成业务逻辑,然后控制器根据业务处理结果决定使用哪个视图将最终结果返回给用户,其流程如下图所示:

1.3 Struts 2框架简介
在MVC框架出现之前,开发人员都是通过JSP+Servlet+JavaBean的方式来实现MVC模式,但是随着时间的发展,越来越多的问题暴露出来了,其中最重要的就是缺少一个标准,每个社区、公司都有自己的一套标准,很难进行统一开发。Struts框架的出现改变这种格局,开发人员可以通过它为业务应用的每一层提供支持。
Struts框架是Apache基金会中Jakarta项目组的一个开源项目,它基于MVC模式开发,能够帮助Java开发人员快速的通过MVC模式开发Web项目。Struts框架和其他Java架构一样,采用面向对象设计,并将MVC模式运用得淋漓尽致。Struts开源项目的创立者就是希望通过对该项目的研究,改进和提高JSP、Servlet、标签库以及面向对象的技术水准。同时Struts框架是一个开源项目,开发人员可以更深入的了解其内容实现机制。
Struts 2是Struts的换代代产品,Struts 2的体系结构与Struts 1的体系结构的差别是巨大的。Struts 2是以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计使得业务逻辑控制器能够与Selvet API完全脱离开,所以Struts 2可以理解为是WebWork的更新产品。
Struts 2的工作原理可以用下面这张图来描述:

Struts 2的工作细节可以用下面这张图来描述:

Struts 2(一):初识Struts的更多相关文章
- struts(二)——struts框架实现的基本原理
上一篇文章,我们介绍了MVC框架的基本原理,并指出了这个基本框架中存在大量if…else的问题.今天我们来介绍一下struts框架,让struts解决这个问题. 首先,看一下粗略的时序图: Actio ...
- SSH框架之Struts(4)——Struts查漏补缺BeanUtils在Struts1中
在上篇博客SSH框架之Struts(3)--Struts的执行流程之核心方法,我们提到RequestProcessor中的processPopulate()是用来为为ActionForm 填充数据.它 ...
- struts征程:1.初识struts2
1.struts2在开发中所必须用到的jar包导入到项目的lib目录下 2.在web.xml中配置一个过滤器,代码格式如下 <filter> <filter-name>stru ...
- (28)初识struts框架
案例剖析中介绍了一个自己写的mystruts框架,这里开始简单的认识struts框架. 1.先看一个简单的struts开发的例子来熟悉一下流程 Struts就是基于mvc模式的框架! (struts其 ...
- struts2====之=======初识struts
---恢复内容开始--- 1.什么是web框架? 目前应用得较多的三种服务器瑞页面描写技术就是ASP,JSP和PHP.J S P通过在HTMLJî面 文件中嵌入J a v a脚本代码,从而实现动态网页 ...
- SSH框架之Struts(2)——Struts的执行流程之配置文件
上篇我们大致了解了一下採用了Struts框架的web页面运行流程. 接下来的几篇我们通过Struts的源代码来学习一下Struts的内部原理. 当server启动的时候.server会依据配置文件初始 ...
- SSH骨架Struts(1)——Struts执行过程
收养Struts骨架Web应用,以举例的方式介绍的基本流程. 一.实例 Login.jsp,进行系统登录的页面 <form action="login.do" method= ...
- Struts2学习---拦截器+struts的工作流程+struts声明式异常处理
这一节我们来看看拦截器,在讲这个之前我是准备先看struts的声明式异常处理的,但是我发现这个声明式异常处理就是由拦截器实现的,所以就将拦截器的内容放到了前面. 这一节的内容是这样的: 拦截器的介绍 ...
- Struts 入门(一) 搭建Struts环境
eclipse中创建项目 搭建步骤: 1.创建web项目 2.下载导入相关jar包 3.创建并完善相关配置文件 4.创建(控制器)Action 并测试启动 1.文件--新建--动态web项目 给项目起 ...
随机推荐
- LayIM.AspNetCore Middleware 开发日记(五)Init接口实现细节
前言 “一旦开始了就要坚持下去“.为什么本文的第一句话是这么一句话呢,因为我经常就是开头轰轰烈烈,结果越来越枯燥,就不想做下去了.但是版图就放弃又那么不甘心,继续加油吧. 吐槽完毕,进入正题.在上一篇 ...
- DDL-常见的约束
一.常见的约束NOT NULL:非空,该字段的值必填UNIQUE:唯一,该字段的值不可重复DEFAULT:默认,该字段的值不用手动插入有默认值CHECK:检查,mysql不支持PRIMARY KEY: ...
- [iOS]app的生命周期
对于iOS应用程序,关键的是要知道你的应用程序是否正在前台或后台运行.由于系统资源在iOS设备上较为有限,一个应用程序必须在后台与前台有不同的行为.操作系统也会限制你的应用程序在后台的运行,以提高电池 ...
- web相关文件加载顺序
WEB相关文件的加载顺序 一. 1.启动一个WEB项目,WEB容器会先去读取它的配置文件web.xml,读取<context-param>和<listener>两个节点. ...
- MySQL进阶(视图)---py全栈
目录 mysql进阶(视图)---py全栈 一.什么是视图? 二.视图的特性 三.视图的优点 四.使用场合 五.视图基本操作 六.案例 mysql进阶(视图)---py全栈 一.什么是视图? 视图是从 ...
- 两种方法实现Linux不活动用户登录超时后自动登出
在平常的工作中,windows系统使用的比较多一些,身边的很多同事都会对自己的电脑进行一些个性化设置,比如离开一段时间后自动锁屏.自动关闭屏幕.自动注销当前登录等.在windows下可以这样操作,那么 ...
- 四、spring成长之路——springIOC容器(下)
目录 5.spring注解开发(Spring扩展知识) 5.1定义配置类:@Configuration 声明一个类为IOC容器 @Bean定义一个Bean 5.2.按照条件进行注入 5.3.@Impo ...
- echarts踩坑---容器高度自适应
在echarts中,若设置固定高度,当柱状图数据过多时会出现数据相互挤压,给用户的体验十分糟糕,可以通过给容器设置自适应高度,然后通过getDom()的方法解决此问题. 具体解决办法如下: <d ...
- TP5.0中多图上传文件名重复问题
最近在做项目的时候出现了一个问题,这里记录一下: 问题: 使用TP5.0框架自带的文件上传方法后,发现多图上传可能会出现文件名重复的问题. 问题代码: 找到TP5框架上传文件命名方法,/thinkph ...
- Python-type函数使用