读书人

三层架构实现文件下传和上载1(dao,ser

发布时间: 2012-12-21 12:03:49 作者: rapoo

三层架构实现文件上传和下载1(dao,service)

在写程序前写好文档:

readme.txt

?

1.准备开发环境1.1导入开发包mysql驱动c3po连接池dbutilsfileupload组件:1)io包beanutils开发包:log4j开发包jstl开发1.2创建组织程序的开发包com.du.dao.implcom.du.service.implcom.du.web.controllercom.du.utilsjunits.testcom.du.domain1.3 准备库和表create database day18;use day18;create table upfile(id varchar(40) primary key,uuidname varchar(100) not null unique,filename varchar(100) not null,savepath varchar(255) not null,uptime datetime not null,description varchar(255),username varchar(40) not null);2.做实体3.做dao4.做service5.做web层

?

?

?

jdbc工具类,jdbcutils:

?

?

import javax.sql.DataSource;import com.mchange.v2.c3p0.ComboPooledDataSource;public class JdbcUtils {private static DataSource ds;static {ds = new ComboPooledDataSource();//c3p0获取连接池}public static DataSource getDataSource() {return ds;}}
?

?

?

注意:用c3p0获取连接池的时候,要编写c3p0-config.xml 文档

?

?

<?xml version="1.0" encoding="UTF-8"?><c3p0-config><default-config><property name="driverClass">com.mysql.jdbc.Driver</property><property name="jdbcUrl">jdbc:mysql://localhost:3306/day18</property><property name="user">root</property><property name="password">root</property><property name="acquireIncrement">5</property><property name="initialPoolSize">10</property><property name="minPoolSize">5</property><property name="maxPoolSize">20</property></default-config><named-config name="flx"><property name="driverClass">com.mysql.jdbc.Driver</property><property name="jdbcUrl">jdbc:mysql://localhost:3306/day16</property><property name="user">root</property><property name="password">root</property><property name="acquireIncrement">5</property><property name="initialPoolSize">10</property><property name="minPoolSize">5</property><property name="maxPoolSize">20</property></named-config></c3p0-config>
?

?

在里面编写好要连接的数据库信息!

?

Dao层

?

?

import java.sql.SQLException;import java.util.List;import org.apache.commons.dbutils.QueryRunner;import org.apache.commons.dbutils.handlers.BeanHandler;import org.apache.commons.dbutils.handlers.BeanListHandler;import com.du.dao.UpfileDao;import com.du.domain.Upfile;import com.du.utils.JdbcUtils;public class UpfileDaoImpl implements UpfileDao {/* * create table upfile(id varchar(40) primary key,uuidname varchar(100) not null unique,filename varchar(100) not null,savepath varchar(255) not null,uptime datetime not null,description varchar(255),username varchar(40) not null); */public void add(Upfile uf){QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource());//dbutilsString sql ="insert into upfile(id,uuidname,filename,savepath,uptime,description,username) values(?,?,?,?,?,?,?)";Object[] params={uf.getId(),uf.getUuidname(),uf.getFilename(),uf.getSavepath(),uf.getUptime(),uf.getDescription(),uf.getUsername()};try {qr.update(sql, params);} catch (SQLException e) {// TODO Auto-generated catch blockthrow new RuntimeException(e);}}public List getAll(){QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource());String sql="select * from upfile";try {List list =(List) qr.query(sql, new BeanListHandler(Upfile.class));return list;} catch (SQLException e) {// TODO Auto-generated catch blockthrow new RuntimeException(e);}}public Upfile find(String id){QueryRunner qr =new QueryRunner(JdbcUtils.getDataSource());String sql="select * from upfile where id = ?";try {Upfile up=(Upfile) qr.query(sql, id, new BeanHandler(Upfile.class));return up;} catch (SQLException e) {// TODO Auto-generated catch blockthrow new RuntimeException(e);}}}
?

?

?

注意:QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource());

?

这句话是要导入dbutils包

?

?

service层:

?

?

import java.util.List;import com.du.dao.UpfileDao;import com.du.domain.Upfile;import com.du.factory.DaoFactory;public class BusinessServiceImpl {UpfileDao dao = DaoFactory.getInstance().getDao(UpfileDao.class);public void add(Upfile up){dao.add(up);}public List getAll(){return dao.getAll();}public Upfile find(String id){return dao.find(id);}}
?

?

注意:这里用到了工厂模式

?

?

?

import java.io.IOException;import java.util.Properties;public class DaoFactory {//单例模式private static Properties pro =new Properties();static{try {pro.load(DaoFactory.class.getClassLoader().getResourceAsStream("dao.properties"));} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}private static DaoFactory instance = new DaoFactory();private DaoFactory(){}public static DaoFactory getInstance(){return instance;}public <T> T getDao(Class<T> interfaceClass){String name=interfaceClass.getSimpleName();//获取类的名字,之后在properties中获取相应的DaoString daoname=pro.getProperty(name);try {return (T) Class.forName(daoname).newInstance();} catch (Exception e) {// TODO Auto-generated catch blockthrow new RuntimeException(e);}}}
?

?

?

配置文件:

?

?

UpfileDao=com.du.dao.impl.UpfileDaoImpl
?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

读书人网 >编程

热点推荐