在写程序前写好文档:
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
分享到:
相关推荐
在这个基于DAO工厂模式的三层架构示例项目中,我们将深入探讨每一层的功能以及DAO工厂模式在其中的作用。 **表现层(Presentation Layer)** 表现层是用户与系统交互的界面,它负责接收用户的输入,处理用户的请求...
在Java Web开发中,它们通常被应用于三层架构或MVC(Model-View-Controller)模型中。 DAO(Data Access Object)层是负责与数据库交互的层,它的主要职责是实现数据的增、删、改、查等操作。例如,编写SQL语句来...
5. **文件结构**: 生成的文件通常按照三层架构分布,Controller层负责接收前端请求并调用Service,Service层处理业务逻辑,DAO层操作数据,而Mapper则定义SQL语句。 从文件名称列表中,我们可以看出一些具体的操作...
Java Web三层架构是一种常见的软件设计模式,用于构建可扩展、可维护且易于测试的Web应用程序。这个模式将应用逻辑划分为三个主要层次:表现层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据...
在Java Web开发中,三层架构是一种常见的设计模式,它将应用程序分为表现层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer)。这种分层设计有助于提高代码的可读性、...
7. **源码学习价值**:通过分析这个Delphi三层源码,开发者可以深入理解如何在实际项目中运用三层架构,如何组织和管理代码,以及如何在Delphi环境中设计和实现高效的数据访问和业务处理逻辑。 总之,"2000_Delphi...
三层架构是一种常见的软件设计模式,尤其在开发企业级应用时被广泛应用。这种架构将应用程序分为三个主要层次:表现层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer...
Java 三层架构是一种常见的软件设计模式,主要用于构建可维护性和扩展性良好的企业级应用程序。在这个架构中,系统被划分为三个主要部分:表现层(View)、业务逻辑层(Service)和数据访问层(DAO)。MVC(Model-...
在当今的软件开发领域,架构风格和...在具体的项目开发中,MVC模式常常被用于实现三层架构中的业务逻辑层和表示层的功能。通过了解和掌握这两种模型,开发者可以更有效地组织代码,提高软件系统的可维护性和可扩展性。
1. **Java三层架构**:这是软件开发中常见的分层架构模式,包括表现层(Controller)、业务逻辑层(Service)和数据访问层(DAO)。表现层处理用户交互,业务逻辑层负责业务规则的实现,数据访问层则处理与数据库的...
JSP(JavaServer Pages)三层架构是一种在Web应用开发中常见的设计模式,它将应用程序分为三个主要部分:表现层(页面层)、业务逻辑层和数据访问层。这样的划分有助于提高代码的可维护性、可扩展性和可重用性,同时...
Asp.NET项目通常采用三层架构来组织代码,以实现良好的模块化、可维护性和可扩展性。三层架构是一种设计模式,它将应用程序分为三个主要部分:表现层(Presentation Layer)、业务逻辑层(Business Logic Layer)和...
【SpringBoot三层架构Demo】是一个基于SpringBoot框架的示例项目,它展示了如何按照传统的三层架构模式(表现层、业务层、数据访问层)来组织代码。该项目旨在帮助开发者理解和实践SpringBoot在实际开发中的应用。 ...
Java三层架构是软件开发中常用的一种设计模式,尤其在电子商务网站的开发中,它能有效分离业务逻辑、数据访问和用户界面,提高代码的可维护性和可扩展性。SSH(Struts2、Spring、Hibernate)是Java Web开发的三大...
SSH三层架构整合是Java开发中常见的一种Web应用架构模式,主要由Spring、Struts和Hibernate三个框架组成。这种架构模式旨在提高开发效率,降低代码耦合度,提供良好的可维护性和可扩展性。下面我们将详细探讨SSH框架...
在给定的文件信息中,我们可以看到该 JavaEE 三层架构的实现细节: * web 层:使用 Servlet 控制器来处理用户的请求。 * 业务逻辑层:使用 Service 接口来定义业务逻辑的接口,并使用实现类来实现具体的业务逻辑。 ...
1. **表示层(Presentation Layer)**:与三层架构中的表现层相似,负责用户界面和交互。 2. **业务逻辑层(Business Logic Layer)**:处理业务规则和流程,与三层架构一致。 3. **服务层(Service Layer)**:...
SSH三层架构是Java Web开发中常见的一种架构模式,它由Struts2、Spring和Hibernate三个框架组成,分别负责表现层、业务逻辑层和数据访问层。这个架构模式旨在提高代码的可维护性、可扩展性和模块化。 Struts2作为...
总之,"ThreeTireSample"是一个基于JavaWeb的三层架构信息管理系统,它展示了如何利用JSP、Servlet、JavaBeans/Service和DAO进行模块化开发。通过学习和实践这个案例,开发者可以加深对Java Web开发的理解,提高开发...
三层架构则进一步将应用分为表现层、业务逻辑层和服务数据访问层,以增强系统架构的清晰度和模块化。 1. MVC模式详解: - **模型(Model)**:模型层负责处理业务逻辑和数据管理。在这个例子中,JavaBean被用作...