- 浏览: 113869 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
czqjay:
news/index/{pageNum}/{author} { ...
来谈谈REST、RBAC下的URL权限控制 -
csumck:
这也有一个在线时序图工具 http://echoma.git ...
推荐一个不错的在线“画”时序图的软件(通过文字生成图片) -
cpop:
...
如何将自己的jar包Release到Maven中央仓库中 -
yangzai911:
如果 accept-language中有值,那么也是默认取第一 ...
Play framework 国际化 -
wangyong8861850:
[color=darkred][/color][size=x- ...
EWeb4J 1.9.1 新版本发布 基于Servlet/JDBC的轻量级web开发框架
看来,年内发布一个完整的新版本比较难了.
实在是要忙公司的项目.
eweb框架虽然也在持续开发中,
不过因为新版本的文档资料还没有重新编写,
所以只能先放出一个正在开发中的演示,虽然是演示,
不过该版本已经比较稳定了.
这次放出的压缩包解开之后有三个东西:
源代码:eweb4j-petstore-sources.jar
war部署包:eweb4j-petstore.war
数据库脚本(mysql):petstore_db.sql
如果需要其他数据库,自己写一个吧,才两个表,一个外键关系而已.
放一张截图吧:
各位请放心下载哇.
上几句代码吧:
实在是要忙公司的项目.
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 + "]"; } }下.
发表评论
-
EWeb4J 1.9.1 新版本发布 基于Servlet/JDBC的轻量级web开发框架
2012-11-28 22:08 2696EWeb4J 是一个基于 Servlet/Jdbc 构建的轻量 ... -
EWeb4J-SolidBase 发布新版本
2012-07-08 12:41 2080SolidBase项目是采用 DWZ + EWeb4J 开发的 ... -
EWeb4J 框架迁移到 GitHub
2012-07-05 10:02 1839EWeb4J 框架: https://github.com/ ... -
发布一个EWeb4J-1.9的Demo
2012-07-04 16:38 26EWeb4J-1.9框架发布在即,在此之前,发布一个小Demo ... -
EWeb4J-1.9-文件上传下载和生成建表脚本
2012-06-09 12:11 2251毕业了。高兴一下,哈。 一直以来,eweb4j framew ... -
SolidBase 二次开发 GIS 截图
2012-05-07 16:12 1845有位大哥哥使用 EWeb4J 的项目 SolidBase 作为 ... -
EWeb4J 国际化支持出炉啦(有源码看)
2012-05-06 15:31 1993很荣幸也很开心地公布,EWeb4J 支持国际化了。并且有着它独 ... -
Play framework 国际化
2012-05-03 20:04 4250Play的国际化操作还是非常简单的。大概分为四步: 1. ... -
解决Dojo的Widget在创建ArcGIS的Map对象时出现ID已被Registered的错误
2012-04-25 19:23 3044今天在用Dojo的toolkit(Dijits)创建ArcGI ... -
eweb4j在线演示程序更新
2012-04-25 09:25 2043访问地址:SolidBase 增加菜单显示权限 ... -
EWeb4J-1.9-继续改善ActiveRecord支持【级联】操作
2012-04-17 20:58 1448老习惯:约定优于配置 ... -
EWeb4J-1.9-控制器更新
2012-04-13 16:56 1411主要增加以下更新: 验证器 声明式事务 7个默认Acti ... -
eweb4j-1.9-支持ActiveRecord模式
2012-04-06 20:46 1550@Entity @Table(name="t_ ... -
(不断更新)EWeb4J-1.9-SNAPSHOT最近进程
2012-03-28 23:33 1753经过奋战,终于有个稳定点的SNAPSHOT版本咯。 较之上个 ... -
eweb4j演示项目-SolidBase增加对菜单显隐的权限控制
2012-03-28 14:41 1853昨晚捣鼓到两点多才弄好,今天整理了下,大概把菜单权限控制做好了 ... -
(下篇)单例POJO实现CRUD+分页+搜索Demo
2012-03-23 23:14 2本篇程序特点: POJO式的控制器,无需继承、无需实 ... -
体验快速开发2:单例POJO实现CRUD+分页+搜索Demo
2012-03-23 22:54 29程序特点: POJO式的控制器,无需继承、无需实现接 ... -
体验快速开发:只有一个控制类实现的CRUD+分页+搜索Demo
2012-03-22 22:17 182╮(╯▽╰)╭,本来不想谈什么快速开发的,但是最近老是有人拿什 ... -
如何将自己的jar包Release到Maven中央仓库中
2012-03-20 17:17 4370PS:真正要发布到Maven中央库中是首先需要到https:/ ... -
EWeb4J-1.8.6 发布,同时带来一个演示项目
2012-03-08 17:44 2946距离上次1.7的发布已经过去5个月了。首先值得高兴的是EW ...
相关推荐
Rockwell 1756-Eweb模块
eweb编辑器 要改下db中的后缀为asp
eweb4j
java猜数字源码 = 为什么要用 EWeb4J ? = EWeb4J 是一个基于 Servlet/Jdbc 构建的轻量级 Java Web 开发框架。它可以代替 SSH 来开发一个完整的 Web 应用程序。 它专注于 少侵入、少配置、松耦合、RESTful架构风格的...
使用python3 eg.py urls.txt目标title:锐捷网络-EWEB网管系统port:4430漏洞成因<?php //查询用户是否上线了 $userip = @$_POST['ip']; $usermac = @$_POST['mac']; if (!$userip || !$usermac) { exit; } /* ...
ewebeditor2.80最终版,绝对好用
网络编程eWebEditor在线文本编辑器飞鱼修改版源码.rar
在线编辑HTML,使用户方便使用编码在线编辑HTML,使用户方便使用编码
ASP常用的后台编辑器,带图片上传功能 调用方法如下例子: <textarea name="nr" ROWS="20" COLS="70">%=Server.HTMLEncode(rs("nr"))%></textarea> <iframe ID="eWebEditor1" src="../...</iframe>
在线编辑器应用实例,方便大家学习,有完整的数据库和调用过程,参数说明说细
eWeb editor编辑器文件,说明,使用方法:将解压后的editor文件夹拷贝到项目根目录下,在需要的页面中加入以下内容: 办事内容:</font></td> <iframe id="eWebEditor1" src="../../editor/...
资源分类:Python库 所属语言:Python 资源全名:eweb-0.0.3.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
eweb4j 最新的src 需要的jar包也都在其中. 可以读eweb4j的源代码 不必在网页上那样麻烦
通过设置WEB,可无限配置和观察设备端口动向
程序使用ASP ACC结构设计开发,供网友学习交流使用. 程序小巧主要为文章发布系统,可以为你组建一个信息发布网站. ...上传eweb目录 ,删除fck目录 覆盖cache/version.txt 文件. 覆盖admin目录,fun目录
3.新闻栏目eweb编辑器与IE7、IE8不兼容的问题解决! 4.特别提醒所有客户,网站上传后一定要修改data下在数据库名(改了数据库名,要改conn.asp和adminmaster/conn.asp和iP/conn.asp)! 5.后台管理地址也建议修改,就是...
eweb editor 3.8完整中文版
LSI-SAS-RAID卡提升操作指南,LSI-SAS-RAID的操作手册,可以参照学习命令行的方式
eWEB - 对手,Emmanuel Carrère 该网站是作为我们 eWEB 项目的一部分创建的,其目的是创建一个文化站点。 我们的选择落在了 Emmanuel Carrère 的《对手》一书中。 然后我们决定创建一个互联网站点,该站点涉及...
A. 目录树浏览 B. 文件/目录的删除、移动、重命名 ...多媒体编缉文件(绑定EWEB、FCKeditor) I.非空目录删除(带有子目录或文件) J.目录压缩下载、上传(绑定PHPZIP,如果空间能允许) K.编码转换