`
dupengtao
  • 浏览: 33033 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

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

阅读更多

在写程序前写好文档:

readme.txt

 

1.准备开发环境
	1.1导入开发包
		mysql驱动
		c3po连接池
		dbutils
		fileupload组件:
		1)io包
		beanutils开发包:
		log4j开发包
		jstl开发
		
	1.2创建组织程序的开发包
	
	com.du.dao.impl
	com.du.service.impl
	com.du.web.controller
	com.du.utils
	junits.test
	com.du.domain
	
	1.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.做dao

4.做service

5.做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());//dbutils
		String 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 block
			throw 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 block
			throw 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 block
			throw 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 block
			e.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中获取相应的Dao
		String daoname=pro.getProperty(name);
		try {
			return (T) Class.forName(daoname).newInstance();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			throw new RuntimeException(e);
		}
	}
	
}
 

 

 

配置文件:

 

 

UpfileDao=com.du.dao.impl.UpfileDaoImpl
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0
0
分享到:
评论

相关推荐

    基于DAO工厂模式的三层架构示例项目源码

    在这个基于DAO工厂模式的三层架构示例项目中,我们将深入探讨每一层的功能以及DAO工厂模式在其中的作用。 **表现层(Presentation Layer)** 表现层是用户与系统交互的界面,它负责接收用户的输入,处理用户的请求...

    Service层和DAO层解析

    在Java Web开发中,它们通常被应用于三层架构或MVC(Model-View-Controller)模型中。 DAO(Data Access Object)层是负责与数据库交互的层,它的主要职责是实现数据的增、删、改、查等操作。例如,编写SQL语句来...

    mybatis-plus反向工程 自动生成3层架构的文件controller,service,dao,mapper.zip

    5. **文件结构**: 生成的文件通常按照三层架构分布,Controller层负责接收前端请求并调用Service,Service层处理业务逻辑,DAO层操作数据,而Mapper则定义SQL语句。 从文件名称列表中,我们可以看出一些具体的操作...

    Java Web三层架构的配置详解

    Java Web三层架构是一种常见的软件设计模式,用于构建可扩展、可维护且易于测试的Web应用程序。这个模式将应用逻辑划分为三个主要层次:表现层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据...

    java设计三层架构

    在Java Web开发中,三层架构是一种常见的设计模式,它将应用程序分为表现层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer)。这种分层设计有助于提高代码的可读性、...

    2000_Delphi最新三层源码_delphi三层架构_DELPHI三层_三层_源码

    7. **源码学习价值**:通过分析这个Delphi三层源码,开发者可以深入理解如何在实际项目中运用三层架构,如何组织和管理代码,以及如何在Delphi环境中设计和实现高效的数据访问和业务处理逻辑。 总之,"2000_Delphi...

    基于三层架构的新闻管理系统

    三层架构是一种常见的软件设计模式,尤其在开发企业级应用时被广泛应用。这种架构将应用程序分为三个主要层次:表现层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer...

    java 三层架构==MVCLogin

    Java 三层架构是一种常见的软件设计模式,主要用于构建可维护性和扩展性良好的企业级应用程序。在这个架构中,系统被划分为三个主要部分:表现层(View)、业务逻辑层(Service)和数据访问层(DAO)。MVC(Model-...

    三层架构和MVC的区别和联系

    在当今的软件开发领域,架构风格和...在具体的项目开发中,MVC模式常常被用于实现三层架构中的业务逻辑层和表示层的功能。通过了解和掌握这两种模型,开发者可以更有效地组织代码,提高软件系统的可维护性和可扩展性。

    一键生成java三层代码、数据库设计文档、接口对接文档(dao、entity、mapper、service、controller)

    1. **Java三层架构**:这是软件开发中常见的分层架构模式,包括表现层(Controller)、业务逻辑层(Service)和数据访问层(DAO)。表现层处理用户交互,业务逻辑层负责业务规则的实现,数据访问层则处理与数据库的...

    jsp三层架构

    JSP(JavaServer Pages)三层架构是一种在Web应用开发中常见的设计模式,它将应用程序分为三个主要部分:表现层(页面层)、业务逻辑层和数据访问层。这样的划分有助于提高代码的可维护性、可扩展性和可重用性,同时...

    Asp.net项目三层架构生成器

    Asp.NET项目通常采用三层架构来组织代码,以实现良好的模块化、可维护性和可扩展性。三层架构是一种设计模式,它将应用程序分为三个主要部分:表现层(Presentation Layer)、业务逻辑层(Business Logic Layer)和...

    SpringBoot三层架构Demo

    【SpringBoot三层架构Demo】是一个基于SpringBoot框架的示例项目,它展示了如何按照传统的三层架构模式(表现层、业务层、数据访问层)来组织代码。该项目旨在帮助开发者理解和实践SpringBoot在实际开发中的应用。 ...

    基于java三层架构的电子商务网站

    Java三层架构是软件开发中常用的一种设计模式,尤其在电子商务网站的开发中,它能有效分离业务逻辑、数据访问和用户界面,提高代码的可维护性和可扩展性。SSH(Struts2、Spring、Hibernate)是Java Web开发的三大...

    SSH三层架构整合

    SSH三层架构整合是Java开发中常见的一种Web应用架构模式,主要由Spring、Struts和Hibernate三个框架组成。这种架构模式旨在提高开发效率,降低代码耦合度,提供良好的可维护性和可扩展性。下面我们将详细探讨SSH框架...

    JavaEE 三层架构1

    在给定的文件信息中,我们可以看到该 JavaEE 三层架构的实现细节: * web 层:使用 Servlet 控制器来处理用户的请求。 * 业务逻辑层:使用 Service 接口来定义业务逻辑的接口,并使用实现类来实现具体的业务逻辑。 ...

    C#三层七层架构小案例

    1. **表示层(Presentation Layer)**:与三层架构中的表现层相似,负责用户界面和交互。 2. **业务逻辑层(Business Logic Layer)**:处理业务规则和流程,与三层架构一致。 3. **服务层(Service Layer)**:...

    SSH三层架构java

    SSH三层架构是Java Web开发中常见的一种架构模式,它由Struts2、Spring和Hibernate三个框架组成,分别负责表现层、业务逻辑层和数据访问层。这个架构模式旨在提高代码的可维护性、可扩展性和模块化。 Struts2作为...

    JavaWeb三层架构案例 信息管理系统 ThreeTireSample

    总之,"ThreeTireSample"是一个基于JavaWeb的三层架构信息管理系统,它展示了如何利用JSP、Servlet、JavaBeans/Service和DAO进行模块化开发。通过学习和实践这个案例,开发者可以加深对Java Web开发的理解,提高开发...

    真正意义的MVC_三层架构

    三层架构则进一步将应用分为表现层、业务逻辑层和服务数据访问层,以增强系统架构的清晰度和模块化。 1. MVC模式详解: - **模型(Model)**:模型层负责处理业务逻辑和数据管理。在这个例子中,JavaBean被用作...

Global site tag (gtag.js) - Google Analytics