自己最初设计的框架--struts,spring
来源:互联网 发布:js用图片显示当前时间 编辑:程序博客网 时间:2024/05/16 00:58
1.1. 综述:考虑到性能,安全性,灵活性以及编程的方便等原因,系统采用目前网络编程流行的模式MVC。架设架构的主体技术采用Spring,Struts 作为核心,同时织入iBATIS,Log4j,JNDI,JMS,Acegi 等组件,完善框架。
1.1.1. Spring和Struts是成熟的框架,其轻量级的设计,以及其简化J2EE系统开发的目标正好符合我们的设计需求。它们两个核心特征分别是反向控制(IoC)和面向切面编程(AOP)。IoC实现了系统对象间的松耦合关联,使得代码更加清晰,更加容易管理,更容易测试,为以后的维护提供方便。AOP使得很容易的织入其他组件,并且使得各个组件的合作简便,也同样简化编程,方便维护。
1.2.1. IoC:全名Inversion of Control
1.2.2. 问题的引入:在程序设计时,总会有这样的情况:由于应用程序需要某个功能需求时,直接执行了下一层的方法。情况如下图:
1.2.3. IoC这个概念的引入,解决了这样的困境。IoC的Control是控制的意思,其实其背后的意义也是一种依赖关系的反转。依赖关系的反转即是控制关系的反转,将控制权由实现的一方移至抽象的一方,让抽象方拥有控制权,可以获得组件的可重用性。IoC要求的是容器不应该(或尽量不要)侵入应用程序,也就是不应该出现于容器相依的API,应用程序本身可以依赖于抽象的接口,容器可以透过这些抽象接口将所需的资源注入至应用程序中,应用程序不向容器主动要求资源,故而不会依赖于容器的特定API。这样的设计,可以随时将应用程序从容器中脱离,转移至其他容器或框架而不用做任何的修改。
1.2.4. IoC模式基本上是一个高层的模式概念,Martin Fowler谈到,实现IoC有两种方式:Dependency Injection于Service Locator,Spring所采用的是Dependency Injection来实现IoC,中文翻译为依赖注入。
1.2.4.1. 未实现反向控制的示例如下:
数据的获得是通过主动取得的,使其耦合紧密,侵入性强,不易于维护,管理等。
1.2.4.2. 采用了反向控制,数据取得方式如下:
此时,控制反向了。巧妙的利用面向对象的设值注入,使得注入信息方式灵活。在Struts+Spring做核心的架构里,可以配合xml配置文件,协调java语言的设置注入。而实际上,Spring最重要的核心概念就是IoC(Inversion of Control),反向控制。
1.3. 面向切面编程:
1.3.1. AOP:全名Aspect-oriented programming
1.3.2. 问题的引入:在应用程序的各个业务模块中,通常会调用到与业务无关的系统服务,而这些系统服务逻辑并不是业务逻辑的主要组成部分。对系统服务的调用经常分散在各个业务逻辑里,业务逻辑与系统逻辑的交互使得关系复杂化。一方面编写代码时,有一些非对象本身的职责的相关动作也混如了对象之中(例如权限检测,日志记录等等),会使得对象的负担进一步加重,甚至混淆了对象本身该负有的职责,对象本身的职责所占的程序代码,或许还小于这些与对象职责无关的动作或服务的程序代码;另一方面,若有朝一日不需要某些服务,那么我们就需要修改所有留下记录的程序代码,编程代码量剧增,应用程序也变得难以维护。
1.3.2.1. 未引入AOP概念的情况下,业务服务与系统服务的交互如下图。
1.3.2.2. 引入AOP概念的情况下,业务服务与系统服务关系如下图。
系统服务覆盖了它影响到的组件。框架的设计在于,将散落于各个业务对象之中的系统服务处理动作(Cross-cutting concerns)收集起来,设计各个独立可重用的未实例化的对象(Aspect),然后,把这些类的具体实现(Advice)根据某个定义(Pointcut)的指定时机(Joinpoint)应用到目标对象(Target)上。该过程就是织入的过程(Weave)。这样的编程模式,编写业务服务的代码,不会感觉到系统服务的存在,不必受到系统服务实现的干扰,而实际上系统服务已经被织入业务服务中。如图,AOP的名词用图片来表示如下:
2 命名规则:
2.1 源包路径及类命名规则:
2.1.1 根目录: com.scnu.xsboa..
2.1.2 模块: 前台模块:mod,后台模块:modb
2.1.3 formbeans:formbeans.mod.xxxFormbean
2.1.4 actions:actions.mod.xxxAction
2.1.5 services:services.mod.xxxService
2.1.6 daos:daos.mod..
2.1.6.1 ..xxxDao
2.1.6.2 ..xxxDaoImpl
2.1.7 sqlbeans:sqlbeans.mod...
2.1.7.1 ..xxxSqlbean
2.1.7.2 ..xxxSqlEx
2.2 页面目录命名规则:
2.2.1 根目录:/
2.2.2 模块:
2.2.2.1 前台模块:
2.2.2.1.1 /mod/..
2.2.2.1.2 /mod/forward/..
2.2.2.2 后台模块:
2.2.2.2.1 /modb/..
2.2.2.2.2 /modb/forwards/..
2.2.3 模板头尾:/public/HeaderAndFooter/..
2.2.4 导航菜单:/public/menu/..
2.2.5 各模块导航栏:/public/mod/..
2.2.6 图片:
2.2.6.1 /images/public/..
2.2.6.2 /images/mod/..
2.2.7 javascript:/js/..
2.2.8 css:/css/..
2.3 页面文件相关命名规则:
2.3.1 jsp页面:mod + 动词 + 宾语
2.3.2 actionpath:相关action的名字,形如:com.scnu.oa.action.mod.xxxAction.shtml
- 自己最初设计的框架--struts,spring
- 自己最初设计的框架--struts,spring 图
- 写给最初的自己
- 记录自己最初的脚印
- 自己写的类Struts框架
- 要不断回顾自己最初的目标
- 开学了,守住最初的自己
- 开学季,守住最初的自己
- 使用XML,Spring,和struts以MVC为设计模式的分布式应用程序框架
- DudoJ框架——最初的设想
- 我的Struts+Spring+Hibernate 框架
- Spring Web框架与Struts的区别
- struts、spring、hibernate三个框架的理解
- hibernate、struts、Spring框架的详解
- struts、spring、hibernate三个框架的理解
- J2EE框架(Struts&Hibernate&Spring)的理解
- J2EE框架(Struts&Hibernate&Spring)的理解
- Struts,Spring,Hibernate三大框架的
- Vmware下 Solaris10 X-window显示问题解决
- 使用JDOM解析XML
- Accessing the Local File System with Flex
- 黑客入侵电脑网络四大步骤
- 给一个Table添加合计行[Tips]
- 自己最初设计的框架--struts,spring
- 认识 p-unit : 一款开源的性能测试工具
- js 中RGB十六进制码补色算法及实现 by shawl.qiu
- 自己最初设计的框架--struts,spring 图
- php WEB报表工具的设计
- 常见短语集锦
- Windows CE开发初步
- 在GE实习的日子(2)
- 如何在对话框类中访问父窗口中的数据