`

EWeb4J-1.9-文件上传下载和生成建表脚本

阅读更多
毕业了。高兴一下,哈。

一直以来,eweb4j framework新版本都没有发布,因为忙工作、忙毕业、忙答辩。

只好在有空的时候为框架添加新特性、重构旧代码来弥补了。

写本文之前,修复了一些小bug,增加了两个特性:文件上传下载、生成建表脚本。

1.文件上传下载:

文件上传下载?这要涉及到文件IO流吧。或者,用第三方组件?例如Apache 的common-upload, 不不不,咱都不用,咱直接在控制器里声明一个 File 对象就行了。什么?这么简单?先看看代码吧~
public class UploadControl{
    private File file;
    
    public String doAtPost(){
        FileUtil.copy(file, new File("c://"+file.getName()));
    }

    public void setFile(File file){
        this.file = file;
    }
}

upload.html
<form action="upload" method="POST" enctype="multipart/form-data">
    <input type="file" name="file" />
    <input type="submit" value="上传" />
</form>

PS:注意表单文件input的name要和控制器声明的File对象名一致(实质上是和setter方法名相关)。另外注意 enctype

就这么简单,在一个Action方法执行前,框架会自动接收所有的文件上传请求,并将其作为一个临时文件保存到临时目录里,然后Action方法执行之后,框架会自动清空这些临时文件。因此,我们只要在Action方法体中,将临时文件拷贝到另外一个目录即可。下面有一个更加全面的例子:
//文件上传
public class UploadControl {
        
    final static String path = ConfigConstant.ROOT_PATH + "/WEB-INF/uploads/";

    private File tmpFile1;
    private UploadFile tmpFile2;
        
    private File[] tmpFile3;
    private UploadFile[] tmpFile4;

    public String doAtGet() {
            
        return "fmt:Upload/upload.html";
    }
        
    public String doAtPost() {
        //为了查看临时文件,当前线程睡眠10秒钟
        //Thread.sleep(10*1000);
                
        FileUtil.copy(tmpFile1, new File(path + tmpFile1.getName()));
                
        FileUtil.copy(tmpFile2.getTmpFile(), new File(path + tmpFile2.getFileName()));
                
        for (File f : tmpFile3)
            FileUtil.copy(f, new File(path + f.getName()));
        
        for (UploadFile f : tmpFile4)
            FileUtil.copy(f.getTmpFile(), new File(path + f.getFileName()));
                
        return StringUtil.getNowTime()+"上传成功!" ;
    }

    //别忘记setter方法哦
}


upload.html
<h1>EWeb4J Framework File Upload Demo</h1>
<form action="${BaseURL}upload" method="post" enctype="multipart/form-data">
    <label>tmpFile1:</label><input type="file" name="tmpFile1" />
    <label>tmpFile2:</label><input type="file" name="tmpFile2" />

    <label>tmpFile3:</label><input type="file" name="tmpFile3" />
    <label>tmpFile3:</label><input type="file" name="tmpFile3" />

    <label>tmpFile4:</label><input type="file" name="tmpFile4" />
    <label>tmpFile4:</label><input type="file" name="tmpFile4" />
        
    <input type="submit" value="上传" />
</form>

文件上传这么简单,我想聪明的你应该猜到,文件下载大概怎么做了吧!没错,仅需要在Action方法里返回一个File对象即可!如果有多个文件,那么请返回文件数组吧!框架会自动将其打包成zip。
public class DownloadControl {

    final static String path = ConfigConstant.ROOT_PATH + "/WEB-INF/uploads/";
    final File file = new File(path+"just4download.jpg"); 
        
    public File doAtGet(){
        return file;
    }
        
    public File[] doArrayAtGet(){
        return new File[]{file};
    }
        
}

PS:框架采用标准的HTTP文件下载的方式进行响应,客户端可以自己修改文件下载保存名字。
response.setContentType("application/zip");  
response.addHeader("Content-Disposition", "attachment; filename=xxx");


2.生成建表脚本:

首先,编写模型类

/**
 * 宠物 模型
 * @author weiwei
 *
 */
@Entity
@Table(name="t_pet")
public class Pet extends Model{
    public final static Pet inst = new Pet();
	
    /* 宠物名字 */
    @Column(unique=true)
    private String name;
    /* 宠物性别 1公 0母*/
    private boolean gender;
    /* 物种 */
    private String species;
    /* 宠物价格 */
    private float price;
    /* 宠物年龄  单位 月*/
    private int age;
    /* 是否已上架 */
    @Column(name="is_up")
    private boolean isUp;
    /* 所属主人 */
    @Column(nullable=false)
    @ManyToOne
    private Member master;
    /* 所属分类 */
    @ManyToOne
    private Category category;
	
    @Transient
    public long count;

    //setter and getter
}

/**
 * 购物车 模型
 * 
 * @author weiwei
 * 
 */
@Entity
@Table(name = "t_cart")
public class Cart extends Model {

    @ManyToMany
    @JoinTable(name = "t_cart_pet", joinColumns = @JoinColumn(name = "cart_id"), inverseJoinColumns = @JoinColumn(name = "pet_id"))
    private List<Pet> pets = new ArrayList<Pet>();

    @Column(nullable=false)
    private String description;

    //setter and getter
}

然后执行这样一句代码:
public static void main(String[] args){
    String CONF_DIR = FileUtil.getTopClassPath(EWeb4JConfig.class)+"/conf/";
    EWeb4JConfig.setCONFIG_BASE_PATH(CONF_DIR);
    EWeb4JConfig.start("start.xml");
    /* 框架根据模型类生成数据库pet_store_db建表脚本文件 */
    Model2Table.write("pet_store_db");
}

执行之后会生成 ${ClassPath}/conf/mysql-create.sql文件,内容如下:
DROP DATABASE IF EXISTS pet_store_db;
CREATE DATABASE pet_store_db DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
SET FOREIGN_KEY_CHECKS=0;
USE pet_store_db;

-- ----------------------------
-- Created by EWeb4J Framework 1.9-SNAPSHOT
-- at 2012-06-09 11:59:53
-- Models of models.Pet
-- Records of t_pet
-- ----------------------------
DROP TABLE IF EXISTS t_pet;
CREATE TABLE t_pet(
    id bigint (20)  NOT NULL  AUTO_INCREMENT , 
    name varchar (255)  NOT NULL , 
    gender boolean NOT NULL , 
    species varchar (255)  NOT NULL , 
    price float (8)  NOT NULL , 
    age tinyint (4)  NOT NULL , 
    is_up boolean NOT NULL , 
    master_id bigint (20) , 
    category_id bigint (20)  NOT NULL , 
    UNIQUE KEY name (name), 
    PRIMARY KEY (id), 
    KEY master_id (master_id), 
    CONSTRAINT master_id FOREIGN KEY (master_id) REFERENCES t_member (id), 
    KEY category_id (category_id), 
    CONSTRAINT category_id FOREIGN KEY (category_id) REFERENCES t_category (id) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Created by EWeb4J Framework 1.9-SNAPSHOT
-- at 2012-06-09 11:59:54
-- Models of models.Cart
-- Records of t_cart
-- ----------------------------
DROP TABLE IF EXISTS t_cart;
CREATE TABLE t_cart(
    id bigint (20)  NOT NULL  AUTO_INCREMENT , 
    description varchar (255) , 
    PRIMARY KEY (id) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Created by EWeb4J Framework 1.9-SNAPSHOT
-- at 2012-06-09 11:59:54
-- Records of t_cart_pet
-- ----------------------------
DROP TABLE IF EXISTS t_cart_pet;
CREATE TABLE t_cart_pet(
    id bigint (20) NOT NULL AUTO_INCREMENT,
    cart_id bigint (20) ,
    pet_id bigint (20) ,
    PRIMARY KEY (id), 
    KEY cart_id (cart_id), 
    CONSTRAINT t_cart_pet_cart_id FOREIGN KEY (cart_id) REFERENCES t_cart (id), 
    KEY pet_id (pet_id), 
    CONSTRAINT t_cart_pet_pet_id FOREIGN KEY (pet_id) REFERENCES t_pet (id) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


可以看到,多对多关系中的第三方表也会自动生成。

谢谢。

PS:如果希望获取EWeb4J最新版本,直接使用Maven添加依赖,版本号为:1.9-SNAPSHOT即可。另外还可以通过项目主页源码svn签出也行。
2
1
分享到:
评论

相关推荐

    eweb4j

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

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

    超级方便的文件上传下载 超级方便的视图数据传递 充血模型 声明式事务、事务模板、事务嵌套 丰富的DAO封装类 多数据源、表关联 简单的 IOC 容器 MVC、ORM、IOC 可控开关 键值对配置文件支持 国际化支持 让我们看看它...

    eweb4j最新版本src[附带需要的jar]

    `eweb4j`集成了常见的日志框架,如Log4j或SLF4J,方便开发者记录运行时信息,以便于调试和监控。 **依赖注入** 依赖注入(Dependency Injection,DI)是`eweb4j`中的一种重要设计原则,它通过容器管理对象的生命...

    1756-eweb手册

    Rockwell 1756-Eweb模块

    一个很好的eweb编辑器

    在eweb编辑器中,通常用户会使用内置的功能来处理数据库连接和页面动态生成。以下是一些关于如何在eweb编辑器中进行此类操作的详细步骤和相关知识点: 1. **文件扩展名更改**: - 首先,打开eweb编辑器,找到需要...

    java开源框架下载集合

    **下载链接**: [http://code.google.com/p/eweb4j/downloads/list](http://code.google.com/p/eweb4j/downloads/list) EWeb4J是一款专为快速构建企业级Web应用而设计的开源框架。它提供了一种声明式的编程模型,...

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

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

    1756-EWEB.pdf

    1756-EWEB

    eWeb editor编辑器文件

    eWeb editor编辑器文件,说明,使用方法:将解压后的editor文件夹拷贝到项目根目录下,在需要的页面中加入以下内容: 办事内容:&lt;/font&gt;&lt;/td&gt; ;style=s_blue" frameborder="0" width="99%" ...

    eweb.rar_eweb_editor

    4. **图片和媒体管理**: 内置的图片和多媒体管理功能,让用户能够方便地上传、管理和插入图片、音频、视频,同时支持在线编辑图片,如裁剪、缩放等。 5. **表单设计**: EWeb编辑器提供了强大的表单设计工具,...

    eWeb7.3.0 商业版 支持上传版 在线html编辑器

    eWeb7.3.0商业版提供了安全的文件上传机制,确保用户上传的文件不被非法访问或篡改。同时,编辑器还支持与多种后端内容管理系统(CMS)集成,如WordPress、Joomla等,确保数据的一致性和安全性。 总而言之,eWeb...

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

    通过分析www.pudn.com.txt和downcode.com这两个文件名,我们可以推测这些文件可能包含了eWeb Editor飞鱼修改版的详细文档、使用教程或者是下载代码的网址。其中,www.pudn.com是一个知名的编程资源网站,可能提供了...

    eweb编辑器(带图片上传功能)

    ASP常用的后台编辑器,带图片上传功能 调用方法如下例子: &lt;textarea name="nr" ROWS="20" COLS="70"&gt;%=Server.HTMLEncode(rs("nr"))%&gt;&lt;/textarea&gt; &lt;iframe ID="eWebEditor1" src="../eWebEditor/...

    MyPHP Explorer(Web文件在线管理) 修改版.rar

    多文件的上载 E. 文本型文件(.php, .html, .txt 等)的编辑 F. 图片及 falsh 文件的即时浏览 G. 文件下载  新增功能: H.多媒体编缉文件(绑定EWEB、FCKeditor) I.非空目录删除(带有子目录或文件) ...

    eweb 网页编辑器

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

    正版eweb控件_eWebEditor_V3.80_JSP

    【正版eweb控件_eWebEditor_V3.80_JSP】是一款专为JSP(Java Server Pages)开发的富文本编辑器控件,适用于构建网站后台内容管理系统。eWebEditor_V3.80是其特定版本,提供了一种直观且功能强大的方式,让用户在...

    实用的word文本过滤器dreamedit(解决eweb和word格式不同一)

    DreamEdit.exe是该软件的主要执行文件,它的主要功能在于解析和转换Word文档中的格式信息,确保当文本被复制到Eweb中时,能够保持原有的排版和样式。通过运行这个程序,用户可以轻松地将Word文档中的文本导入,同时...

    e-web editor 3.8

    3. **多媒体集成**:除了文字编辑,eWeb Editor 3.8 还支持插入音频、视频等多媒体元素,用户可以直接嵌入在线媒体资源,或者上传本地文件,丰富网页内容的表现形式。 4. **表格与列表**:对于数据展示,编辑器提供...

    web管理器

    3. 文件上传/下载:用户可以将本地文件上传到服务器,或下载服务器上的文件到本地。 4. 文件权限管理:可能支持设置文件和目录的权限,如读写执行权限。 5. 多用户协作:如果是一个团队工具,可能支持用户管理,分配...

Global site tag (gtag.js) - Google Analytics