#DON框架介绍

##目标

启动零配置快速进入开发

开发时,请求controller路由零配置

配合windfly.jar工具包快速开发

最终实现加入jar包即可快速开发

##主要特点

无需配置请求url映射,自动根据url映射到对应的类和方法上

根据请求类方法的返回值不同,自动输出不同类型值

内置常用工具类集合,方便实现常用功能

DON能解决的问题

无需任何配置,按照标准的web项目组织结构生成目录,加入jar包,可直接去写业务逻辑.

无需配置url和控制器的映射,通过固定url格式自动映射到类的方法上

控制器使用POJO类,无侵入性,可方便做单无测试

DON的限制

项目的结构必须是标准组织结构

开发中IDE中的class生成目录必须指定为 /WEB-INF/classes/

动态页面必须为JSP,并放置于目录 /WEB-INF/jsp/

url固定后缀名,即 .dhtml

控制器类名要以固定后缀结尾

页面必须以 UTF-8 编码

同一个类中不能有同名的controller方法,即不支持重载

JDK1.8+

web项目的组织结构

标准的web组织结构

WebContent

+---WEB-INF

+---/classes/

+---/lib/

+---/jsp/

+---web.xml

DON 使用说明

URL请求格式说明

http://上下文路径/类名前缀/方法名.dhtml

http://testWeb/Index/main.dhtml

http://Index/main.dhtml

DON只对以 .dhtml 结尾的请求路径进行解析处理

上下文路径是看项目在容器中的部署情况,核心在于 Index/main.dhtml

Index 指定了将会去查找 IndexController.java 类

main 指定了会去执行 IndexController.java 中的 main(Map map); 方法

对于 .dhtml 请求,如果格式不对会抛出异常 如: http://testWeb/xxx/Index/main.dhtml 会抛异常

控制器类

普通pojo类,其类名要以 Controller 结尾

类名不可重复,即在不同包中不能有相同名称的控制器.

控制器方法说明

方法名不能有相同的多个,即不可重载

方法的参数不固定,请求的参数值会自动根据参数名注入到方法的参数中

除请求参数外,可注入类型为HttpServletRequest,HttpServletResponse,HttpSession,Map类型参数,request主要用于登录会话处理和下载流处理。map参数中包含了请求的所有参数

方法参数可注入pojo bean,根据bean的set/get方法注入参数

方法参数注入Map的类型,除了包含了请求参数外,向map中存值也就相当于调用request.setAttribute(k,v)

方法的返回值不固定,参考返回值说明

方法不能为 static

必须为 public

示例: public String main(long id,Map map);

方法体中取参数时可直接对map进行操作

long _id = (Long)map.get(id);

控制器方法返回值

根据返回值类型,对页面进行不同的渲染

String字符串,如果有特殊前缀则进行特殊处理. redirect: 跳转请求 string: 直接输出字符串到页面中.否则渲染在/WEB-INF/jsp/目录中相应路径的jsp页面.示例:

return "redirect:/Index/main.dhtml"; // 跳转到http://Index/main.dhtml

return "string:hello"; // 直接在页面中输出hello

return "admin/hello"; // 渲染 /WEB-INF/jsp/admin/hello.jsp

非字符串对象类型,返回json数据,自动转换

// 有User类,并有name和age属性

return new User("张三",12); // 返回 {"name":"张三","age":12}

上传文件功能

页面中form类型设置 enctype="multipart/form-data"

属性的value不能为中文,后台将以iso8859-1格式接收文件

单个上传文件内容不能大于10M

方法一

直接在参数中取属性名,value类型为 File

File logoFile = (File)map.get("logoP");

String remark = (String)map.get("fileRemarkP");

saveFile(logoFile,remark);

方法二

直接在参数中取属性名,value类型为 String,框架会自动保存文件到resources/upload/ 文件夹下,传入文件相对路径。注意,这种方式只能使用String 接收,不能使用Map接收

public String upload(String filePath){

savePath(filePath);

return "string:success";

}

服务层使用建议

DON 框架并没有过多的涉及到服务层

如果项目不大且已经确定了数据存储方式,一般都可以去除数据层,直接在服务层进行数据处理,这样可以更快的进行项目开发.配合windfly-util.jar包中的AR方式进行JPA快速开发

如果对后期数据存储不确定,可能会换数据处理的实现,则要进行数据层的分离,分离时还要考虑服务层的事务整体性.

数据层使用建议

DON 框架中对于数据性不过多涉及,建议使用windfy-util项目中的 util使用JpaEntityBase类 的工具类.

对于数据操作建议使用JPA

JPA实现建议使用 eclipselink,一个jar包即可

将 persistence.xml 放置于 /WEB-INF/classes/META-INF/persistence.xml

内容,可适当的修改,使用derby可谓是最方便的了,加入derby.jar包,复制以下内容,直接使用

org.eclipse.persistence.jpa.PersistenceProvider

false

操作实体类时,实体类继承JpaEntityBase类,可方便使用继承的方法

class UserEntity extends JpaEntityBase

UserEntity user = new UserEntity();

user.setName("jone");

user.save();

user.setName("jake");

user.update();

user.delete();

// 查询分页

user.setPageCondition("name like :name",MapUtil.toMap("name","%j%"),1,10);

PageBarUtil users = user.searchPageBarUtil();

版本更新

todo

启动加入版本号

trunk

v1.3.1

参数注入时,Date类型的增加自动解析格式: yyyy-MM-dd HH:mm:ss,yyyy-MM-dd,yyyy-MM-dd HH:mm,yyyy-MM,yyyy,HH:mm:ss,HH:mm

v1.3

分离util包,加入windfly-util.jar包

beanutil中toFiledsString方法更改private > public

JsonResult code为0时,字段变动 msg > data

IE11的application/json问题处理

增加 WeiXinUtil 工具类

fix bug: ie edge 上传文件,文件名全路径错误

上传文件增加url全路径前缀配置

修改,上传文件后缀名配置为空时,文件后缀名不限制

增加微信退款方法

fix bug:修复post方法获取字符串中丢失换行符问题

v1.2

整合windfly-util代码

去除log4j代码

controller参数中增加自有TypeMap参数

请求参数名相同,参数值转为List

增加上传文件大小限制,在don.config文件中配置

增加application/json头信息请求处理

上传参数是文件时,参数值根据接收参数类型自动自动转换,Stirng类型转换成访问地址

BeanUtil增加辅助方法

fileutil增加上传文件默认处理方法

JpaEntityBase fix bug:使用update静态方法时会处理所有数据

JsonUtil fix bug:部分类属性无权访问

NumberByteUtil 增加辅助方法

增加MessageException类

v1.1.0.5

fix bug:增加请求头是application/json的内容处理

controller请求参数增加TypeMap类型

fix bug:上传文件多了两个字节

fix bug:DBUtil部分方法连接未关闭

去除slf4j包依赖

将util类分为windfly-util项目包

v1.0.2.1

fix bug:上传文件流行中不是Content-Disposition时抛异常

fix bug:上传文件名为空时异常

v1.0.0.0

java无框架开发,DON: java 小型web项目快速开发框架,实现无配置,直接关注业务开发.主要解决请求分发解析...相关推荐

  1. Web经典BS快速开发框架,强大后台+简洁UI一体化开发工具

    本框架旨在为.NET开发人员提供一个Web后台快速开发框架,采用本框架,能够极大的提高项目开发效率. 整个框架包括三个版本:.net,.net core,java(开发中) 以上三个版本中,.NET为 ...

  2. .NET版Web后台快速开发框架 Coldairarrow

    来源:寒空飞箭 链接:http://www.cnblogs.com/coldairarrow/p/9626691.html 一.简介 本框架旨在为.NET开发人员提供一个Web后台快速开发框架,采用本 ...

  3. 从零开始搭建python flask+vue 小型web项目以及flask_sqlalchemy访问数据库

    重零开始搭建python flask+vue 小型web项目以及flask_sqlalchemy访问数据库 前言 作者是一个前端开发者,之前从未接触过python,也没接触过后端开发,所有这篇文章中有 ...

  4. java路径Java开发中获得非Web项目的当前项目路径

    最近使用开发的过程中出现了一个小问题,顺便记录一下原因和方法--java路径 Java开发中指定路径搜索文件也是经常遇到的,比如遍历某个目录下的文件.须要取得项目的路径.调用调查主要有两种 1.利用S ...

  5. java jsp框架_介绍几个开源的JSP开发框架

    以下介绍几个开源的JSP开发框架. WebWork WebWork是由OpenSymphony组织开发的,致力于组件化和代码重用的拉出式MVC模式J2EE Web框架.WebWork目前***版本是2 ...

  6. java rest框架_比较Java REST文档框架

    java rest框架 决定在记录REST API时选择哪种Java框架可能很麻烦. 在本博文中,我们将简要比较我们自己使用的REST Web服务的三个文档框架,以及它们如何与Spring框架(这是F ...

  7. 三流Java搞技术,二流Java搞框架,一流Java…

    对于 Java 程序员来说,若想实现质的飞跃,还得靠"黄金五年". "黄金五年"其实是 Java 程序界流行的说法,指一个程序员从入职的时候算起,前五年的选择和 ...

  8. java mysql框架_盘点 Java 数据库访问框架——究竟哪个更适合你

    本文将带您浏览和比较最受欢迎Java数据库访问框架(DAO层).假设您正在开发一个Java程序,有许多办法可以让您的应用连上数据库.下面会列举各数据库访问框架的适用场景,相信能够帮您选到适合项目的开发 ...

  9. java编码规范文档 下载_软件项目实训及课程设计指导——制定待开发项目中各种文档的规范...

    软件项目实训及课程设计指导--制定待开发项目中各种形式文档的规范 1.制定对课程设计项目开发过程中的规范性要求 (1)从"形式"到"内容"两个方面控制和要求开发 ...

最新文章

  1. Spring BeanFactory与FactoryBean的区别及其各自的详细介绍于用法
  2. c++list支持索引吗_还在为不懂Python切片操作及原理而苦恼吗?漫画帮你立马理解掌握...
  3. iPad如何越狱?4.2.1完美越狱教程 一 (DFU 绿霸越狱)
  4. 三位数的茎叶图怎么看_贝德玛化妆品生产日期怎么看?贝德玛化妆品保质期怎么看?...
  5. 006_理解inode
  6. ryujinx模拟器linux安装教学,switch模拟器Ryujinx
  7. 用 Python 高效办公|一次写好100个word通知
  8. html隐藏地址栏,js新打开页面隐藏地址栏
  9. 谁有《线性系统理论习题与解答》郑大钟
  10. 一个权限管理系统如何设计
  11. 将8位的tif图片改为png图片
  12. 搭建STM32开发环境
  13. 启动mongoDB服务
  14. CentOS7部署YApi
  15. 工作,到底意味着什么
  16. 前端开发工程师的前传
  17. 【例题 8-4 UVA - 11134】Fabled Rooks
  18. 第一章 回归模型分析
  19. [幽默网文]本寺特此公示释永信大和尚悔过书
  20. 不坚持,P都不是--leo看赢在中国第三季(4)

热门文章

  1. 剑指 Offer II 108. 单词演变
  2. 19muduo_base库源码分析(十)
  3. ssm校园帮代服务系统的设计与实现答辩PPT模板
  4. 如何将一个完整项目推到码云_怎么将本地项目放到码云(gitee)上面?图文详解
  5. 潘多拉_最新Pandora潘多拉美国官网海淘攻略
  6. python os 遍历 子目录中所有文件_Python处理文件系统的10种方法 !
  7. python爬取王者_python 爬取王者荣耀高清壁纸
  8. 2019帝豪gs装软件_继悬浮式车顶之后,2019年这些设计将会成为主流!
  9. big sur java home_无法在macOS Big Sur上运行Eclipse
  10. java wsdl接口地址_java如何实现webservice中wsdlLocation访问地址的可配置化