jello框架快速入门

    技术2022-05-11  170

    本文是开发基于jello框架的web应用的入门文章,无需使用其他任何框架即可完成应用构建。 简介: 这个例子是建立一个简单的web应用,叫ProductManage,完成产品管理操作,包含简单的数据库增,删,改,查,即CRUD(新建,访问,更新,删除)操作。这是一个三层的web应用,通过web控制器Controller访问业务层,业务层调用框架内置的持久层实现业务逻辑。流程顺序从web控制器(ProductController)到业务层(ProductService),然后将结果返回页面。 以下是完成这个例子的步骤: 1.配置jello框架 2.数据库建表  3.继承框架业务支持类Business生成业务类ProductService 4.继承框架控制器支持类Controller生成控制器类ProductController 5.建立JSP页面list.jsp和row.jsp用于显示列表和新增修改 6.运行实例 配置jello框架: 新建一个web project,在src目录下建立包com.figcn.simple.biz用于存放业务层代码,建立包com.figcn.simple.web用于存放web控制器代码,在WebRoot下新建文件夹product用于存放JSP页面。 从 http://sourceforge.net/projects/jelloframework 下载jello框架1.6.1包,解压后按UserManual说明将相关类库等文件复制到项目对应目录下。 数据库建表: CREATE TABLE t_product (product_id int NOT NULL, product_name varchar(50) NULL ,product_type varchar(50) NULL, unit_price numeric(18, 2) NULL, add_date datetime NULL) 继承框架业务支持类Business生成业务类ProductService: package com.figcn.simple.biz; import java.util.List; import com.figcn.jello.biz.Business; import java.util.Map; import com.figcn.jello.data.Linker; import com.figcn.jello.data.Model; public class ProductService extends Business { public static ProductService getInstance() { return new ProductService(); } public List<Map> getList() { return getTable("t_product"); } public void save(Map map) { Model row = new Model("t_product"); row.setData(map); save(row); } public Map get(String id) { return getRow("t_product", "product_id", Integer.parseInt(id)); } public void delete(String id) { delete("t_product", "product_id", Integer.parseInt(id)); } public Object getRowCount() { Linker linker=getLinker(); linker.open(); Object ret=linker.executeScalar("select count(*) from t_product"); linker.close(); return ret; } } 继承框架控制器支持类Controller生成控制器类ProductController: package com.figcn.simple.web; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.List; import java.util.Map; import com.figcn.jello.web.WebUtil; import com.figcn.jello.web.servlet.ControlTemplate; import com.figcn.jello.web.servlet.Controller; import com.figcn.simple.biz.ProductService; public class ProductController extends Controller implements ControlTemplate{ public void toList(HttpServletRequest request, HttpServletResponse response) { List list=ProductService.getInstance().getList(); request.setAttribute("list",list); forward("list.jsp"); } public void doDelete(HttpServletRequest request, HttpServletResponse response) { String itemid=request.getParameter("itemid"); ProductService.getInstance().delete(itemid); toList(request,response); //forward("/product/ProductAction.jo?method=toList"); } public void toEdit(HttpServletRequest request, HttpServletResponse response) { String itemid=request.getParameter("itemid"); Map map=ProductService.getInstance().get(itemid); request.setAttribute("foredit",map); forwardToEdit("row.jsp"); } public void toAdd(HttpServletRequest request, HttpServletResponse response) { forwardToAdd("row.jsp"); } public void doSave(HttpServletRequest request, HttpServletResponse response) { Map map=WebUtil.getParameterMap(request); ProductService.getInstance().save(map); toList(request,response); } public void getCount(HttpServletRequest request, HttpServletResponse response) { ProductService ps=ProductService.getInstance(); Object count=ps.getRowCount(); StringBuilder sb=new StringBuilder(); sb.append("total rows count is:<br/>"); sb.append(count+"<br/>"); sb.append("<a href='javascript:history.back(-1);'>back to list</a>"); //show informations or return response to web invoker print(sb.toString()); } } 建立JSP页面list.jsp和row.jsp用于显示列表和新增修改: List.jsp <%@ page contentType="text/html; charset=GBK" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <body bgcolor="#ffffff"> <div> <a href="ProductController.co?method=toAdd">New Product</a> <a href="ProductController.co?method=getCount">Get Products Count</a> </div> <table> <tr bgcolor=green > <td>Product ID</td> <td>Product Name</td> <td>Type</td> <td>Price</td> <td>Added Date</td> <td>Edit</td> <td>Delete</td> </tr> <c:forEach items="${list}" var="item"> <tr bgcolor=skyblue> <td>${item.product_id }</td> <td>${item.product_name }</td> <td>${item.product_type }</td> <td>${item.unit_price }</td> <td>${item.add_date }</td> <td><a href="ProductController.co?method=toEdit&itemid=${item.product_id}">Edit</a></td> <td><a href="ProductController.co?method=doDelete&itemid=${item.product_id}">Delete</a></td> </tr> </c:forEach> </table> </body> </html> Row.jsp <%@ page contentType="text/html; charset=GBK" %> <%@ taglib prefix="jello" uri="http://www.figcn.com/jello/taglib" %> <jello:inc src="../js/jello.js"/> <jello:inc src="../js/calendar.js"/> <html> <body bgcolor="#ffffff"> <form action="ProductController.co?method=doSave" method=post name=frm> <input name=intkey:product_id type=hidden value="${foredit.product_id }"> <input name="formtype" type="hidden" value="${formtype}"/> <table> <tr> <td>ID</td> <td> <input name="int:product_id" value="${foredit.product_id}" /> </td> </tr> <tr> <td>Name</td> <td><input name="string:product_name" value="${foredit.product_name}" /></td> </tr> <tr> <td>Type</td> <td><input name="string:product_type" value="${foredit.product_type}" /></td> </tr> <tr> <td>Price</td> <td><input name="string:unit_price" value="${foredit.unit_price}" /></td> </tr> <tr> <td>Added Date</td> <td> <A οnclick="showCalendar('../js/calendar.htm', document.all('date:add_date'));return false;" href="#"> <input name="date:add_date" value="${foredit.add_date}" /></a>format:yyyy-MM-dd </td> </tr> <tr> <td colspan=2 align=right> <input type=submit value=Save > <input type=button value=Back οnclick="_back()"> </td> </tr> </table> </form> </body> </html> 运行实例。 这样一个简单的WEB应用就完成了,是不是比较方便呢?就算不写注释,我想N年后你一样可以很容易地看懂自己写的代码,当然写注释始终是一个良好的习惯。 好了,省下来的研究如何分层、配置XML文档等等的时间可以用来玩一局魔兽世界了。 

    最新回复(0)