jfinal-rest是jfinal的轻量级RESTful扩展,使用非常方便,看了DEMO就可以用了。
Config示例代码:
public class Config extends JFinalConfig { @Override public void configConstant(Constants me) { me.setDevMode(true); //设置默认渲染json me.setMainRenderFactory(new IMainRenderFactory() { @Override public Render getRender(String view) { return new JsonRender(); } @Override public String getViewExtension() { return null; } }); } @Override public void configRoute(Routes me) { //配置路由,三个参数:访问路径(API版本),jfinal路由对象,要扫描的包(包下加了API注解的controller会被扫描) RestKit.buildRoutes("/v1", me, "peak.v1"); } @Override public void configPlugin(Plugins me) { //TODO 配置数据库等插件 } @Override public void configInterceptor(Interceptors me) { } @Override public void configHandler(Handlers me) { //配置handler RestKit.buildHandler(me); } }
Controller示例代码:
@API("/tickets/:ticketId/messages") public class MessageController extends Controller { /** * 获取单个数据或者列表 */ public void get() { //路径里定义的参数变量,需要通过getAttr()方法获取 String ticketId = getAttr("ticketId"); String messageId = getPara(); //GET /v1/tickets/xxxx/messages if (StrKit.isBlank(messageId)) { Pagepage = null; //TODO 分页查询message setAttr("error", 0); setAttr("data", page); return; } //GET /v1/tickets/xxxx/messages/xxxx Message message = null; //TODO 查询单个message数据 setAttr("error", 0); setAttr("data", message); } /** * 添加新数据 */ public void post() { //POST /v1/tickets/xxxx/messages String ticketId = getAttr("ticketId"); Message message = getModel(Message.class); message.set("ticketId", ticketId); message.save(); setAttr("error", 0); setAttr("id", message.getInt("id")); } /** * 部分更新数据 */ public void patch() { //PATCH /v1/tickets/xxxx/messages/xxxxx String messageId = getPara(); Message message = Message.dao.findById(messageId); //TODO 为message设置各个要更新的属性 message.update(); setAttr("error", 0); } /** * 数据整体更新 */ public void put() { //PUT /v1/tickets/xxxx/messages/xxxxx int messageId = getParaToInt(); Message message = getModel(Message.class); message.set("id", messageId); message.update(); setAttr("error", 0); } /** * 删除数据 */ public void delete() { //DELETE /v1/tickets/xxxx/messages/xxxxx String messageId = getPara(); Message message = Message.dao.findById(messageId); message.delete(); setAttr("error", 0); } }
在阅读之前, 先参考 当看完这些之后, 大概应该就能理解, RESTful 的规范, 以及 JFinal 的路由实现方式. 首先, 先看下 JFinal 目前的 RESTful 风格路由实现. 翻开 com.jfinal.core.ActionMapping#getAction 方法 /** * Support four types of url * 1: http://abc.com/contr
jackson-spring @JsonIgnore public String getPassword() { return mPassword; } If you are using Spring 4 version, You will have to do following, Update dependency <dependency> <
一、 Understanding REST(理解REST) 原文: REST (Representational State Transfer----》具象状态传输) was introduced and defined in 2000 by Roy Fielding in his doctoral dissertation. REST is an architectural style for
import com.ehongyue.services.userprofile.exception.RepoException; import com.ehongyue.services.userprofile.jaxb.UserVO; import com.ehongyue.services.userprofile.jaxb.UserVOs; import java.util.ArrayLis
问题内容: JPanel和JFrame有什么区别,以及与轻量级,重量级的关系? 问题答案: JPanel是允许将多个UI组件放在一起的容器。JFrame是使用Swing编写的窗口。 所有的Swing组件都是所谓的“轻型”组件,因为它们是用Java编写的。例如,如果您运行Swing应用程序并尝试使用UI分析工具(例如Windows中的WinSpy)对其进行分析,则只会看到一个元素:窗口(JFrame
主要内容:使用普通函数创建 goroutine,使用匿名函数创建goroutine在编写 Socket 网络程序时,需要提前准备一个线程池为每一个 Socket 的收发包分配一个线程。开发人员需要在线程数量和 CPU 数量间建立一个对应关系,以保证每个任务能及时地被分配到 CPU 上进行处理,同时避免多个任务频繁地在线程间切换执行而损失效率。 虽然,线程池为逻辑编写者提供了线程分配的抽象机制。但是,如果面对随时随地可能发生的并发和线程处理需求,线程池就不是非常直观和方便了。能否
Jenkins Pipeline插件有一个称为“轻量级签出”的功能,其中主服务器仅从repo中提取Jenkinsfile,而不是整个repo。配置屏幕中有一个相应的复选框。我想在多分支管道中进行轻量级签出,但我在多分支配置屏幕中没有看到复选框。有什么想法如何实现这一点吗?我注意到一些关闭的问题表明此功能可用,但我无法找到任何有关如何实现它的细节。 相关资料: https://issues.jenk
问题内容: 在解决了另一个愚蠢的日食问题之后,我想尝试获得尽可能轻巧,最小的Eclipse安装。 为了清楚起见,我使用eclipse做两件事: 编辑Java 调试Java 我通过Emacs / Zsh完成的所有其他工作(编辑JSP / XML / JS,文件管理,SVN签入等)。我还没有发现在Eclipse中进行工作以使这些任务高效甚至可靠的任何方面,因此我不希望与之相关的插件。 在eclipse
问题内容: 我有一个将要推送的特定格式的XML文档。该文档将始终是同一类型,因此非常严格。 我需要对此进行解析,以便将其转换为JSON(嗯,这是一个混蛋版本,以便其他人可以将其与DOJO一起使用)。 我的问题是,我应该使用非常快速的轻量级(不需要SAX等)XML解析器(有什么想法吗?)还是编写我自己的,基本上可以转换为StringBuffer并在数组中旋转?基本上,我假设所有HTML解析器都将旋转
问题内容: 编写新的工作流引擎还是使用现有的BPM引擎更好吗:jBPM 5,Activiti 5? 我的应用程序是基于Web的应用程序,性能非常重要。我的疑问是,与编写简单的工作流引擎相比,使用jBPM / Activiti是否会增加性能开销。 如果我采用自我实现,我会错过工作流程的可视化。为了性能,可以进行交易。 问题答案: 这确实取决于您的要求。首先,查看您是否真的需要工作流引擎(此资源或其他
问题内容: 题 我正在寻找Java内存对象缓存API。有什么建议吗?您过去使用过什么解决方案? 当前 现在,我只是在使用地图: 要求 我需要扩展缓存以包括以下基本功能: 最大尺寸 生存时间 但是,我不需要更复杂的功能,例如: 来自多个进程的访问(缓存服务器) 持久性(到磁盘) 意见建议 内存中缓存: Guava CacheBuilder-活动开发。请参阅此演示文稿。 LRUMap-通过API配置。
问题内容: 我目前在一个网站上工作,该网站必须存在于内存可用性非常低的VM上(目前被告知要达到512mb)。不幸的是,至少在不久的将来,数据库和Web应用程序必须是同一台服务器。 现在,我已经在这里通读了一些问题,并尝试进行自己的研究,但是这里有很多选择。从本质上讲,什么是可以安装的轻巧的数据库服务器?SQL或NoSQL并不重要;它不会占用大量数据库资源,但我现在不想随我现在选择的内容而受到限制。