浏览 1945 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-03-23
最后修改:2012-03-23
对比上一篇体验快速开发:只有一个控制类实现的CRUD+分页+搜索Demo ,本程序主要类似SpringMVC式的控制器风格。上篇主要是类似Struts2的控制器风格。 上一篇的demo中由于是field的形式,因此一些参数名称可以省略配置,但是要写setter和getter。而本篇demo中,由于是方法参数的形式,因此不需要setter和getter,但是需要配置参数名称(原因是java反射无法获取到方法的参数名,运行期方法的参数名貌似给擦除了。) 不过本篇demo中有一个最大的好处就是,这种方式可以实现控制器单例,这样不仅仅带来性能的提升,如果搭配field的方式,还可以做做缓存。 代码: package org.eweb4j.crud; import java.util.Arrays; import java.util.Map; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.PathParam; import javax.ws.rs.QueryParam; import org.eweb4j.mvc.action.QueryParams; import org.eweb4j.mvc.action.annotation.Singleton; import org.eweb4j.mvc.view.DivPageComp; import org.eweb4j.orm.dao.DAO; import org.eweb4j.orm.dao.DAOFactory; @Singleton public class PetControl { private static DAO dao = DAOFactory.getDAO(Map.class).setTable("t_pet"); @POST public User doHello(@QueryParam("user") final User user) { return user; } @GET public String doTest() { return "action:pet/hello@POST?user.name=微微&user.age=23"; } public String doIndex(Map<String, Object> model, QueryParams params) { int p = params.toInt("pageNum"); p = p <= 0 ? 1 : p; int n = params.toInt("numPerPage"); n = n <= 0 ? 5 : n; model.put("pets", dao.clear().paging(p, n).query()); Map<String, Object> map = dao.clear().selectStr("count(*) as rows") .queryOne(); long count = (Long) map.get("rows"); model.put("dpc", new DivPageComp(p, n, count, 10)); return "success"; } public String doSearch(Map<String, Object> model, @QueryParam("keyword") String keyword) { model.put("pets", dao.clear().selectAll().where().field("name").like(keyword) .or("num").like(keyword).or("age").like(keyword) .or("type").like(keyword).query()); return "success"; } public String doGet(@PathParam("id") int id, Map<String, Object> model) { model.put("pet", dao.clear().selectAll().where().field("id").equal(id) .queryOne()); return "success"; } public String doNew(Map<String, Object> model) { model.put("types", Arrays.asList("狗", "猫")); return "success"; } public String doPost(@QueryParam("pet") Map<String, Object> pet) { dao.clear().insert(pet).execute(); return "success"; } public String doEdit(@PathParam("id") int id, Map<String, Object> model) { this.doGet(id, model); model.put("types", Arrays.asList("狗", "猫")); return "success"; } public String doPut(@PathParam("id") int id, @QueryParam("pet") Map<String, Object> pet) { dao.clear().update().set(pet).where().field("id").equal(id).execute(); return "success"; } public String doDelete(@PathParam("id") int id) { dao.clear().delete().where().field("id").equal(id).execute(); return "success"; } } 这样其实相当于 request.setAttribute("name", "value"); 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2012-03-23
不知这种不需要继承和实现接口的方式符不符合时下的群众口味呢?
|
|
返回顶楼 | |