java无框架开发,DON: java 小型web项目快速开发框架,实现无配置,直接关注业务开发.主要解决请求分发解析...
#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项目快速开发框架,实现无配置,直接关注业务开发.主要解决请求分发解析...相关推荐
- Web经典BS快速开发框架,强大后台+简洁UI一体化开发工具
本框架旨在为.NET开发人员提供一个Web后台快速开发框架,采用本框架,能够极大的提高项目开发效率. 整个框架包括三个版本:.net,.net core,java(开发中) 以上三个版本中,.NET为 ...
- .NET版Web后台快速开发框架 Coldairarrow
来源:寒空飞箭 链接:http://www.cnblogs.com/coldairarrow/p/9626691.html 一.简介 本框架旨在为.NET开发人员提供一个Web后台快速开发框架,采用本 ...
- 从零开始搭建python flask+vue 小型web项目以及flask_sqlalchemy访问数据库
重零开始搭建python flask+vue 小型web项目以及flask_sqlalchemy访问数据库 前言 作者是一个前端开发者,之前从未接触过python,也没接触过后端开发,所有这篇文章中有 ...
- java路径Java开发中获得非Web项目的当前项目路径
最近使用开发的过程中出现了一个小问题,顺便记录一下原因和方法--java路径 Java开发中指定路径搜索文件也是经常遇到的,比如遍历某个目录下的文件.须要取得项目的路径.调用调查主要有两种 1.利用S ...
- java jsp框架_介绍几个开源的JSP开发框架
以下介绍几个开源的JSP开发框架. WebWork WebWork是由OpenSymphony组织开发的,致力于组件化和代码重用的拉出式MVC模式J2EE Web框架.WebWork目前***版本是2 ...
- java rest框架_比较Java REST文档框架
java rest框架 决定在记录REST API时选择哪种Java框架可能很麻烦. 在本博文中,我们将简要比较我们自己使用的REST Web服务的三个文档框架,以及它们如何与Spring框架(这是F ...
- 三流Java搞技术,二流Java搞框架,一流Java…
对于 Java 程序员来说,若想实现质的飞跃,还得靠"黄金五年". "黄金五年"其实是 Java 程序界流行的说法,指一个程序员从入职的时候算起,前五年的选择和 ...
- java mysql框架_盘点 Java 数据库访问框架——究竟哪个更适合你
本文将带您浏览和比较最受欢迎Java数据库访问框架(DAO层).假设您正在开发一个Java程序,有许多办法可以让您的应用连上数据库.下面会列举各数据库访问框架的适用场景,相信能够帮您选到适合项目的开发 ...
- java编码规范文档 下载_软件项目实训及课程设计指导——制定待开发项目中各种文档的规范...
软件项目实训及课程设计指导--制定待开发项目中各种形式文档的规范 1.制定对课程设计项目开发过程中的规范性要求 (1)从"形式"到"内容"两个方面控制和要求开发 ...
最新文章
- Spring BeanFactory与FactoryBean的区别及其各自的详细介绍于用法
- c++list支持索引吗_还在为不懂Python切片操作及原理而苦恼吗?漫画帮你立马理解掌握...
- iPad如何越狱?4.2.1完美越狱教程 一 (DFU 绿霸越狱)
- 三位数的茎叶图怎么看_贝德玛化妆品生产日期怎么看?贝德玛化妆品保质期怎么看?...
- 006_理解inode
- ryujinx模拟器linux安装教学,switch模拟器Ryujinx
- 用 Python 高效办公|一次写好100个word通知
- html隐藏地址栏,js新打开页面隐藏地址栏
- 谁有《线性系统理论习题与解答》郑大钟
- 一个权限管理系统如何设计
- 将8位的tif图片改为png图片
- 搭建STM32开发环境
- 启动mongoDB服务
- CentOS7部署YApi
- 工作,到底意味着什么
- 前端开发工程师的前传
- 【例题 8-4 UVA - 11134】Fabled Rooks
- 第一章 回归模型分析
- [幽默网文]本寺特此公示释永信大和尚悔过书
- 不坚持,P都不是--leo看赢在中国第三季(4)
热门文章
- 剑指 Offer II 108. 单词演变
- 19muduo_base库源码分析(十)
- ssm校园帮代服务系统的设计与实现答辩PPT模板
- 如何将一个完整项目推到码云_怎么将本地项目放到码云(gitee)上面?图文详解
- 潘多拉_最新Pandora潘多拉美国官网海淘攻略
- python os 遍历 子目录中所有文件_Python处理文件系统的10种方法 !
- python爬取王者_python 爬取王者荣耀高清壁纸
- 2019帝豪gs装软件_继悬浮式车顶之后,2019年这些设计将会成为主流!
- big sur java home_无法在macOS Big Sur上运行Eclipse
- java wsdl接口地址_java如何实现webservice中wsdlLocation访问地址的可配置化