首先我们就一起来认识认识Struts2到底是什么?作为框架,它又是用来处理哪些问题的呢?正所谓脚踏实地走,即时离梦想会远一点,但却很真实,那我们就一步一步的来了解Struts2吧!

     一、既然我们刚才说了“框架”,就先来说说什么是web框架吧。为什么这么说呢?Struts2框架是基于Struts和webwork设计框架,Strus2也必将成为最为流行的web开发框架之一。

1.早期的wenb框架应用主要是静态页面浏览(如新闻的浏览),这些静态页面使用了html语言来编写,随着网络的发展,很多线下业务开始向网上发展,基于Internet的web也变得越来越复杂,不但要与数据库交互,而且还要和用户进行交互,由此衍生了各种服务器端页面编写技术,目前应用较多的三种页面编写技术就是ASP、JSP、PHP。

     2.其中JSP通过在html页面文件中嵌入了java脚本代码,从而实现动态网页功能。然而,对于一些较大的应用,大量的html和java代码的混杂导致了页面的显示逻辑和业务逻辑交错在一起,使得代码可读性变差,维护难度增加,不利于html编辑人员和java开发人员的分工协作;为了分离页面的表现逻辑和业务逻辑,SUN公司在JSP早期规范中制定了两种JSP开发模型;分别为模型1(model 1)和模型2(model 2)。

      2.1 模型1 使用JSP+JavaBeans技术将页面显示和业务处理分开,JSP实现页面显示,JavaBeans对象用来承载数据和实现业务逻辑。模型1的结构图如下:

 2.2 模型2  在模型1中,JSP页面嵌入流程控制代码和部分的逻辑处理代码,我么你可以将这一部分提取出来,放到单独的角色中,这个角色就是控制器角色,而这样的web框架就是模型2了,因为模型2符合MVC框架模式,即模型-视图-控制器(Model-View-Controller),接下来我们通过图来了解MVC

到底做什么?它又有那些作用?再顺便看看模型2的图结构。

虽然理论有点多,但是你如果想要了解框架,最好还是多去看一些理论,因为只有这样才能让你明白,框架的思想到底是什么?

如果你想真正了解Struts2,不妨可以进来看看的更多相关文章

  1. 如果你想设置无人自动升级,我们推荐你将这个值修改为security,它会告诉 yum 仅仅升级修复安全问题的软件包。

    定期升级你的 CentOS 系统,是所有系统安全中最重要的措施之一.如果你不使用最新的安全补丁升级你的操作系统软件包,你将会让你的机器很容易被攻击. 如果你管理者多个 CentOS 机器,手动升级系统 ...

  2. 如果你想写自己的Benchmark框架

    目录 简介 八条军规 第一条军规 第二条军规 第三条军规 第四条军规 第五条军规 第六条军规 第七条军规 最后一条军规 总结 简介 使用过JMH的同学一定会惊叹它的神奇.JMH作为一个优秀的Bench ...

  3. 如果你想深刻理解ASP.NET Core请求处理管道,可以试着写一个自定义的Server

    我们在上面对ASP.NET Core默认提供的具有跨平台能力的KestrelServer进行了详细介绍(<聊聊ASP.NET Core默认提供的这个跨平台的服务器——KestrelServer& ...

  4. js如果你想删除您问

    if (confirm("OK删除?") == true)

  5. [APP]如果你想反编译

    反编译,主要用到两类工具,一个就是获取apk包的包名(appPackage)和类名(appActivity)的工具,其实就是反编译出java源代码,dex2jar和jd-gui:一个是将一个apk包反 ...

  6. 如果你想or即将成为一名程序员,那你需要知道这些东西!上岗须知~

    前两天公司学院的同学给我看了一下即将入职的应届生的数量,真是不少.感慨一下,一批新人即将到来,而自己又老去了一岁.码农是一个必将终身学习的职业.而相关的知识越来越多了.接下来该学什么?接下来该干什么? ...

  7. struts2官方 中文教程 系列三:使用struts2 标签 tag

    避免被爬,先贴上本帖地址:struts2 官方系列教程一:使用struts2 标签 tag http://www.cnblogs.com/linghaoxinpian/p/6901316.html 本 ...

  8. react 入门与进阶教程

    react 入门与进阶教程 前端学习对于我们来说越来越不友好,特别是随着这几年的发展,入门门槛越来越高,连进阶道路都变成了一场马拉松.在学习过程中,我们面临很多选择,vue与react便是一个两难的选 ...

  9. iOS和macOS上的Message-ID和Mail.app深度链接

    如何在iOS上通过电子邮件进行无缝的“无密码”身份验证. Apple平台上的邮件和日历集成 在macOS和iOS上查看电子邮件时,邮件会在[检测到的日期和时间]下划线 .您可以与他们互动以创建新的日历 ...

随机推荐

  1. php备份mysql的代码

    1. mydb.php //DB类2. backup.php //备份脚本3. restore.php //还原脚本 mydb.php <?class db{ var $linkid;var $ ...

  2. Mahout之数据承载

    转载自:https://www.douban.com/note/204399134/ 推荐数据的处理是大规模的,在集群环境下一次要处理的数据可能是数GB,所以Mahout针对推荐数据进行了优化. Pr ...

  3. ajaxform使用

    需要引入  jquery.form.js  jquery.js 1.提交的表单 <form id="myForm" action="comment.php" ...

  4. taskkill批量删除进程命令

    本人自用: TASKKILL /F /IM notepad --强制删除进程名中带notepad的所有进程 TASKKILL [/S system [/U username [/P [password ...

  5. 多个supplemental logging的说明与删除

    有时候我们做ogg的时候,查看info trandata schema.table 无法查看到对应的supplement log信息, 但是我们查看table script的时候可以看到supplem ...

  6. 将 xunit.runner.dnx 的 xml 输出转换为 Nunit 格式

    由于目前 DNX 缺乏 XSLT 的转换能力,因此只能使用变通方法.具体参考这个链接 主要内容复制过来是: From @eriklarko on July 14, 2015 7:38 As a wor ...

  7. python遍历一个网段的ip地址

    def ip2num(ip):#ip to int num lp = [int(x) for x in ip.split('.')] return lp[0] << 24 | lp[1] ...

  8. JavaScript高级程序设计-(2)基础概念

    for-in 语句 for-in 语句是一种迭代语句,用来枚举对象属性,语法:for (property in expression) statement实例:for(var propName in ...

  9. struts2注解

    一.配置web.xml <filter> <filter-name>struts2</filter-name> <filter-class>org.ap ...

  10. Format

    strTimeZone := Format('%s ~ %s',[formatdatetime('yyyy-mm-dd',dtpStartTime.DateTime), formatdatetime( ...