自定义框架
Posted zxc-double-refuel
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自定义框架相关的知识,希望对你有一定的参考价值。
mvc架构
三层架构:
表示层(ui)、业务层(BLL)、持久层(DAL即Dao层:数据访问在,增删该查)
是由三层架构可以将开发的流程进行细分,表示层处理请求以及响应,数据的显示。业务层处理业务逻辑,持久层负责惊醒数据的持久化操作。
mvc:
控制器(controller)、模型(model)、视图(view)
使用mvc架构可以更好的组织对象,比如处理请求就交给控制器来完成,业务处理或者数据传递交给模型,数据的显示交给试图来处理。
不管是三层架构还是mvc都是架构上的概念,本身没有任何的引入内容,只是这些架构模式可以更好的组织我们的类,使用sanc架构,可以让我们的结构跟更加清晰,方便以后的维护。使用mvc可以更好的组织对象,让模块之间能够解耦
mvc:
m:model 是做数据传递,增删改查业务
c:controller:接收请求,委托模型进行业务处理
v:view:展示模型数据
javweb m:javabean c:servlet v:jsp
三层架构:javabean,域模型层,主要作用适用于在三层之间进行数据传递,贯穿三层
mvc:javabean。模型,javabean组件,负责业务,数据处理
mvc架构适合开发什么程序:
由于javabean组件:既要处理数据传递,又要处理业务逻辑,以后难于维护,业务庞大的项目不推荐字节用mvc。mvc适合开发业务逻辑不复杂的项目
三层架构:
适合业务比较复杂的项目,分层明确,每层都有自己的任务,每层尽量做到解耦
缺点:层数太多l,导致简单的也业务反而复杂
mvc优化:
两个架构之间的来联系:
将mvc架构拆分:
javabean组件:包括业务层,持久层,域模型层
而comtroller+jsp正好就是表示层的内容
在三层架构中。mvc属于表示层的框架,但是单独使用mvc的时候就是独立的框架
拆分后
在此基础上我们自定义一个mvc框架:
架构设计:
目前servlet,filter技术都能接收请求
第一步:设计整个架构
先创建一个可以接收用户请求的servlet重写service方法,用service将用户的请求分配到正确控制器进行处理
具体步骤:
新建controller包,在包中写好控制器然后在架构中加入config。properties文件,目的是告诉servlet读取的类所在的包是哪一个,可以解决盲目去找controller。提高系统效率
config.properties文件中都是键值对的文件:
所以在里卖弄存入controller(控制器的包名)和为它取一个名字方便servlet等会读取
在xml配置servlet是,添加
<init-parpam>
<param-name>为你的config.properties文件取一个名字</param-name>
<param-value>填config.properties的文件名称</param-value>
</init-param>
在servlet重写init方法
在init方法中
先用config.getInitparameter("自己为properties文件取的名字")
然后得到dervlet的类加载器.getResourceAsStream(放入上面方法得到的结果)此方法会返回一个输入流
然后利用properties的load()方法将读出的数据保存起来。此时读取出来就是我们config.proPerteis文件中的键值对
接着使用properties对象提供的getProperty(“config.properties文件中的键”)就能取出文件中的包名
拿到包名后还是使用servlet类加载器.getRessource("/"+上面方法得到的包名使用.replaceall()方法将包名中的“.”替换wei"/")得到当前项目的全限定地址加包名,即控制器包的url地址;
将得到的地址.getfiles()方法转换为文件地址。
在将得到的文件地址.listfiles()方法将其转换为以以路径名数组,
循环取出当中每一个数据加.getName()方法得到得到数据的名称.replace()方法将.class后缀去掉。得到控制器的路径
在把上面的包名加“.”在加上控制器的路径,即得到控制值的全限定路径,将这些路径全部存放到一个集合中方便下面利用反射加载控制器的实例
以上是关于自定义框架的主要内容,如果未能解决你的问题,请参考以下文章
设计模式(三十二)----综合应用-自定义Spring框架-自定义Spring IOC-自定义Spring IOC总结
线程1:自定义框架Swift中Reachability框架中的signal SIGABRT
我的自定义Spring框架 | 自定义Spring IoC功能