好啦,整个应用看完了。大家是不是大有斩获呢!?呵呵,我们来做个项目总结吧。

1.      Spring的作用是什么?

很多人在做SSH的应用时,很清楚Struts和Hibernate的职责和作用,但是却对Spring的作用有点迷惑。为什么呢?因为我们看到了很多Struts的API和Hibernate的API,但是却没有看到多少Spring的API。那么,大家还记得Spring定义吗?我们说它是一个非侵入式框架,也就是说,虽然看不到它的存在,却处处感觉到它的温暖。正所谓‘润物细无声’,这正是春天的奥义!呵呵,扯远了。想想Spring做了哪些事情吧,Struts框架里面最重要的的组件Action交给它管理,Hibernate里面最重要的组件SessionFactory也交给它管理,Service里面的方法自动置身在声明式事务的管理之中,这些难道还不能说明Spring这个‘黏合剂’的重要地位吗?!其实我们这里还是有点破坏了Spring的非侵入式特点,因为我们在写DAO层的时候继承了一个类:HibernateDaoSupport。而这个类是Spring对Hibernate框架的一个帮助支持类,属于Spring的API。不过也正是因为它的支持,我们DAO层的代码才能那么简洁!

2. 使用SSH的javaEE四层体系架构的传值组件有哪些,可以简化吗?

一切软件开发,最重要的是数据。那么,数据存储靠后台数据库,数据展现靠web页面(jsp,freemarker,velocity,pdf,excel等各种视图的简称!),也就是说,数据永远是在web页面和后台数据库之间传递。那么,数据在传递的时候,一般是打包封装传递,而不会是零散的。这个很好理解,假如你想从北京运输一批军火到上海,当然是用卡车或者飞机装载,而不会傻到一杆枪一杆枪地搬运!(罪过,罪过,怎么举这种例子!)那么,使用SSH组合框架在数据传输过程中的卡车就叫传值组件,分别有ActionForm,DTO,POJO三种。我个人倾向于3种组件都要使用。为什么呢?持怀疑态度的人一般是对各个组件之间属性值的拷贝深恶痛绝。其实这里面是有原因和技巧的。ActionForm的存在是理所当然地,因为它和页面表单数据结合的非常紧密,而且Struts能够自动把页面表单上的数据装载到ActionForm实例中,还能够把放置在request或session区域中的ActionForm实例中的属性直接显示到页面上。这样的功能是我们非常需要的。我们没理由摒弃它。POJO的存在也是理所当然的,因为它和数据库中的表集合的非常紧密,基本上我们都是一个POJO类对应一张数据表,这不正是ORM吗?!对于各种类型的实体关系,譬如一对一,多对一,多对多,单向还有双向的关系,我们都可以用POJO类与类之间的关联来实现。而且,更重要的是,我们都有很智能化的工具,譬如MyEclipse来直接反转表来生成。没有比这个更让人兴奋了。POJO类压根就不需要我们动手写!那么,DTO呢?有了POJO,它还有存在的必要吗?我觉得必要是大大的。首先,POJO是持久化类,有不同的状态。再其次,在一个复杂的应用中,它里面会有譬如日期,图片,金额这样的复杂数据类型,还会有不同类之间复杂的依赖关系(一个类,或者类的集合做另一个类的属性是常有的)。所以,它是不适合直接传递到页面上做显示的。又由于ActionForm是Struts特有的组件,不便于移植。所以在ActionForm和POJO之间找一个桥梁-DTO是非常必要的。那么,可能有人会说:ActionForm和DTO之间数据的转换还是很麻烦啊?大家想想,如果我们将DTO作为ActionForm的属性呢?这样是不是变得非常方便?!

3.      DTO的设计要遵循什么样的原则?

(1)   尽可能使用比较简单的数据类型,比如JAVA的基本数据类型,还是String类型。

(2)   和POJO保持极大程序的相似,便于用工具类来拷贝。但要注意类型不同的属性名称不能相同。

(3)   要兼顾页面显示和数据库存储,设计要相对宽松。

4.      为什么使用ExtJS?

用最少的代码做出做炫的效果,这大概是extjs最吸引人的地方。基于对象、组件,便开发更轻松,调试更方便。为开发者屏蔽了浏览器间的差异(呵呵,这个是所有JS框架都提供的)。很酷的如例子Desktop、Portal、Organizer。Tree、TabPanel这样常用的东西,就直接封装成组件,并外挂很多事件函数。Ajax使用起来非常方便,直接request相应URL,参数以JSON传递。返回的也是JSON,{success:true}或{failure:true},就可以执行success或failure时设定的任务。还可以很方便地继承扩展类,制作更适合自己的类。extent函数就是专用的。和其它的编程语言一样,extjs可以添加成员,添加函数,添加事件。所有的这些,也都是JSON的格式。Organizer例子中,扩展出一个新的组件:ImageDragZone。这个组件可以直接在其他程序中复用。

ExtJS实战(10)-项目总结相关推荐

  1. 【机器学习项目实战10例目录】项目详解 + 数据集 + 完整源码

    前言 大家好,我是阿光. 本专栏整理了<机器学习项目实战10例>,内包含了各种不同的入门级机器学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集. 正在更新中~ ✨

  2. 【敬初学者】Python基础学完了,该怎么知道自己学的怎么样呢?十个经典实战小项目附源码

    前言 1.街霸游戏 1.1 KO街霸 程序完整源码 程序的输出界面 1.2 春丽VS巴洛克 参考源码 2.猜谜游戏 2.1简单的猜数字游戏 项目要求 参考源码 2.2 进阶的猜姓名游戏 项目要求 参考 ...

  3. 我用Python把抖音上的美女图片转字符画,期望的AI目标更进一步【机器学习算法实战小项目,k聚类算法图片转化字符画】

    大家好,我是辣条. 最近在学习算法,今天给大家带来一个机器学习实战小项目 项目效果展示 学习目标 1.cv2转换图片数据  2.numpy提取图片矩阵数据  3.k均值算法获取图片的分类 工具使用 开 ...

  4. 暗月渗透实战靶场-项目六(上)

    暗月渗透实战靶场-项目六 环境搭建 使用的是暗月提供的环境 直接虚拟机运行即可 设置网络环境 网卡配置的时候为了方便直接使用的是暗月的vm19的网卡配置的内网环境 00x1-信息搜集 我们已经知道目标 ...

  5. ThinkPad物理机安装Linux系统实战企业级项目之CentOS安装

    ThinkPad物理机安装Linux系统实战企业级项目之CentOS安装 系统安装 下载CentOS系统制作系统U盘 笔记本电源设置 网络设置 WiFi类型查看验证设置联网 设置固定IP 安装MySQ ...

  6. laravel实战化项目之三板斧

    2019独角兽企业重金招聘Python工程师标准>>> laravel实战化项目之三板斧 spring mvc 实战化项目之三板斧 asp.net mvc 实战化项目之三板斧 lar ...

  7. 大数据实战-callLog项目(通话记录数据分析)之数据生产

    文章目录 前言 生成基础数据 Maven依赖 姓名-手机号列表 时间维度表 自动随机生成 生成时间戳 生成一定范围内的long数据 代码 调用演示 获得随机的时间戳 代码 调用示例 生成一行记录 打包 ...

  8. libhv tcp实战小项目

    libhv Tcp小项目实战 一.概述 1.包头 2.心跳 3.任务队列 二.包头 2字节 2字节 4字节 4字节 2字节 1字节 1字节 起始标志 版本号(N) Command(命令ID) 消息体长 ...

  9. Vue快速入门(附实战小项目:记事本、天气预报、音乐播放器)

    文章目录 一.前言 二.Vue.js安装 三.初始化Vue项目 四.项目目录解析 五.Vue核心指令 1.插值表达式 2.v-text 3.v-html 4.v-on 5.计数器实战 6.v-show ...

最新文章

  1. Zabbix安装(十):监控windows进程
  2. python中列表的运用_python中列表的应用
  3. java class is frozen_利用javassit简单操作class文件 1
  4. Java常用的5大框架介绍!
  5. Jmeter笔记(5)线程组执行顺序
  6. javascript之 原生document.querySelector和querySelectorAll方法
  7. linux中时间命令详解
  8. OpenGL绘制旋转茶壶
  9. Docker架构、常用命令和示例
  10. 2018-2019-2 20165312《网络攻防技术》Exp7 网络欺诈防范
  11. CMakeFiles/species.inc.dir/build.make:57: recipe for target 'CMakeFiles/species.inc' failed
  12. 计算机c盘删除的文件怎么找回,C盘空间不足怎么办 删除C盘文件教程【详解】...
  13. 一个程序员的书法学习之路-法帖篇
  14. Python人脸笑脸识别【人工智能】【CNN】
  15. MySql 配置 方法
  16. 数据蛙恢复软件替代产品有哪些?15款顶尖数据恢复软件清单
  17. 投资理念研究分析报告
  18. 纳什均衡(Nash equilibrium)
  19. WebSocket和SocketIO总结
  20. java 圆周率_Java 计算圆周率

热门文章

  1. Linux 守护进程一
  2. Weblogic基本概念整理
  3. java核心技术读书笔记1
  4. python-- Image 模块
  5. FB邮件服务器测试smtp,pop3
  6. BUCK/BOOST电路原理分析
  7. Swift: 用Alamofire做http请求,用ObjectMapper解析JSON
  8. javascript基础语法——变量和标识符
  9. 网易微专业之《前端开发工程师》学习笔记(1)
  10. 程序、进程、线程的关系