58同城开源的轻量级web框架 https://github.com/58code/Argo
很多网站在建设初期都会选择PHP .net,随着业务规模不断扩大,开发需求增多,已经各种成本问题,逐渐得向JAVA过渡。过渡过程中,架构师们根据各自业务特点及需要,规划出技术平台的框架,然后面对着JAVA社区和各种形形色色的开源产品。
在这里不得不提的是58文化:简单、高效
同样适用于技术选型和平台搭建,每一个应用框架、RPC服务甚至是工具类,都要足够简单、高效、可依赖。
有两种代码是没有bug的:1. 逻辑复杂到没有人能明白其中的运行轨迹,而最终结果总是对的。2. 逻辑简单到每个人都能明白代码的每一个细节,要做的事一目了然。
其中的取舍很明显了吧,完成功能的基础上,足够简单是终极目标。
好了,废话不多说,下面首先跑一个demo试试
从github下载的代码中有个demo项目 company-sample,可以直接运行(建议使用mvn插件 jetty:run或tomcat:run,例子中已经依赖两种jetty插件),打开 http://localhost/hello 即可看到效果
细心的朋友会发现,demo中并没有web.xml
这是因为Argo基于servlet3.0,web.xml是可以省略的,关于servlet3.0,请参考 http://www.ibm.com/developerworks/cn/java/j-lo-servlet30/index.html?ca=drs-cn-0423
com.mycompany.sample.controllers.HomeController
这就是我们MVC中的C,其中有四个import
import com.bj58.argo.controller.AbstractController;
import com.bj58.argo.ActionResult;
import com.bj58.argo.BeatContext;
import com.bj58.argo.annotations.Path;
1. AbstractController:
我们的MVC中的C的父类。
(这里再提一个内部规范:约定优于配置。工程中大量的配置可提高灵活性,但是负面影响就是难于维护,学习配置文件也需要一定过程,所以干脆,我们约定某种规则,减少不必要的配置文件)
C有三个要素:(1) 继承自AbstractController (2) 类名以Controller结尾 (3) 包名以controllers结尾
2. ActionResult:
所有的web返回结果都是ActionResult,页面、文字、图片各种类型……
3. BeatContext:
一次请求中的上下文环境,内置某些全局变量,还封装了一些更友好易于理解的方法。
beat().getClient() 可以理解成客户端对象,对cookie和上传文件有封装处理,forms()把表单封装成map……
4. Path:
这是Argo的内部注解,用于映射url,支持正则表达式和匹配注入对象。例如:
@Path("{phoneNumber:\\d+}") public ActionResult helloView(int phoneNumber)
Argo会把匹配到的 \\d+ 自动赋值给形参 phoneNumber
说完import,最后再说说demo中出现的内置方法(继承自AbstractController)
三个返回ActionResult的方法:
view(String viewName) 返回一个页面,系统默认采用velocity实现,viewName + .html存放的目录resources/views下
redirect(String redirectUrl) 跳转到一个地址(302临时跳转)redirect301(String redirectUrl) 跳转到一个地址(301永久跳转)
其他:
model() 返回变量列表,熟悉velocity的同学都知道,渲染vm模板的时候需要set变量
beat() 获得当前的上下文信息
request() 获得当前的request,也可以这样写 beat().getRequest()
response() 获得当前的response,也可以这样写 beat().getResponse()
logger() 获得当前类的logger
logger(String name) 根据名字获得Logger
logger(Class clazz) 根据类名获得Logger
argo() 这个对象慎用!里面包含了Argo的所有核心:DI、公共处理线程池、Servlet适配器(URL转发)
相关推荐
58同城的web框架 Argo ,Argo是开源的web框架,目前Argo支撑着58同城几乎所有的web站点,包括wap和手机端的访问...
Argo是开源的web框架,目前Argo支撑着58同城几乎所有的web站点,包括wap和手机端的访问等,现在wf每天处理10亿级的请求。经过长时间的运作与运行,证明Argo是一个可靠的、高效的web框架。 Argo在wf做了大量优化和...
ArgoUML-0.26开源.exe 推荐下载
代码超级干净,可以很容易地定制,很容易转化为任何类型的web应用程序,包括自定义管理面板,数据分析仪表盘,电子商务后端、CMS、CRM或任何SASS面板。 主要特色 响应布局(台式电脑、平板电脑、移动设备) 用Bootstrap...
Argo是一个开源原生容器工作流引擎用于在Kubernetes上开发和运行应用程序
zooviewer zookeeper web ui written in java.jsut like node-zk-web 这是一个查看zookeeper节点并可以...1,基于58开源的web框架Argo,全应用无一个配置文件。详见. 2,页业端用了jquery-tree ,方便查看zk的树状节点.
argouml一款很好的开源uml工具 中文版的
ArgoUML使用说明,官方英文版 ArgoUML是一个领先的开源UML模型工具,它支持UML 1.4的所有标准,可以运行于任何Java平台上。
ARGO入门手册1
统一建模语言 (UML) 用于设计软件。 ArgoUML 是一个开源的 UML 编辑器。 该插件将“组件的基于上下文的约束语言(CCL)”集成到 ArgoUML 中。 在 Berlios,我们说德语 - 查看 www.cocons.or
argo源码类图,运行时序图
UML argo建模工具下载,很实用的一个建模工具,方便实用,供喜欢的朋友交流使用
Argo数据的说明手册
ArgoUML是一个领先的开源UML模型工具,它支持UML 1.4的所有标准,可以运行于任何Java平台上。---来自《开源中国》https://www.oschina.net/p/argouml?hmsr=aladdin1e1
argo-UML 是开源的uml工具。 通过学习源代码来加强自己的实力。
ArgoUML开源的uml设计软件,可以和php集成!!
Argo是一个开源原生容器工作流引擎用于在Kubernetes上开发和运行应用程序 什么是 Argo 工作流? Argo Workflows 是一个开源容器原生工作流引擎,用于在 Kubernetes 上编排并行作业。 Argo 工作流作为 Kubernetes ...
从官网下的ArgoUML-0.34 用来画UML图
标签:argo-2.4.jar.zip,argo,2.4,jar.zip包下载,依赖包
标签:argo-2.8.jar.zip,argo,2.8,jar.zip包下载,依赖包