简介:轻量封装Spring MVC
因为本人在国内最大的电子商务公司工作期间,深感一个好的Web框架可以大大提高工作效率,而一个不好的Web框架,又可以大大的降低开发效率。所以,在根据笔者在从事电子商务开发的这几年中,对各个应用场景而开发的一个轻量封装Spring MVC的一个Web框架。
笔者工作的这几年之中,总结并开发了如下几个框架: summercool( Web框架,已经应用于某国内大型网络公司的等重要应用)、summercool-hsf(基于Netty实现的RPC框架,已经应用国内某移动互联网公司)、summercool-ddl(基于Mybaits的分表分库框架,已经应用国内某移动互联网公司);相继缓存方案、和消息系统解决方案也会慢慢开源。Summercool框架做为笔者的第一个开源框架
框架地址: http://summercool.googlecode.com/svn/trunk/summercool-web
应用地址: http://summercool.googlecode.com/svn/trunk/summercool-petstore
工具地址: http://summercool.googlecode.com/svn/trunk/summercool-tools
说明:此框架要用到spring-tools文件夹中的security文件夹中的文件,使用此框架的人员请将security文件夹的内容替换到JDK中的security文件夹中
一、为什么有了Spring MVC框架,还要在封装一下呢?
1) Spring MVC是基于Servlet实现的请求处理器,而Summercool框架将其改成为基于Filter实现
(好处就不多说了,大家都懂的;只是提一下,Servlet是请求生命周期的结束,而Filter则不是请求生命周期的结点)
2) Spring MVC在一些特殊处理上处理的也不是非常的理想,定制化也不是完全可以扩展的;下面笔者就具体的列举一下:
A. xml配置文件的缺省加载
1. 如果我们要是想加载一个或多个Spring的xml配置文件,那么我们要用<import>来完成文件的加载
2. 在Summercool中只要将Spring的xml配置文件,放在classpath下面的"/summercool/spring"文件夹下面,应用启动的时候,Summercool框架会自动扫描classpath下面的"/summercool/spring"文件夹中的xml配置文件。
3. 多个jar包里面"/summercool/spring"文件夹下面的xml配置文件,框架也会自动加载
B. 约定胜于配置
1. Spring MVC其实已经有约定胜于配置了,但是还是不我们想要的那种理想型的
2. /index.htm --> /IndexController.java
/user/user_manager.htm --> /user/UserManagerController.java
上面才是我们的理想型的约定胜于配置的方式
C. 页面模块化和页面函数自定议
1. Summercool框架只提供了对freemarker页面模版定制化的支持
2. 比如一个页面"/index.ftl"中,分成三个部分"头(header)、体(body)、 尾(footer)";其中头和尾中共用的,那么一般写页面的时候,我们可能会用freemarker的<#include>标签
<html> <#include "/header.ftl"> 内容体! <#include "/footer.ftl"> </html>
说明:上面的页面中,我们可以看出;<#include>标签不是非常灵活;
1. 导入一个页面,要带上页面的扩展名;不是非常灵活
2. 导入的页面,没有办法定制导入子页面的相关业务逻辑(总不能处理一个子页面的时候要把逻辑写在页面里面吧?^_^)
3. 如果用Summercool框架中的内置函数,则写法如下:
<html> ${widget("/header")} 内容体! ${widget("/footer")} </html>
说明:上面的页面中,我们可以看出${widget()}函数,不需要页面的扩展名
1. ${widget("/header")}的加载过程,--> /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. Cookies的自动加密和解密实现
F. 基于Cookies的免登录实现
G. 全局统一处理的权限实现
H. 全局统一处理的图片自动缩放处理实现(包括cache)
I. 多语言模版的实现(Spring MVC和Freemarker自带)
J. 多主题的实现(Spring MVC自带)
相关等等的功能,说不清楚了。主要是Summercool提供了一些相关的接口可供随意扩展并改进了一些Spring MVC笔者自认为不好的地方;后面的章节笔者自一一阐述并给出演示示例。
相关推荐
笔者工作的这几年之中,总结并开发了如下几个框架: summercool(Web 框架,已经应用于某国内大型网络公司的等重要应用)、summercool-hsf(基于Netty实现的RPC框架,已经应用国内某移动互联网公司)、 summercool-...
summercool-ddl Automatically exported from code.google.com/p/summercool-ddl 学习了解使用!
Summercool-DDL便是一款基于MyBatis的分库分表框架,它的出现旨在简化数据库的扩展和管理过程,提高系统处理大数据的能力。 Summercool-DDL最初是从code.google.com/p/summercool-ddl项目自动导出的,这表明它曾经...
summercool-hsf Automatically exported from code.google.com/p/summercool-hsf 1.目前为止性能最高的RPC远程通讯框架 2.也可以做为手机长连接的Server,经测试已经达到了50W以上的性能长连接 (需调整linux内核...
笔者工作的这几年之中,总结并开发了如下几个框架: summercool( Web框架,已经应用于某国内大型网络公司的等重要应用)、summercool-hsf(基于Netty实现的RPC框架,已经应用国内某移动互联网公司)、summercool-...
在实际项目中,`summercool-ddl`可能是一个包含数据库创建脚本的文件,用于在实施分库分表前准备数据库结构。这些脚本可能包含了创建分片表的DDL语句,以及可能的视图和索引,以优化查询性能。 总之,Ibatis的分库...