struts的由来

当学习或工作时,有些同学会谈到熟悉struts、hibernate、spring等等框架,貌似熟悉这些框架是精通java的表现,但是我们应该首先弄明白为什么要学框架?是为了学习而学习?还是为了工作而学习?

就拿struts框架举例子,为什么要学习struts框架?

要了解struts框架,首先必须理解mvc是怎么回事?mvc又是如何冒出来的呢?

开始写程序的主要的目的是为了实现功能,至于如何设计不管。也就是过程不重要,结果重要。所以当时的设计思路就是Model1,什么是Model1?jsp直接调用后台。

结构图如下:

这种情况:把页面和业务逻辑代码都写到一块,写在jsp文件中,也就是在文件表头有一大部分java代码。

但是这种设计模式,随着业务发生的改变,jsp文件需要大批量的改动。缺点是耦合度太强。

紧接着,为了减少jsp与后台业务逻辑的关联度,逐渐地把jsp文件中的大部分java代码提取出来,放到一个类中,这样就形成了Model2。其中提取java代码放到类就是Servlet。

Model2的结构图如下:

这种情况:jsp的职责减轻,只用来显示界面。而接受界面的参数转化的操作则放到Servlet中。

其实Model2就是典型的MVC。

Model2中优点是每层职责明确清晰,使界面和数据分离。

缺点是:若是完全实现MVC,则增加了编写的复杂度。

比如:开始我们遇到转向问题,Servlet转到jsp中,我们都已经写死了,比如程序中:

request.getRequestDispatcher("/flowcard/flow_card_maint.jsp").forward(request,
response);

若是修改jsp文件名称时,还需要修改Servlet。

并且表单上的获取的数据都是字符串,我们必须根据需要将字符串手动转化。

而这些问题,使用struts框架一扫而光,至于表单数据类型的转化,错误的处理,表单的转向,struts做了很好的封装。

struts框架很好地实现了MVC模式,封装了很多东西,不需要我们程序员手动封装操作。因此,struts为了帮助减少我们用mvc设计开发的时间。

那无论我们用model1或这model2,或者struts,我们在设计时需要什么呢?

第一:页面;用来展示给客户的载体。

第二:数据:页面展示需要的内容来源。

第三:处理数据的场合:如何处理页面所需的数据呢?

其实这三点就是我们所说的MVC。

页面--V;数据--M;处理数据的场合--C

struts是web层的进一步划分。层内容的划分。那struts的中的m、v、c又代表什么呢?

其中的v就是单纯的界面;

而其中c就是struts中的核心控制类;

而m表现了两个方面:

  • 系统的状态

  • 系统状态改变的操作。

那struts中mvc对应的组件:

  • v:由jsp展现。其中可以使用struts中标签库。

  • c:struts中的核心控制类:ActionServlet

  • m:与表单上数据对应的ActionForm以及对ActionForm的操作Action。

那struts中是如何实现MVC呢?

ActionServlet是struts中的核心类,用户需要完成的Action以及ActionForm。并且在配置文件中进行配置以便struts识别。struts根据配置文件中的配置进行调用。

时间: 2024-12-20 14:23:05

struts的由来的相关文章

SSH框架--struts深入详解(一)

学习了struts,但是对于它的由来,以及为什么使用action和struts.xml的方式而不采用以前的servlet方式,有些疑问,到底之前的方式有什么弊端,struts又给我们带来了什么便利? 下面一一为大家解答! struts的由来: 随着JSP与Servlet 技术大量应用于以Web为基础的应用程序,为了提升Web 应用程序可维护性与重复使用性,Java开发人员提出了一些较佳的开发模式.比较常见的两种JSP应用架构分别为Model1 与Model 2.详情参见(JAVA学习篇--JAV

【SSH 基础】SSH框架--struts深入具体解释(一)

学习了struts,可是对于它的由来,以及为什么使用action和struts.xml的方式而不採用曾经的servlet方式.有些疑问,究竟之前的方式有什么弊端,struts又给我们带来了什么便利? 以下一一为大家解答! struts的由来: 随着JSP与Servlet 技术大量应用于以Web为基础的应用程序,为了提升Web 应用程序可维护性与反复使用性.Java开发者提出了一些较佳的开发模式.比較常见的两种JSP应用架构分别为Model1 与Model 2.详情參见(JAVA学习篇--JAVA

简单的谈一下struts2入门

1:Struts的由来 Struts1 - > 2000~2007 火,第一个非常成功的MVC框架 . 高耦合.高度的依赖于Servlet容器. 2003开始就有了很多的其他的MVC框架 Webwork  - struts2 Jsf - SUN springmvc 记住关键的一个概念就是Struts2是webwor升级版本 下载struts2 http://struts.apache.org/ Apache Struts is a free, open-source, MVC framework

struts零配置的简单实现(一)

所需要的包: struts2-config-browser-plugin-2.3.15.2.jar struts2-convention-plugin-2.3.15.2.jar 要注意的是,添加这两个jar包之后也要把相关的struts的jar包换成相应的版本,xwork-core也要是相应的版本,不然就是各种报错 struts.xml的配置如下: <!-- 设置映射页面的路径 -->   <constant name="struts.convention.result.pat

(一)java三大技术介绍及java的由来

一.Java内容介绍 Java编程可以分为三个方向(java技术的三大版本): 适用于桌面系统的Java 2平台标准版(Java2 Platform Standard Edition,Java SE). 适用于创建服务器应用程序和服务的Java 2平台企业版(Java2 Platform Enterprise Edition,Java EE). 适用于小型设备和智能卡的Java2平台Micro版(Java2 Platform Micro Edition,JavaME). 简单来说JavaSE(也

struts(IDEA)的应用

目标 任务,完成以上功能. 第一步:模拟组长建project 1.建立一个空白工程(里面是没有文件的) 2.到此,我们见到新建的工程,目录里面没有其他文件,只有.idea目录 (这个是相关配置信息,可以不管它) 3.点击托管项目到码云 4. 输入账号和密码 注意:这里是直接创建远程仓库(在码云的服务器创建,不是本地) 作用:把本地的代码,统统托管到服务器上 5. 提示提交文件,但是没有文件可以提交,因为本项目本来就是空. 6.右下角,提示创建仓库成功. 同时,仓库里面,什么代码代码都没有 8.按

Struts初探(二)

总是找不到对应的action,但别的没用到动态方法调用的都没有问题. 报异常:java.lang.reflect.InvocationTargetException - Class: com.opensymphony.xwork2.inject.ContainerImpl$Me 实在是搞不清楚,我还以为全半角有问题,尚学堂的现有的工程,进去操作了一下是没有问题的,struts2-core-2.1.6.jar,我这里是2.3.31了,想一下只能是这个问题了吧. 在Struts2的action配置中

深入理解struts的运行机制

在此申明本博文并非原创,原文:http://blog.csdn.net/lenotang/article/details/3336623,本文章是在此文章基础上进行优化.也谈不上优化,只是加上了点自己的想法 jar包准备 为什么会用到这两个jar包呢,因为我需要通过这个jar来解析xml配置文件. 新建项目 流程梳理 struts配置文件 <?xml version="1.0" encoding="UTF-8"?> <struts> <

struts文件上传

如果在表单中上传文件,表单的enctype属性为multipart/form-data struts默认上传文件大小为2M,如果需要修改,在配置文件中设置 <constant name="struts.multipart.maxSize" value="31457280"/> jsp页面 <input type="file" name="file"/> action中属性 private File fi