`

【转】jello框架快速入门

阅读更多
本文是开发基于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 onclick="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 onclick="_back()">
</td>
</tr>
</table>
</form>
</body>
</html>

运行实例。
这样一个简单的WEB应用就完成了,是不是比较方便呢?就算不写注释,我想N年后你一样可以很容易地看懂自己写的代码,当然写注释始终是一个良好的习惯。

原文地址:http://blog.csdn.net/jelloframework/archive/2007/01/22/1489783.aspx
分享到:
评论

相关推荐

    jello的汉化文件

    《Outlook插件Jello的汉化文件详解与应用指南》 Outlook是一款广泛使用的电子邮件管理软件,其强大的功能和易用性深受用户喜爱。在日常使用中,为了提升用户体验,许多用户会选择安装各种插件以增强其功能。其中,...

    fis3-jello, 基于 fis3 针对 jsp/velocity 模板的前端工程解决方案.zip

    总结起来,fis3-jello是fis3框架的一个扩展,专为使用JSP和Velocity的前端工程提供了一套完整的解决方案。它集成了fis3的强大功能,同时针对特定的模板引擎进行了优化,以提升开发效率和项目质量。通过使用fis3-...

    Jello-Physics unity 模拟柔体 果冻效果插件

    《Unity中的Jello-Physics:实现生动果冻效果的插件详解》 Unity,作为一款广泛应用的游戏开发引擎,因其强大的3D渲染能力和易用性,深受开发者喜爱。在游戏开发中,模拟真实物理效果是提升游戏体验的重要手段之一...

    Python库 | jello-1.3.1-py3-none-any.whl

    总的来说,"jello-1.3.1-py3-none-any.whl"是一个针对Python 3开发的库,它提供了预编译的二进制形式,便于快速安装和使用。尽管我们无法提供具体的功能细节,但根据其命名和Python库的一般模式,我们可以推测它可能...

    Jello Dashboard 5-开源

    **Jello Dashboard 5 开源项目详解** Jello Dashboard 5 是一款专为Microsoft Outlook设计的全面的任务管理工具,遵循了Getting Things Done(GTD)的理念。GTD是一种时间管理和生产力提升方法,它强调将任务从脑海...

    jello:CLI工具,可使用Python语法过滤JSON和JSON Lines数据。 (类似于jq)

    尝试新的jello ! 果冻 使用Python语法过滤JSON和JSON Lines数据 jello与jq相似之处在于,它处理JSON和JSON Lines数据,除了jello使用标准的python dict和list语法。 可以将JSON或JSON Lines传递到jello (JSON ...

    Python库 | jello-1.2.9-py3-none-any.whl

    标题中的"Python库 | jello-1.2.9-py3-none-...综上所述,"jello-1.2.9-py3-none-any.whl"是一个Python库,用于在Python 3环境中快速部署和使用,无需额外编译步骤。开发者和用户可以通过pip轻松地安装和利用这个库。

    jello-preprocessor-components:给 jello 项目添加生态组件支持

    尽管没有提供详细信息,但我们可以推测"jello"可能是一个框架或者库,用于构建Web应用。框架通常会提供一套结构和规则,帮助开发者组织代码,提高开发速度,并确保代码的可维护性。"jello-preprocessor-components...

    Python库 | jello-0.3.1-py3-none-any.whl

    在Python的生态系统中,...它通过whl格式提供,简化了安装流程,用户只需通过pip即可快速集成到他们的项目中。这个库可能包含了各种函数、类或模块,提供了特定的功能,具体功能需要查看库的文档或源代码才能详细了解。

    jello-demo:Jello演示和文档

    jello-demoJello demo & doc, you can .如何使用安装 jellonpm install -g jello安装插件npm install -g fis-parser-markednpm install -g fis-parser-utcnpm install -g fis-parser-sassnpm install -g fis-package...

    Python库 | jello-1.1.1.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:jello-1.1.1.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    jello:nodejs服务器api映射中间件

    Jello express服务端api映射框架要解决的问题前后端分离的开发方案中,前端的数据层被剥离出来而独立存在,通常数据层由服务端的api来提供,这就导致我们需要在Express的路由层反复的配置;一方面会导致重复劳动,...

    jello-optimizer-velocity-xss:jello速度xss保护

    使用安装npm install -g jello-optimizer-velocity-xss启用插件fis.config.set('modules.optimizer.vm', 'velocity-xss');然后使用 release 命令的时候,记得带上 -o 参数。jello release -o配置项目前只有 ...

    Python库 | jello-0.1.7-py3-none-any.whl

    python库。 资源全名:jello-0.1.7-py3-none-any.whl

    jello-command-server:在fis中嵌入tomcat 7

    标题“jello-command-server:在fis中嵌入tomcat 7”涉及到的是一个项目集成场景,其中jello命令服务器被构建为在FIS(Fast Internet Service)框架中运行,通过嵌入Tomcat 7作为其应用服务器。FIS是一个用于快速开发...

    PyPI 官网下载 | jello-1.3.1-py3-none-any.whl

    资源来自pypi官网。 资源全名:jello-1.3.1-py3-none-any.whl

    jello-optimizer-jsp-xss:防御 jello 中的 XSS 攻击

    jello-optimizer-velocity-xss 与FIS组@2betop发布的类似 自动将JSP内容区的变量加 fn:escapeXml 包裹,用于防止恶意代码执行。 另外,对于标签强制加入属性escapeXml="true" 使用 安装 npm install -g jello-...

Global site tag (gtag.js) - Google Analytics