`

关于项目框架设计的一点学习

阅读更多

这两天又在接触一个新项目,对于如何设计一个项目的框架有了点概念,关于web项目(对于oa系统来说)的主体感觉比较需要设计的几部分为:

1.  页面模板定义:关于view层展示,无论对于top(顶层菜单)+left(左边树状菜单)+right(主体内容)结构还是left+right结构,都需要首先定制一些模板,如struts中可使用tiles定义。

2.  分页标签:自定义一个比较通用的分页标签或者使用一些框架中自带的(如struts-menu或者JSF中的t:dataScroller),不过比较好的做法是基于其源码编写自己的分页标签。

3.  DB 设计:可使用Power Deisign等设计数据库表结构,产生相关的表。

4.  代码自动生成:编写代码生成脚本如build.xml文件的编写(根据DB生成代码,也可以忽略3,先建model,再从model生成代码和数据库schema),生成StrutsSpringHibernate相关文件。

 

关于代码的整体架构如下:

 

 

action 层:处理从view层传递过来的数据。

service 层:封装业务逻辑,一般同时在spring中声明事务代理。

dao 层:进行事务中的原子操作,同时在spring中注入相应的sessionFactory

 

Spring + Struts 取得springbean的两种常用方法:

1.     DelegatingActionProxy :将所有action标签中type属性设为org.springframework.web.struts.DelegatingActionProxy 也就是将action委托给了spring,同时在 action-servlets.xml 中配置一个于action标签path属性对应的bean(也就是beanname值等于actionpath),如:

struts-config.xml 中,以strutsplugin的方式,spring接管strutsaction

< action name = "portalForm" parameter = "method" path = "/portalAction" type = "org.springframework.web.struts.DelegatingActionProxy" scope = "request" >

    < forward name = "portalEdit" path = " pages/portalEdit.jsp" />

    < forward name = "portalList" path = " pages/portalList.jsp " />

</ action >

< plug-in className = "org.springframework.web.struts.ContextLoaderPlugIn" >

    < set-property property = "contextConfigLocation"

          value = "/WEB-INF/action-servlets.xml" />

</ plug-in >

 

action-servlets.xml (配置文件格式和spring配置一样)中:

< beans >

    < bean name = "/portalAction"

          class = "com.cn.lively.action.PortalMainAction" >

        < property name = "portalService" >

            < ref bean = "portalService" />

        </ property >

    </ bean >

</ beans >

 

2.     WebApplicationContextUtils.getRequiredWebApplicationContext :在action中获得springbean

public Object getService (String name) {  

    ApplicationContext wac =     WebApplicationContextUtils.getRequiredWebApplicationContext(servlet.getServletContext());  

    return wac .getBean(name);  

}  

这种方式没有在struts里边加入springplugin,实际上是使用了依赖查找来获得对象,并且在servlet代码中硬编码了应用对象的bean名字。

 

附:

感觉一个国内小型项目(周期半年左右)的开发,完美的团队大概四个人左右就够了,

A :前期框架设计 + 开发过程中不断改进完美整个框架,角色——架构师

B :前期需求调研 + 开发过程中负责技术难度比较大的模块开发,角色——程序员

C :前期需求调研负责人 + 开发过程中负责业务逻辑复杂的模块开发,角色——项目负责人

D :前期需求调研 + 开发过程中负责模块开发,角色——程序员

同时BC负责共同解决开发中出现的技术和业务问题,C负责控制项目进度,

项目后期,BCD进行交叉测试,A负责review代码。

 

如果公司已经比较成熟的框架(即基本系统管理模块 + 代码自动生成),那么角色A可以省略,只需要BCD三个人即可进行项目开发,其中角色B在开发中担当一部分A的角色。

甚至可以只由BC两个人进行开发,把角色D的工作分担到BC身上,B侧重技术,C侧重业务逻辑。

分享到:
评论
1 楼 lihua2008love 2015-08-21  

相关推荐

    基于J2EE框架的个人博客系统项目毕业设计论...

    在整个blog进行开发之前,要确定出整个项目的整体架构,包括系统的选型、运行环境的确定及系统结构设计。下面对这进行详细介绍。 在进行软件系统开发的最初环节,一般都需要进行系统的选型,即根据系统功能的实际...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    在整个blog进行开发之前,要确定出整个项目的整体架构,包括系统的选型、运行环境的确定及系统结构设计。下面对这进行详细介绍。 在进行软件系统开发的最初环节,一般都需要进行系统的选型,即根据系统功能的实际...

    五点硬件电路设计思路

    要如何完整地设计一套硬件电路设计,下面为大家分享我的几点个人经验:1)总体思路设计硬件电路,大的框架和架构要搞清楚,但要做到这一点还真不容易。有些大框架也许自己的老板、老师已经想好,自己只是把思路具体...

    这是一个网上书城项目,采用当前最流行的框架Spring-SpringMVC-MyBatis设计,主要是对之前用Jsp/Servl

    可以下载,下载后直接在mysql中导入即可,因为好多人问到,所以在这同意说明一下,我是感觉你们一点也不认真,只看到代码,没看到附件,或许也是对开源中国项目托管的不熟悉吧,这个项目适合一些初学者学习框架用,...

    毕业设计基于react的鲜花销售网站源码.zip

    2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。...

    基于链接实体回放的多源知识图谱终身表示学习python源码+项目操作说明.zip

    2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。...

    基于SSM+mysql框架的高并发和商品秒杀项目源码+项目说明.zip

    2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于SSM+...

    Java开发基于SSM框架的医院体检预约管理系统源码+项目说明.zip

    2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。...

    java三大框架

    J2EE框架被大规模地运用到项目中,而项目总要负责这些框架以及自己业务代码的连接,使之真正融合到一起。Spring就是专注于这个问题的,它和Hibernate融合的很好。 这三种框架在一起并不冲突,所以现在最常用的框架...

    JAVA课程设计-基于mysql的学生信息管理系统.doc

    程序结构设计培养 15 二、 书写习惯养成 15 三、 注意程序简洁 15 总结 16 参考文献 17 附录:项目源代码 18 一、 数据库连接(DbConnection.java) 18 二、 学生信息数据库管理(Student_Dao.java) 18 三、 欢迎...

    asp.net知识库

    深入剖析ASP.NET组件设计]一书第三章关于ASP.NET运行原理讲述的补白 asp.net 运行机制初探(httpModule加载) 利用反射来查看对象中的私有变量 关于反射中创建类型实例的两种方法 ASP.Net应用程序的多进程模型 NET委托...

    Ocean3D:Ocean3D是基于.net核心设计的域驱动开发框架

    Ocean3D是一套基于.net core 3.1开发的领域驱动设计框架,这套框架主要用于大家学习一些.net core 的开发知识,帮助大家了解领取驱动的开发模式。 求一颗星星! 如果你觉得框架对你有一点帮助请帮我点一些星星:) ...

    JAVA课程设计-基于mysql的学生信息管理系统(1).doc

    程序结构设计培养 15 二、 书写习惯养成 15 三、 注意程序简洁 15 总结 16 参考文献 17 附录:项目源代码 18 一、 数据库连接(DbConnection.java) 18 二、 学生信息数据库管理(Student_Dao.java) 18 三、 欢迎...

    Fourinone分布式计算框架

    FourInOne(中文名字“四不像”)是一个四合一分布式计算框架,在写这个框架之前,我也看了老外写的其他开源框架,也对分布式计算进行了长时间的思考,当我们把复杂的hadoop当作一门学科学习时,似乎忘记了我们想...

    课程设计基于Java实现的校园快递代拿系统源码+sql数据库+项目详细说明.zip

    2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。...

    二十三种设计模式【PDF版】

    关于本站“设计模式” Java 提供了丰富的 API,同时又有强大的数据库系统作底层支持,那么我们的编程似乎变成了类似积木的简单"拼凑"和调用, 甚至有人提倡"蓝领程序员",这些都是对现代编程技术的不了解所至. 在...

    基于springboot与Vue开发的CMS系统源码+项目说明.zip

    主要针对计算机相关专业的正在做毕设的学生和需要项目实战的Java学习者。 也可作为课程设计、期末大作业。包含:项目源码、数据库脚本、项目说明等,该项目可以直接作为毕设使用。 也可以用来学习参考借鉴!

    Fourinone分布式并行计算四合一框架

    Fourinone(中文名字“四不像”)是一个四合一分布式计算框架,在写这个框架之前,我对分布式计算进行了长时间的思考,也看了老外写的其他开源框架,当我们把复杂的hadoop当作一门学科学习时,似乎忘记了我们想解决问题...

    简单的的linux开发板QT开发项目:能实现与ZigBee板连接并接收数据

    1.本项目用QT开发,并未完全完成,但可以作为一个大的框架以供学习 2.虽然项目里面是图书馆座位管理系统,但其实可以根据个人传感器类型转换系统类别,想哪个行业都可以,无伤大雅 3.本项目里面有动态欢迎界面,登录...

    Bootstrap学习笔记之css样式设计(1)

    由于项目需要,所以打算好好学习下bootstrap框架,之前了解一点,框架总体不难,但涉及到的东西还是很多,想要熟练掌握它,还是要多练练。 一、bootstrap是什么? bs是什么? 即前端页面搭建的标准化框架工具,已经写...

Global site tag (gtag.js) - Google Analytics