servlet-优化

打印 上一主题 下一主题

主题 1721|帖子 1721|积分 5163

 起初的设计模式:

在服务器端有很多的serlvet组件,用户会发送哀求,而servlet又会访问DAO组件,DAO组件又去调用数据库DB,从数据库查询的数据再依次返回给Servlet,然后Servlet经过Thymeleaf等进行渲染相应给客户端。但这种根本的哀求方式会显得服务器端繁琐,下列进行初步修改


优化设计1(就是多个fruit相关的servlet整合为一个)

第一次修改:

一个哀求过来的时间,我们设想只有一个Servlet,对应的他会有一个service大概dopost,doget方法进行服务,(假设是service方法)在service内部根据你发过来的哀求去调用不同的方法。



优化设计2(通过反射机制获取需要调用的方法执行)

前景引入

在这个FruitServlet里面如果有很多方法,那我们第一次修改的switch-case会很多
(如果要检察某行代码就会显得很难,补充:ctrl+f可以检察关键字)


第二次修改

1.先获取当前类的所有方法

2.再使用for循环获取方法名称

3.找到和operate同名的方法,那么通过反射技术调用它


优化设计3(dispatcherServlet引入)

前景引入

我们在优化设计时使用反射机制来简化代码,但有多个Servlet我们是不是每个Servlet都需要写一个反射
好处:不需要FruitServlet等再继承使用反射,优化代码

第三次修改

将所有的哀求都交给DispatcherServlet,它根据用户哀求的不同去对应不同的Servlet,然后再定位到不同Servlet里面的方法

思绪

1.根据哀求的url获取ServletPash,然后ServletPath去截取字符串,解析出一个名字
2.解析加载我们的配置文件,从配置文件中读取一个个bean,放到map里面去
3.通过刚才得到的ServletPath去map里面找到能处理的对应哀求类。
第一步:通过servletPath获取hello


第二步:加载配置文件,字符串与类对应的map

2.1使用一个配置文件来实现hello对应的是HelloController

2.2在生命周期中调用init方法来实现


2.3init方法的作用说明

第三步:通过hello调用对应的HelloController




小结回顾

我们把之前的FruitServlet等当中的反射代码向前抽取到中央控制器(DispatcherServlet)当中去了,
这里我们假设发送一个哀求,前面的fruit.do,我们这些Controller在内存里面形成一个容器beanMap,这个容器里面会有一个一个组件,FruitController其实就和fruit.do对应,配置文件说明确的,解析了配置文件,把它里面的一个一个bean封装成map对象,再我们获取fruit.do的时间就能找到对应的FruitController






免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

勿忘初心做自己

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表