这篇博客开始将总结一下有关框架的知识,在开发中合适的利用框架会使我们的开发效率大大提高。当今比较流行的开源框架:

  • 关注数据流程的MVC框架Struts1/2, WebWork, Spring MVC……)
  • 关注数据关系的容器框架Spring, GUICE……)
  • 关注数据操作的持久层框架(HibernateIBatis……)

当然了,各个公司可能也有在此基础上扩展开发的自己使用的框架,但是很多原理的东西都是类似的,所以学习会一套框架,然后能够举一反三,帮助我们很快的接受新的知识。

SSHStruts+Spring +Hibernate)三大框架,今天来总结一下Struts2的一些知识。所谓框架么,其实就像我们盖房子一样,需要先搭建支架,然后再进行添砖加瓦,使之达到完美。而在软件开发中,框架也是一样的:就是将通用的代码进行封装,使我们可以重复利用,达到了高效开发的效果。当然既然已经搭建好的框架,用到我们的系统中,我们就需要学习它,怎么使我们自己独有的代码和框架进行完美的结合。因为大家都在用这些优秀的框架,所以框架的学习,其实就是框架规范的学习。有了规范,有个约束,有了统一,才能更加有利于合作的开发。

下边先看一下Struts2总括知识:还是比较多的,三大框架之一么:

这篇博客先从总体的角度,进行对Struts2的进行宏观了解。看前三个小标题:

一,Struts2简介:

1,来由:Struts(金属支架),在程序中表示起支撑作用的通用程序代码,Struts2是在Struts1框架的基础上融合了WebWork优秀框架升级得到的。

2,解释:Struts2框架是一个轻量级的MVC流程框架,轻量级是指程序的代码不是很多,运行时占用的资源不是很多,MVC流程框架就是说它是支持分层开发,控制数据的流程,从哪里来,到那里去,怎么来,怎么去的这样一个框架;

3,升级的改善:

Struts1的缺点:

  1. struts框架基于servlet进行开发的,所以servlet的问题在这个框架中都能体现出来
  2. struts框架的流程是固定的,想要扩展业务流程非常的不方便。
  1. 只支持动态视图JSP展现数据,对于现在的SEO(搜索引擎优化)支持不好

Struts2框架改善的地方:

  1. 核心基于Filter
  2. 流程可以动态扩展
  3. 多例创建对象
  4. 支持多种视图展现技术(JSPFreemarkerVolicity

二,简单对Struts2了解后,看一下如何进行Strut2的搭建:

1,新建Web项目:进行必备Jar包的拷贝,放到lib目录以便项目的引用,这个我们通过apache官方网站下载后,可以参照里边的实例:

2,拷贝框架的核心配置文件Struts.xml,放到src目录下,保留一个基本配置即可,这里没网的话需要我们自己配置一下xml文件对应的DTD或者schema文件,方便我们后期的编写:

[html] view plaincopy

print?

  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <!DOCTYPE struts PUBLIC
  3. "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
  4. "http://struts.apache.org/dtds/struts-2.0.dtd">
  5. <struts>
  6. </struts>



3 ,然后在我们的 web .xml 文件中进行核心调度器的配置,这里我们一般过滤所有访问路径即可:

[html] view plaincopy

print?

  1. <!-- 配置框架的核心调度器 -->
  2. <filter>
  3. <filter-name>struts2</filter-name>
  4. <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  5. </filter>
  6. <filter-mapping>
  7. <filter-name>struts2</filter-name>
  8. <url-pattern>/*</url-pattern>
  9. </filter-mapping>




这样我们的Struts2框架就算搭建出来了,我们就可以使用框架进行开发了,当然了如何使用框架,如何很得心应手的运用框架,还需要不断的使用才行。

三,Struts2框架的源码分析,这也是我当时学习最头疼,但是最让我最感兴趣的地方,因为这些源码才真正将一些神奇的功能进行了解答:(由于源码步骤过多,而且学习程度不够深,这里简单说一下大概步骤)

1Tomcat等服务器启动时,框架做的事情:——>反射创建了StrutsPrepareAndExecuteFilter对象,相当于使用Struts2的一个准备对象吧,——>然后创建了Dispatcher(核心调度器),——>通过此对象,加载对象默认的配置文件(org/apache/struts2/default.properties),解析了默认的xml文件(struts-default.xml等),——>并试图加载我们编写的xml文件或者属性文件,——>并创建了我们需要用的PrepareOperations和ExecuteOperations对象。

2,当我们访问jsp页面时,这里会进行页面编码设置,反射创建我们的DefaultActionMapper对象,进行对URI的获取,解析,封装,由于是直接访问的jsp页面,也就是静态的,直接跳转,相对来说比较简单。

3,发送actin请求时,这里比较麻烦,——>利用DefaultActionMapper,进行对URI的获取解析,例如访问那个类,那个方法,是不是动态访问(带有!号),有什么特殊处理(有.x  .y结尾等)。进行相关信息的解析后,——>Dispatcher(核心调度器)反射创建StrutsActionProxyFactory代理对象工厂,这里在反射创建我们要访问的类时,——>模仿了动态代理,创建了代理对象StrutsActionProxy和扩展对象DefaultActionInvocation,——>扩展对象又创建了我们的目标对象工厂,——>然后反射创建了我们想要访问的目标对象action。——>然后通过调用代理对象,执行扩展对象中的方法,——>执行我们框架默认的18个拦截器,——>反射调用访问action方法,——>获取执行后的结果result,——>最后进行相关界面或者action的指向。

这里自我感觉是挺麻烦的,应该画张图更好,可是步骤太多,不知道图得多大,所以简单的文件描述了一下重要的过程,忽略了很多。想说的是要重点掌握几个文件:Struts-default.xml配置文件,default.properties默认的属性文件,dispatcher核心调度器,还有就是模拟动态代理访问action的代理对象(StrutsActionProxy)和扩展对象(DefaultActionInvocation),当然了解越多越好,这样才能帮助我们更好的掌握这个框架,更有利于我们对其进行灵活运用,扩展,更有修改……

Struts2框架大致容貌是这样的,我认为学习这些框架重点不是死记那些规范,那些规则,重要的是我们学习这个框架的思想,这样我们遇到新的框架时才不至于束手无策。就像我们拆笔记本电脑时,重要的不是我们记住那么部件在那,先装那个,后装那个;而是我们电脑的组成部分,电脑的组装思路。因为每一个牌子的电脑的内部结构都是有差异的,但是每个牌子的电脑都会有cpu,cpu安装都需要硅胶等等,知道原理本质,我们才能举一反三,融会贯通。

Java后台框架篇--Struts与SSH相关推荐

  1. Java后台框架篇--Spring之WebFlow

    1.构建webflow2.3.3环境(2.0以上应该都可以) 导入webflow的jar包+springmvc的一些必须包,目录结构如下 2.配置webflow(spring-wf.xml) [htm ...

  2. 「Java面试题精华集」1w字的Java集合框架篇(2022最新版)附PDF版

    昨天晚上终于把 Java 集合框架部分的的知识点肝完了,转换成 PDF 一共 25 页,后台回复:"面试突击" 即可免费获取下载地址(同样提供了夜间阅读版本). 集合概述 Java ...

  3. java ognl使用_java框架篇---struts之OGNL详解

    OGNL(Object Graph Navigation Language),是一种表达式语言.使用这种表达式语言,你可以通过某种表达式语法,存取Java对象树中的任意属性.调用Java对象树的方法. ...

  4. java后台框架 springmvc mybaits 集代码生成器 SSM SSH

    获取[下载地址]   QQ: 313596790   [免费支持更新] 支持三大数据库 mysql  oracle  sqlsever   更专业.更强悍.适合不同用户群体 [ 新录针对本系统的视频教 ...

  5. java struts 拦截器_java框架篇---struts实现拦截器

    Struts2的拦截器和Servlet过滤器类似.在执行Action的execute方法之前,Struts2会首先执行在struts.xml中引用的拦截器,在执行完所有引用的拦截器的intercept ...

  6. 【速学java】 java后台框架 springmvc整合mybatis框架源码

    三大数据库 mysql  oracle  sqlsever   更专业.更强悍.适合不同用户群体 [新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统] A 调用摄像头拍照,自定义裁剪编辑 ...

  7. Java集合框架篇-63-TreeSet集合练习题

    这篇,我们通过前面学习的TreeSet集合和比较器的知识,我们来做几个练习题.在完成练习过程中,我们重点放在问题分析这个步骤上面,只有分析的思路的正确性,才能写出正确的代码,完成编程练习题. 第一题 ...

  8. java文件下载框架,使用Struts 2框架实现文件下载 - 消逝の纸屑

    从服务器发送一个文件到浏览器需要以下几个步骤 把HTTP响应里的ContentType标头设置为被下载文件的内容类型.ContentType标头的作用是表明数据包里的数据是什么类型,它由一个多媒体类型 ...

  9. java后台框架介绍

    框架是什么 软件的半成品,未解决问题制定的一套约束,在提供功能基础上进行扩充. 作用:提高开发效率. 动手写一个框架 新建一个项目 在该项目新建一个类,实现一个简单打印功能 !!此项目就好比框架,别的 ...

最新文章

  1. jQuery学习笔记(一)
  2. 网站站内优化新方案,SEO运营人员值得一看
  3. File not found 错误 nginx
  4. JqueryEasyUI 解决IE下datagrid无法刷新的问题
  5. linux命令:case选择结构语句
  6. VTK:Qt之ImageDataToQImage
  7. 前端学习(342):进制只能介于2-36之间Uncaught RangeError: toString() radix argumen
  8. mysql pheonix hbase,mybatis连接phoenix操作hbase
  9. textarea文本域
  10. golang微服务网关
  11. android 基站信号测试软件,基站信号监测app
  12. 【数据分析】面经(搬运)
  13. SpringBoot实现163邮箱发送邮件
  14. Python中的图像增强
  15. 凑微分公式_不定积分的计算凑微分法.ppt
  16. 比较好的PHP开源项目
  17. A Game of Thrones(21)
  18. 互联网巨头“死磕”不放弃的社交赛道还有生意吗?
  19. Altium Designer 导出网表 到Cadence教程
  20. vb程序设计教程第4版龚沛曾 实验答案解析

热门文章

  1. 普通电脑可以装苹果系统吗?Windows电脑装Mac系统
  2. yum install时提示This system is not registered with an entitlement server
  3. All in 企业微信两年,微盛增长启示录:把自己作为方法 | 深谈
  4. Linux时间函数time()、ctime()、ctime_r()、localtime()、localtime_r()、asctime()、strftime()的转换关系
  5. Shell脚本中获取命令运行结果、特殊变量使用、条件判断等常用操作
  6. 【嵌入式软件开发岗位 ---- 面试总结01】
  7. 微信小程序直播功能来了,然后呢?
  8. 2023年武汉大学世界史考研考情与难度、参考书及上岸前辈备考经验
  9. matlab中som结果,matlab神经网络工具箱中的som怎么使用
  10. tslint pre-commit 配置教程