Web开发中,存在着各种各样的重复性的工作。为了提高开发效率,不在当码农,我在思考和实践如何搭建一个Web开发的基础平台。

Web开发基础平台的目标和功能
1.提供一套基础的开发环境,整合了常用的框架配置和库。新项目开发时,不用再重新搭建。
2.提供一些基础的工具类库,比如文件操作、邮件发送、数据库CRUD操作、JSON转换。
3.权限系统设计。
4.异常处理和系统日志。
5.前台界面展示。

特别说明:因本人能力和经验有限,不少东西还未能实现,只能说点思路和看法。
我是用Java来实现我构思的WebCommon开发平台的,不熟悉Java的可以使用相应的语言和库实现。

1.搭建基础环境
  SpringMVC+Spring+Hibernate+Maven+MySQL
 
  a.MVC框架使用SpringMVC,比较简洁,不需要过多的配置。
  b.事务管理回滚、bean注入等使用Spring Ioc。
  c.持久层使用Hibernate,主要是为了写更少的代码。性能问题暂不考虑。
  如果需要较高的性能,建议后期优化Hibernate配置,或者使用Mybatis框架。
  d.使用Maven打包和管理各种库。
  e.主要针对MySQL数据库,其实有了Hibernate不必过分关心数据库的移植问题。
 
  使用Eclipse作为开发工具。
 
2.引入第3方工具类库
  a.Commons-Lang,增强了java.lang包,对String,Date,Integer等基础数据类型增加了很多实用的功能。
  b.文件创建、删除、移动等操作。java.file提供的API不够简洁,使用Commons-IO,Google-Guava,Jodd这3个库中的
  1个或多个来完成。
  c.文件上传。SpringMVC+CommonsIO+Commons-Fileupload可以很简单的实现文件上传功能。
  d.邮件发送。Commons-Mail,Jodd Mail,Spring Mail都可行。
  e.文件压缩。Commons-Compress提供了zip,tar等多种格式的压缩功能。
  f.其它常用库,dom4j处理xml,commons-beanutils处理bean,commons-collection和Google-Guava的集合库。

3.自定义的一些工具类库
a.属性加载器PropertiesLoader,加载属性,获得属性的值。
提供的API如下:
public Properties getProperties();
public String getProperty(String key);
public Integer getInteger(String key);

b.类型转换。
  public static String toString(Object obj);
  借鉴第3方的Commons-Converter,Google-Guava等自带的类型转换工具类,或者完全使用第3方的库进行类型转换。
  public static Double toDouble(Object cell);
  这种形式的API最好了。
 
c.JSON工具类JsonUtils。
  把Java 字符串、数组、集合、Map、POJO类型转换成JSON字符串类型,把JSON字符串转换成Java字符串、数组、集合、Map、POJO等类型。
  提供的API如下形式:
  public static String bean2Json(Object bean);
  public static Object json2Bean(String json, Class<?> beanClazz);
  简而言之,就是希望Json格式的字符串和Java各种对象之间互相转换。
 
d.参数校验。校验参数符合一定的格式,比如是否为空,Email,URL,字符串长度等。

e.自定义数据结构。
比如增强的Map,TypedMap提供以下形式的API:
public Integer getInt(String key);
自带类型转换功能,这样SpringMVC使用TypedMap接收参数后就不必写一大段重复代码进行类型转换了。

f.异常处理和系统日志。
系统内部异常、外部非法访问异常,异常发生后的错误处理和日志记录,
系统监控,404,403,500跳转和处理。

g.加密和安全。
SpringSecuirty中有一些加密工具类,如md5,sha1。
当然,也可以使用其它的或者自己实现。

h.持久层通用API。

i.其它常用功能
报表下载,图表展示,搜索等

4.权限系统设计
使用SpringSecurity设计一套较为通用和常用的权限模型。
user(id,roleId,isSuper) 用户,1个用户只能有1个角色
role(id,name) 角色,1个角色可以有多种用户
authority(id,name)权限
role-authority 角色和权限之间的关系,角色和权限之间是多对多的关系

5.前台界面
a.原型库,各种各样的静态Html界面。每次设计界面,参照已有的原型界面。
b.表单验证。jquery-validate等验证框架。
c.表格、对话框、分页、日历等各种常见UI组件。

总结:Web开发中,有很多重复的功能和设计。增强复用,构建一套Web开发基础平台-WebCommon是非常有意义的事情。
本文只是抛砖引玉,介绍了我对该“美好”系统的一种设计和实现思路。
欢迎给予反馈,给出一些富有建设性的意见和建议。

还有很多内容本文没有谈到,如有必要,将在后续文章中描述。

好友反馈
1.怎么用jquery validate?

好友认为该框架不太好。
我确实没有详细调研每个框架,自己使用的经验也不够。

2.异常和日志处理 感觉没说好。
我打算专门写篇文章来总结 异常和日志处理这部分。
Web开发的那点事–异常和日志处理.txt

3.我说的 很多都是 比较常见的情况,不是一直建议使用的。
比如Hibernate 很多时候就不常用了,
我主要面向初期考虑,等有经验了才能改良,现在好多都不懂啊,想自己创造机会实践下。

“你既然想贵广,就应该是改良后的“,目前没有想推广,仅仅是分享,寻求建议和反馈的。

相关阅读
1.提高生产力:发送邮件API和Web服务(包含源码)
http://fansunion.cn/articles/2337

2.提高生产力:Web前端验证的标准化
http://fansunion.cn/articles/2277

3.提高生产力:数据持久层(DAO)常用功能–通用API的实现
http://fansunion.cn/articles/2264

4.提高生产力:开源Java工具包Jodd(Java的”瑞士军刀”)
http://fansunion.cn/articles/2246

5.提高生产力:2个方法,软件复用和知识库
http://fansunion.cn/articles/2038

6.提高生产力:SpringMVC中,使用扩展数据类型TypedMap接收Web请求参数
http://fansunion.cn/articles/2289

7.提高生产力:文件和IO操作(ApacheCommonsIO-汉化分享)

http://fansunion.cn/articles/2094

更多文章请参考我的 CSDN博客 http://blog.csdn.net/FansUnion

或我的博客网站-小雷网(http://FansUnion.cn)

原文链接:http://FansUnion.cn/articles/2362

提高生产力:Web开发基础平台WebCommon的设计和实现相关推荐

  1. Web开发(一)·期末不挂之第一章·Web开发基础(不背就挂的基础知识)

    Web开发基础 一.网站的访问过程 ✪✪✪ 二.Web应用 ✪✪✪ 三.其他 一.网站的访问过程 ✪✪✪ 网址: URL(互联网上标准资源的地址)组成部分: 协议:http:// 域名:-com/cn ...

  2. web开发基础(html+CSS)

    web开发基础 html+CSS 概念 万维网概念 Web浏览器 Web服务器 URL web应用领域 B/S架构(Browser/Server) C/S架构(Client/Server) web系统 ...

  3. java web 怎么实现直播_java web开发直播平台可以实现但有缺陷

    java web开发直播平台可以做到,现在已经有很多开源Java直播工具了.Java可以实现全部功能,而且开发成本可能还略低.但是易用性,运营成本等各方面,都是不行的. java web开发直播平台的 ...

  4. 掌握web开发基础系列--物理像素、逻辑像素、css像素

    思考一下 什么是物理像素?什么是css像素? 在 <掌握web开发基础系列--长度单位> 这篇文章中已经介绍过了css像素单位--px,这篇文章详细探讨一下设备物理像素和css像素之间的关 ...

  5. 移动Web开发基础-比例盒子

    前言 上篇在移动Web开发基础-百分比+flex布局方案中说到了比例盒子的实现,因为在移动端,需要适应各种屏幕宽度的设备,所以我们的图片以及其他一些元素需要根据屏幕宽度自适应的等比例缩放,这里就需要用 ...

  6. (一)移动端 Web 开发基础

    文章目录 一.移动 Web 开发基础概念 1. 像素 (1) 分辨率 (2) 物理像素 (3) CSS 像素 (4) 设备像素比 (5) 标清屏和高清屏 (6) 缩放 (7) PPI / DPI 2. ...

  7. web发布与html ppt,web开发基础_HTML.ppt

    web开发基础_HTML Web开发基础--HTML 讲解提纲 Html简介及结构 网页中的文本的使用 网页中的列表使用 网页中的图像的使用 超文本链接 网页中的多媒体的使用 表格.框架及层 输入表单 ...

  8. Go web 开发数据库管理平台,利用远程过程调用(RPC)实现对MySQL数据库的管理和使用

    Go web 开发数据库管理平台,利用远程过程调用(RPC)实现对MySQL数据库的管理和使用 前言 做DBA,最基本的工作就是需要管理公司的数据库系统.工作中,常常需要维护的数据库数量是非常多的.小 ...

  9. 移动Web开发基础-flexible布局方案

    概述 前面我们已经已经了解了两种基本的布局方案,移动Web开发基础-百分比+flex布局方案 和 移动Web开发基础-rem布局,其中rem布局方案和我们今天要了解的flexible布局方案是有关系的 ...

最新文章

  1. 光流数据集FlyingChairs下载连接
  2. rdd数据存内存 数据量_spark系列:spark core 数据交互技术点(数据模型)
  3. ASP.NET Core 源码阅读笔记(5) ---Microsoft.AspNetCore.Routing路由
  4. 《React Native 精解与实战》书籍连载「React Native 网络请求与列表绑定」
  5. .Net Core下基于Emit的打造AOP
  6. 傅里叶级数的数学推导
  7. es安装IK中文分词器
  8. 分布式时序数据库InfluxDB
  9. python爬虫中文乱码解决方法
  10. 【剑指 offer】—— 浮点数的相等性判断
  11. LinuxC语言のUDP简易聊天室 sokcet
  12. 左侧固定 右侧自适应
  13. C# list删除 另外list里面的元素_Java集合大全Map,Set,List
  14. 【斗地主 javascript js 斗地主 AI 人机 网页在线】基于专家系统的斗地主AI算法
  15. IGBT 直通短路过程问题分析
  16. RFID NFC NfcA NfcB NfcF NfcV Ndef NdefFormatable相关详解
  17. 支付宝小程序授权/获取用户信息
  18. 001. Nginx场景,优点,组成部分和编译
  19. 微信小程序布局-图片+文字
  20. PHP指定日期(时间戳转换)

热门文章

  1. Android 集成友盟统计
  2. 关于JackJson接收前端UTC格式化报错SON parse error: Cannot deserialize value of type `java.util.Date` from String
  3. 2019全网最全面试详解.
  4. CCNA 认证学习(二)
  5. rxswift_RxSwift
  6. 如何成为一名游戏开发程序员
  7. linux --chdir() 改变当前工作目录函数
  8. RabbitMq安装Web界面插件报错
  9. CAD制图初学入门:如何在CAD图纸中插入图框?
  10. CyclicBarrier实现赛马游戏