敝人曾在不一样项目中使用JSP-Servlet、SpringMVC,Play2以及JFInal作过WEB开发,对每一个框架的易用性和可扩展性都有必定的了解。我也经常会思考这样一个老生常谈的问题:如何选择一个合适的WEB开发框架?如今从我我的的实践体会上来简单的谈一谈。java
1、SpringMVCsql
SpringMVC最让我感到兴奋的是URL映射以及参数处理,这用起来会很是方便实用!数据库
@RequestMapping(value = "/v1/order/{dealId}/user/{userId}", method = {RequestMethod.POST, RequestMethod.GET}) public @ResponseBody WebResponse createOrderOld(@RequestBody OrderParam param, @RequestParam Long userid, @RequestParam(value = "medium", required = true) String client, @PathVariable Long dealId , HttpServletRequest request) { ......
从这个典型的例子上咱们来分析:编程
1)"/v1/order/{dealId}/user/{userId}":是URL访问形式,其中"{dealId}"是一个可变参数,具备由"@PathVariable Long dealId"来接收;性能优化
2)method = {RequestMethod.POST, RequestMethod.GET}:限定了http请求访问方式;并发
3)@RequestBody OrderParam param:Spring会解析http request body里的JSON内容并自动转化为OrderParam对象,节省了咱们大量的编码工做;app
4)@RequestParam(value = "medium", required = true) String client:medium是必须传递的,结果最终赋予client。框架
这里仅仅列出来常见的这几种使用形式,其余的诸如格式校验之类的限定你们可自行尝试,再也不赘述。仅从这个方面看,SpringMVC作得确实比较便捷!但SpringMVC让人诟病的地方是由于配置太多,这一点能够经过注解的方式来缓解,同时Spring Boot也是针对这个问题作的改进和优化!异步
2、Play2性能
Play2能够开发基于Java、Scala的项目,官网有建立项目的简单介绍:
经过命令行便可建立一个标准的WEB应用模版,有点相似于ROR。整个项目的目录结构以下:
其中app是写业务逻辑代码的地方,conf是项目集中配置点(系统参数、日志、DB等),build.sbt相似于Maven里的pom.xml,集中管理依赖的地方。
在conf/routes中,是对URL的集中配置点:
routes:
GET /user/login controllers.UserController.login GET /user/logout controllers.UserController.logout
单行、一对一的URL与Controller.Action的对应关系。
使用Play2开发可能并无想象中那么便捷和容易上手,须要必定的学习。不过好处也是有的,就是可使用Scala来方便的实现异步、并发的应用,固然这是Scala的语言特色。
3、JFinal
JFinal是目前坛子里最火的项目之一,我也用JFinal作项目开发有4年功夫了,整体上是小巧,很适合小团队实用,是对Servlet的极简封装。这样太简单也会出现一个问题,就是要求对RD的编程素质比较高,不然编码质量很难保证。
JFinal实现的MVC框架中,最吸引个人是Model层和DB实现,咱们能够直接经过Db.sql("select *...")来操做数据库,很直观简单!JFinal约定Controller里定义的public void xxx()方法才是一个真正的Action,这就须要咱们本身来处理参数,经过getRequest ().getParaXXX来获取并校验,徒增非核心业务的代码量。
4、What are you looking for?
其实,从上面我对这几个框架优缺点的分析可知,我理想中的一个简单、易用、灵活的的WEB框架所应具有的品质有:
1)简单灵活的参数处理:提供基于注解的实现并能够自定义注解,像SpringMVC同样;
2)直观方便的DB处理:像JFinal Model&Db同样,提供充血的Model、SQL再也不成为一个配置项;
3)良好的性能:一个太宽泛的概念,但异步&并发是性能优化当中必不可少的手段,Scala下降了这一门槛;
4)剩下的业务实现就由RD来保证吧!
5、How should I do?
是继续寻找仍是DIY?DIY也许是目前一个比较靠谱的方式,集合这些框架各自的优势,而后作一个适合本身使用的微型产品也是一种成长和提升!