zoukankan      html  css  js  c++  java
  • 提高生产力:Web开发基础平台WebCommon的设计和实现

    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

  • 相关阅读:
    ipv6 for openwrt odhcpd
    openwrt package Makefile
    openwrt 中个网络接口协议说明[转]
    openwrt Package aircrack-ng is missing dependencies for the following libraries:
    linux kernel 从cmdline 提取值
    js 上传文件进度条 [uboot使用]
    printk打印级别 [转]
    linux c 宏定义
    uboot 开发记录
    mac ssh scp命令
  • 原文地址:https://www.cnblogs.com/qitian1/p/6463615.html
Copyright © 2011-2022 走看看