`

eweb demo war包+源码+db脚本 下载 (1.8.x-SNAPSHOT)

阅读更多
看来,年内发布一个完整的新版本比较难了.

实在是要忙公司的项目.

eweb框架虽然也在持续开发中,
不过因为新版本的文档资料还没有重新编写,
所以只能先放出一个正在开发中的演示,虽然是演示,
不过该版本已经比较稳定了.

这次放出的压缩包解开之后有三个东西:

源代码:eweb4j-petstore-sources.jar

war部署包:eweb4j-petstore.war

数据库脚本(mysql):petstore_db.sql

如果需要其他数据库,自己写一个吧,才两个表,一个外键关系而已.

放一张截图吧:



各位请放心下载哇.

上几句代码吧:
package com.cfuture08.eweb4j.demo.petstore.pet.web;

import java.util.Arrays;


import com.cfuture08.eweb4j.demo.petstore.AbstractAction;
import com.cfuture08.eweb4j.demo.petstore.pet.Pet;
import com.cfuture08.eweb4j.demo.petstore.pet.PetException;
import com.cfuture08.eweb4j.mvc.annotation.POST;
import com.cfuture08.eweb4j.mvc.annotation.Path;

/**
 * 添加宠物信息控制器
 * 
 * @author weiwei
 * 
 */

public class AddPetInfoAction extends AbstractAction {

	/**
	 * 接收页面表单数据,提供验证规则
	 */
	private Pet pet = null;

	/**
	 * 处理HTTP请求 POST http://{host}:{port}/eweb/pets/
	 * 
	 * @return
	 */
	@Path("pets/")
	@POST
	public String doPost() {
		request.setAttribute("types", Arrays.asList("猫", "狗", "猪"));
		try {
			petService.create(pet);
		} catch (PetException e) {
			request.setAttribute("error", e.getMessage());
			return "../error.jsp";
		}

		return "redirect:list";
	}

	public Pet getPet() {
		return pet;
	}

	public void setPet(Pet pet) {
		this.pet = pet;
	}

}


package com.cfuture08.eweb4j.demo.petstore;

import javax.servlet.http.HttpServletRequest;


import com.cfuture08.eweb4j.demo.petstore.master.MasterService;
import com.cfuture08.eweb4j.demo.petstore.pet.PetService;
import com.cfuture08.eweb4j.ioc.annotation.Ioc;

/**
 * 宠物信息抽象控制器
 * 
 * @author weiwei
 * 
 */

public abstract class AbstractAction {

	/**
	 * 通过IOC容器注入
	 */
	@Ioc("petService")
	protected PetService petService;

	/**
	 * 通过IOC容器注入
	 */
	@Ioc("masterService")
	protected MasterService masterService;

	/**
	 * 声明且提供setter方法,框架就能自动注入
	 */
	protected HttpServletRequest request;

	public PetService getPetService() {
		return petService;
	}

	public void setPetService(PetService petService) {
		this.petService = petService;
	}

	public MasterService getMasterService() {
		return masterService;
	}

	public void setMasterService(MasterService masterService) {
		this.masterService = masterService;
	}

	public HttpServletRequest getRequest() {
		return request;
	}

	public void setRequest(HttpServletRequest request) {
		this.request = request;
	}

}



package com.cfuture08.eweb4j.demo.petstore.pet;

import java.util.List;

import com.cfuture08.eweb4j.orm.dao.DAO;
import com.cfuture08.eweb4j.orm.dao.DAOException;
import com.cfuture08.eweb4j.orm.dao.cascade.CascadeDAO;
import com.cfuture08.eweb4j.orm.dao.delete.DeleteDAO;
import com.cfuture08.eweb4j.orm.dao.factory.DAOFactory;
import com.cfuture08.eweb4j.orm.dao.insert.InsertDAO;
import com.cfuture08.eweb4j.orm.dao.select.DivPageDAO;
import com.cfuture08.eweb4j.orm.dao.select.SelectDAO;
import com.cfuture08.eweb4j.orm.dao.update.UpdateDAO;

/**
 * 宠物信息服务接口实现类
 * 
 * @author weiwei
 * 
 */
public class PetServiceImpl implements PetService {
	private DivPageDAO divPageDAO;
	private CascadeDAO cascadeDAO;
	private SelectDAO selectDAO;
	private InsertDAO insterDAO;
	private UpdateDAO updateDAO;
	private DeleteDAO deleteDAO;

	// 这是一个用来拼凑sql语句的接口,
	// 是在ORM映射之下的.并不是直接拼凑原生SQL
	private DAO dao;

	public PetServiceImpl() {
		this.divPageDAO = DAOFactory.getDivPageDAO();
		this.cascadeDAO = DAOFactory.getCascadeDAO();
		this.selectDAO = DAOFactory.getSelectDAO();
		this.insterDAO = DAOFactory.getInsertDAO();
		this.updateDAO = DAOFactory.getUpdateDAO();
		this.deleteDAO = DAOFactory.getDeleteDAO();
		this.dao = DAOFactory.getDAO(Pet.class);
	}

	/**
	 * 分页获取宠物信息列表
	 * 
	 * @param pageNum
	 * @return
	 * @throws PetException
	 */
	public List<Pet> getPage(int pageNum) throws PetException {
		List<Pet> list = null;
		try {
			list = divPageDAO.divPage(Pet.class, pageNum, 10);
			if (list != null) {
				// 级联查询出所有宠物的主人信息
				cascadeDAO.select(list.toArray(new Pet[] {}), "master");
			}

		} catch (DAOException e) {
			throw new PetException("数据库错误", e);
		}

		return list;
	}

	public long count() throws PetException {
		long count = 0;
		try {
			count = selectDAO.selectCount(Pet.class);
		} catch (DAOException e) {
			throw new PetException("数据库错误", e);
		}
		return count;
	}

	/**
	 * 添加宠物信息
	 * 
	 * @param pet
	 * @throws PetException
	 */

	public void create(Pet pet) throws PetException {
		if (pet == null)
			throw new PetException("要添加的宠物信息不能为空");
		try {
			Pet db_pet = selectDAO.selectOne(pet, "name");
			if (db_pet != null)
				throw new PetException("宠物名字已经存在,请重填");

			db_pet = selectDAO.selectOne(pet, "number");
			if (db_pet != null)
				throw new PetException("宠物编号已经存在,请重填");

			pet.setMaster(null);

			insterDAO.insert(pet);

		} catch (DAOException e) {
			throw new PetException("数据库错误", e);
		}
	}

	/**
	 * 更新
	 * 
	 * @param petId
	 * @param pet
	 * @throws PetException
	 */

	public void update(Pet pet) throws PetException {
		if (pet == null)
			throw new PetException("宠物信息已被删除或丢失");
		try {

			Pet db_pet = dao.selectAll().where().field("name")
					.equal(pet.getName()).and("id").notEqual(pet.getId())
					.queryOne();

			// 也可以
			// String condition = String.format("name = '%s' and id <> '%s'",
			// pet.getName(), pet.getId());
			// Pet db_pet =
			// selectDAO.selectOneByWhere(Pet.class,
			// condition);

			if (db_pet != null)
				throw new PetException("宠物名字已经存在,请重填");

			dao.clear();
			db_pet = dao.selectAll().where().field("number").equal(pet.getNumber())
					.and("id").notEqual(pet.getId()).queryOne();

			// 也可以
			// condition = String.format("number = '%s' and id <> '%s'",
			// pet.getNumber(), pet.getId());
			// db_pet = selectDAO.selectOneByWhere(Pet.class,
			// condition);
			if (db_pet != null)
				throw new PetException("宠物编号已经存在,请重填");

			pet.setMaster(null);

			updateDAO.update(pet);

		} catch (DAOException e) {
			throw new PetException("数据库错误", e);
		}
	}

	/**
	 * 删除
	 * 
	 * @param petId
	 * @throws PetException
	 */

	public void remove(long petId) throws PetException {
		try {

			deleteDAO.deleteById(Pet.class, petId);

		} catch (DAOException e) {
			e.printStackTrace();
			throw new PetException("数据库错误", e);
		}
	}

	/**
	 * 获取详细信息
	 * 
	 * @param petId
	 * @return
	 * @throws PetException
	 */
	public Pet getDetail(long petId) throws PetException {
		Pet pet = null;
		try {
			pet = selectDAO.selectOneById(Pet.class, petId);

			// 级联查询出所有宠物的主人信息
			cascadeDAO.select(pet, "master");

		} catch (DAOException e) {
			throw new PetException("数据库错误", e);
		}

		return pet;
	}
}





package com.cfuture08.eweb4j.demo.petstore.pet;


import com.cfuture08.eweb4j.demo.petstore.master.Master;
import com.cfuture08.eweb4j.mvc.validate.annotation.Chinese;
import com.cfuture08.eweb4j.mvc.validate.annotation.Enum;
import com.cfuture08.eweb4j.mvc.validate.annotation.Int;
import com.cfuture08.eweb4j.mvc.validate.annotation.Length;
import com.cfuture08.eweb4j.mvc.validate.annotation.Required;
import com.cfuture08.eweb4j.mvc.validate.annotation.Size;
import com.cfuture08.eweb4j.orm.config.annotation.Id;
import com.cfuture08.eweb4j.orm.config.annotation.One;
import com.cfuture08.eweb4j.orm.config.annotation.Table;

@Table("t_pet")
public class Pet {
	@Id
	private long id;
	
	@Required(mess="编号必填")
	@Length(min = 6, max = 6, mess="编号6位数字或文字的组合")
	private String number;
	
	@Required(mess="宠物名字必填,2-32位,中文")
	@Chinese(mess="宠物名字要求全中文")
	@Length(min=2,max=32,mess="宠物名字,2-32位")
	private String name;
	
	@Required(mess="年龄必填,1-5岁")
	@Int(mess="年龄,必须是数字")
	@Size(min = 1, max = 5, mess="年龄,1-5岁")
	private int age;
	
	@Required(mess="宠物类型必填")
	@Enum(words = { "猫", "狗" },mess="宠物类型, 只能添加猫和狗两种类型")
	private String type;//只能添加猫和狗两种类型

	@One(column = "master_id")
	private Master master;

	public long getId() {
		return id;
	}

	public void setId(long id) {
		this.id = id;
	}

	public String getNumber() {
		return number;
	}

	public void setNumber(String number) {
		this.number = number;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getType() {
		return type;
	}

	public void setType(String type) {
		this.type = type;
	}

	public Master getMaster() {
		return master;
	}

	public void setMaster(Master master) {
		this.master = master;
	}

	@Override
	public String toString() {
		return "PetModel [id=" + id + ", number=" + number + ", name=" + name
				+ ", age=" + age + ", type=" + type + ", master=" + master
				+ "]";
	}

}

下.
  • 大小: 31.9 KB
2
0
分享到:
评论
2 楼 简简单单11 2012-12-10  
源码包  好像是空的
数据库密码是多少?
1 楼 laiweiweihi 2011-12-27  
刚出了个小情况,吓屎俺了.

相关推荐

    一个很好的eweb编辑器

    在描述中提到的“eweb编辑器 要改下db中的后缀为asp”,这可能是指在使用eweb编辑器进行网站开发时,需要将数据库连接文件或动态页面文件的扩展名从原本的格式更改为ASP(Active Server Pages)格式。ASP是一种微软...

    1756-eweb手册

    Rockwell 1756-Eweb模块

    eWeb.rar_eWeb Editor Clie_eWebEditor_eweb editoi_文本修改器_文本编辑器

    《eWeb Editor客户端:在线文本编辑器的深度解析与应用》 eWeb Editor是一款功能强大的在线文本编辑器,尤其在Web开发领域中被广泛应用。它以其便捷的操作界面和丰富的编辑功能,为网络编程人员提供了极大的便利。...

    1756-EWEB.pdf

    1756-EWEB

    eweb4j

    eweb4j是一个Java开发框架,它专注于提供高效、轻量级且易于使用的Web应用程序解决方案。这个框架的设计理念是简化开发流程,提高开发效率,同时保持代码的清晰性和可维护性。下面我们将深入探讨eweb4j框架的核心...

    eweb.rar_eweb_editor

    《EWeb编辑器2.80:打造高效网页创作利器》 EWeb编辑器,全称为"EWeb Editor",是一款专业且用户友好的网页编辑工具,尤其以2.80版本备受好评,被誉为“绝对好用”。这款编辑器旨在简化网页制作流程,提升开发效率...

    在线编辑器(eweb)应用实例

    EWeb通常支持文件管理功能,允许用户在编辑器内部浏览、上传、下载和管理文件。理解如何有效地组织和操作项目文件对于保持代码的整洁性和可维护性至关重要。 六、代码版本控制 作为一个现代的在线编辑器,EWeb可能...

    (2)使用易语言CCHTTP开发WEB网站-你好世界 易语言源码

    在本主题中,我们将深入探讨如何使用易语言的CCHTTP模块来开发WEB网站,以及相关源码分析。 首先,"CCHTTP"是易语言中的一个模块,用于处理HTTP协议,实现客户端向服务器发送请求并接收响应的功能。在构建WEB应用时...

    js实现动态菜单-html+css+js+jquery-eweb端菜单实现

    本案例是通过jquery html css实现的极简动态菜单实现,运行index.html可以在浏览器通过鼠标划过菜单实现菜单的动态放大缩小效果,并引入websymbols字体库对字体进行处理,都包含在压缩包里,大家可以自行下载。

    高速 Fel表达式引擎

    ### 高速 Fel表达式引擎知识点详解 #### 一、Fel表达式引擎概述 Fel(Fast Expression Language)是一种高性能的表达式引擎,旨在满足企业级应用对于表达式处理的需求。它具备快速执行的能力,与ognl等其他流行...

    最新顶级OA办公系统源码+OA协同办公系统,包含CRM客户管理系统+内部聊天工具+自适应手机

    2. `eweb` 有可能是系统的主要应用代码,包含Web应用程序的前端和后端逻辑。 3. `email` 可能是与电子邮件功能相关的模块,处理邮件发送、接收和管理。 4. `knowledge` 可能是知识库系统,用于存储和检索企业内部的...

    RG-S5750V2-L系列交换机RGOS11.4(1)B74P7版本WEB管理手册(V1.0).pdf

    - **尖括号{x | y}**: 表示必须从选项中选择一个。 - **星号[*]**: 表示可以从多个选项中选择多个或不选。 - **&&lt;1-n&gt;**: 表示前面的参数可以重复1到n次。 - **双斜杠//**: 表示注释行。 - **各类标志**: - **...

    eweb 网页编辑器

    **eweb网页编辑器**是一款专业且用户友好的软件,专为论坛和公告发布等应用场景设计。它将复杂的网页制作过程简化,使非专业程序员也能轻松创建和编辑网页内容。这款编辑器集成了多种功能,旨在提高用户在互联网上的...

    java猜数字源码-eweb4j-framework:简单的Java网络框架

    java猜数字源码 = 为什么要用 EWeb4J ? = EWeb4J 是一个基于 Servlet/Jdbc 构建的轻量级 Java Web 开发框架。它可以代替 SSH 来开发一个完整的 Web 应用程序。 它专注于 少侵入、少配置、松耦合、RESTful架构风格的...

    eweb.rar_MVC C语言_c语言实现MVC_http server_mvc_mvc serv

    服务器需要监听特定端口,接收到客户端请求后解析请求报文,执行相应的操作(如读取文件、执行动态脚本等),然后构造响应报文并发送回客户端。 **www.pudn.com.txt和eweb文件** "www.pudn.com.txt"可能包含的是...

    招行民生银企直联demo

    个人学习使用,简单的对接银行的接口,发现都是java版本的,写个.net的demo记录下,简单的对接了下招商银行,主要有付款和交易流水查询等基本的接口开发

    EgGateWayGetShell_py:EgGateWayGetShell py脚本

    使用python3 eg.py urls.txt目标title:锐捷网络-EWEB网管系统port:4430漏洞成因&lt;?php //查询用户是否上线了 $userip = @$_POST['ip']; $usermac = @$_POST['mac']; if (!$userip || !$usermac) { exit; } /* ...

    [MMS_041397]Reading CLX_val using EWEB.rar

    【标题解析】:“[MMS_041397]Reading CLX_val using EWEB.rar”这个标题可能指的是一个关于使用EWEB工具读取AB PLC(Allen Bradley Programmable Logic Controller)中的CLX(可能是ControlLogix系列)寄存器或变量...

    e-web editor 3.8

    **eWeb Editor 3.8 全面解析** eWeb Editor 3.8 是一款功能强大的在线HTML编辑器,专为网页内容编辑和管理而设计。它提供了丰富的文本格式化选项,让用户无需深入HTML代码就能轻松创建和编辑网页内容。这款编辑器以...

    演示:Ruffle Web演示(每晚生成)

    ruffle-demo是如何在您的网站中包含Ruffle的示例。 对于开发人员来说,它也是一个不错的本地测试,可以在Web上本地运行Ruffle。 使用ruffle-demo 托管演示 要立即在线观看此演示,。 它与该目录完全相同,每晚更新...

Global site tag (gtag.js) - Google Analytics