2025年jello框架快速入门

jello框架快速入门本文是开发基于 jello 框架的 web 应用的入门文章 无需使用其他任何框架即可完成应用构建 简介 这个例子是建立一个简单的 web 应用 叫 ProductManag 完成产品管理操作 包含简单的数据库增 删 改 查 即 CRUD 新建 访问 更新 删除 操作 这是一个三层的 web 应用 通过 web 控制器 Controller 访问业务层 业务层调用框架内置的持久层实现业务逻辑

大家好,我是讯享网,很高兴认识大家。

本文是开发基于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>
&lt;c:forEach items=”\({list}&#34; var&#61;&#34;item&#34;&gt; <br />&lt;tr bgcolor&#61;skyblue&gt; <br />&lt;td&gt;\){item.product_id }&lt;/td&gt;
&lt;td&gt;\({item.product_name }&lt;/td&gt; <br />&lt;td&gt;\){item.product_type }&lt;/td&gt;
&lt;td&gt;\({item.unit_price }&lt;/td&gt; <br />&lt;td&gt;\){item.add_date }&lt;/td&gt;
&lt;td&gt;&lt;a href=“ProductController.co?method=toEdit&itemid=\({item.product_id}&#34;&gt;Edit&lt;/a&gt;&lt;/td&gt; <br />&lt;td&gt;&lt;a href&#61;&#34;ProductController.co?method&#61;doDelete&amp;itemid&#61;\){item.product_id}”&gt;Delete&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/c:forEach&gt;

&lt;/table&gt;
&lt;/body&gt;
&lt;/html&gt;

Row.jsp
&lt;%@ page contentType=“text/html; charset=GBK” %&gt;
&lt;%@ taglib prefix=“jello” uri=“http://www.figcn.com/jello/taglib" %&gt;
&lt;jello:inc src=”../js/jello.js“/&gt;
&lt;jello:inc src=”../js/calendar.js“/&gt;
&lt;html&gt;
&lt;body bgcolor=”#ffffff“&gt;
&lt;form action=”ProductController.co?method=doSave“ method=post name=frm&gt;
&lt;input name=intkey:product_id type=hidden value=”\({foredit.product_id }&#34;&gt; <br />&lt;input name&#61;&#34;formtype&#34; type&#61;&#34;hidden&#34; value&#61;&#34;\){formtype}“/&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;td&gt;ID&lt;/td&gt;
&lt;td&gt;
&lt;input name=”int:product_id“ value=”\({foredit.product_id}&#34; /&gt; <br />&lt;/td&gt; <br />&lt;/tr&gt; <br />&lt;tr&gt; <br />&lt;td&gt;Name&lt;/td&gt; <br />&lt;td&gt;&lt;input name&#61;&#34;string:product_name&#34; value&#61;&#34;\){foredit.product_name}“ /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Type&lt;/td&gt;
&lt;td&gt;&lt;input name=”string:product_type“ value=”\({foredit.product_type}&#34; /&gt;&lt;/td&gt; <br />&lt;/tr&gt; <br />&lt;tr&gt; <br />&lt;td&gt;Price&lt;/td&gt; <br />&lt;td&gt;&lt;input name&#61;&#34;string:unit_price&#34; value&#61;&#34;\){foredit.unit_price}“ /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Added Date&lt;/td&gt;
&lt;td&gt;
&lt;A οnclick=”showCalendar(‘../js/calendar.htm’, document.all(‘date:add_date’));return false;“ href=”#“&gt;
&lt;input name=”date:add_date“ value=”${foredit.add_date}“ /&gt;&lt;/a&gt;format:yyyy-MM-dd
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=2 align=right&gt;
&lt;input type=submit value=Save &gt;
&lt;input type=button value=Back οnclick=”_back()“&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;

运行实例。
这样一个简单的WEB应用就完成了,是不是比较方便呢?就算不写注释,我想N年后你一样可以很容易地看懂自己写的代码,当然写注释始终是一个良好的习惯。
好了,省下来的研究如何分层、配置XML文档等等的时间可以用来玩一局魔兽世界了。


讯享网

小讯
上一篇 2025-03-23 21:56
下一篇 2025-01-08 12:56

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/40795.html