summercool+ mybatis框架解决方案

2019-03-22 23:11

Summercool+mybatis框架解决方案

Summercool框架

基于SpringMVC框架的summercool的特点

1) Spring MVC是基于Servlet实现的请求处理器,而Summercool框架将其改成为基于Filter实现(好处就不多说了,大家都懂的;只是提一下,Servlet是请求生命周期的结束,而Filter则不是请求生命周期的结点)

2) Spring MVC在一些特殊处理上处理的也不是非常的理想,定制化也不是完全可以扩展的;如下几点描述:

a) xml配置文件的缺省加载

1. 如果我们要是想加载一个或多个Spring的xml配置文件,那么我们要用来完成文件的加载

2. 在Summercool中只要将Spring的xml配置文件,放在classpath下面的\文件夹下面,应用 启动的时候,Summercool框架会自动扫描classpath下面的\文件夹中的xml配置文件。

3. 多个jar包里面\文件夹下面的xml配置文件,框架也会自动加载

b) 约定胜于配置

1. Spring MVC其实已经有约定胜于配置了,但是还是不我们想要的那种理想型的

2. /index.htm --> /IndexController.java /user/user_manager.htm --> /user/UserManagerController.java

上面才是我们的理想型的约定胜于配置的方式

c) 页面模块化和页面函数自定义

Summercool框架中的内置函数,写法如下: Html代码

${widget(\

内容体!

${widget(\

说明:上面的页面中,我们可以看出${widget()}函数,不需要页面的扩展名

1. ${widget(\的加载过程,--> /HeaderWidget.java --> /header.ftl

2. 如果/HeaderWidget.java不存在,则 --> /header.ftl 3. 这样,我们就可以把一个公共页面的处理类的逻辑,写在/HeaderWdiget.java里面;如:显示登录名称

d) 自定义URL模版

1. 一个应用中,经常会自定义一些特别的url地址,而非约定胜于配置而自动映射的地址

2. http://localhost:8080/item/#id#.html --> http://localhost:8080/item/12345.html

3. 上面的URL地址,是我们自定义的一个URL地址,1) 我们一般的期望是上面的地址规则可以配置,并且变量可以跟据一定规则替换;2) 我们还期望有一个对应处理该地址的Controller处理类,并且可以自动提取出规则地址中的变量,如#id#

e) f) g) h) i)

Cookies的自动加密和解密实现 基于Cookies的免登录实现 全局统一处理的权限实现

全局统一处理的图片自动缩放处理实现(包括cache) 多语言模版的实现(Spring MVC和Freemarker自带)

j) 多主题的实现(Spring MVC自带)

Summercool请求处理流程图

说明:

1. Summercool相比较于Spring MVC多了AroundPipeline、PreProcessPipeline、PostpRrocessPipeline和ExceptionPipeline这些元素。 2. 处理流程的一个细节也调整了一下,具体如下:

1) request --> /index.htm --> /IndexController.java --> /index.ftl

如果Spring MVC在没有/IndexController.java这个处理类的话,会自动返回NotFound;不会渲染/index.ftl

2) Summercool框架改造成:request --> /index.htm --> [/indexController.java] --> [/index.ftl]

如果没有/IndexController.java这个处理类,那么Summercool会自动查找/index.ftl页面

3) 上面的这个特性非常有用,因为有些动态页面(如帮助页面)是不需要Controller处理的,但是却包括一些动态信息

Summercool框架的相关说明

AroundPipeline接口说明

1) 因为Summercool框架是基于Filter实现的,所以AroundPipeline会过滤所

有的请求,因为AroundPipeline笔者也是跟据Filter的模式进行调用的 2) PriorityOrdered接口是一个顺序接口,这样可以指定一个AroundPipeline

的执行顺序

3) 这个类的主要应用场景是,可以对监控所有请求的执行时间,日志打点和定

制相关图片压缩功能

4) 该类的相关功能演示,详见如下代码:

publicclassRequestMonitorimplementsAroundPipeline {

privatestaticfinal String N_CHAR = \;

privatefinal Logger logger =

LoggerFactory.getLogger(RequestMonitor.class);

privateintorder;

privateUrlPathHelperurlPathHelper = newUrlPathHelper();

privateNumberStatisticUtilnumberStatisticUtil = newNumberStatisticUtil();

publicRequestMonitor() {

numberStatisticUtil.setInterval(N_CHAR, 1000L); urlPathHelper.setUrlDecode(false); }

publicvoidhandleAroundInternal(HttpServletRequestrequest, HttpServletResponseresponse,

AroundPipelineChainaroundPipelineChain) throws Exception { //

if (!logger.isDebugEnabled()) {

aroundPipelineChain.handleAroundInternal(request, response,

aroundPipelineChain); return; } //

longbeginTime = System.currentTimeMillis(); //

numberStatisticUtil.incrementAndGet(N_CHAR);

longthreadCount = numberStatisticUtil.getValue(N_CHAR); // try

{

aroundPipelineChain.handleAroundInternal(request, response,

aroundPipelineChain); } finally {

if (logger.isInfoEnabled()) {

String url =

urlPathHelper.getLookupPathForRequest(request); longendTime = System.currentTimeMillis(); SimpleDateFormatsdf = newSimpleDateFormat(


summercool+ mybatis框架解决方案.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:班级小组合作学习实施方案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: