一、 公司开发基本流程
a. 了解需求信息(比较模糊)
需求,不是别人告诉你的,是你自己挖掘出来的。
售前工程师(对行业知识了解):编程学不好,但懂点代码,对人的综合能力要求比较高
b. 产品经理:
整理需求,了解,从网上找些竞品分析。[3,5 个同类产品]
竞品分析:
1. 客户人群(流量)
2. 市场前景
3. 功能(优劣势)
c. 产品设计师:
通过竞品分析,做个系统原型(线框图/草图)通过ps/axture/c4d把原型做出来
页面优势,技术优势,我们做的系统功能优势,交互效果(感觉)(研究人的行为)
d. 原型会给客户做展示(ppt axture)
e. 前端程序员:照着原型去做静态的页面(HTML5/CSS3/JS)
设计人员与前端对接
静态 Demo 做出来
f. 后台程序员:拿着静态 Demo 做成真正带功能的东西。
g. 静态 Demo :根据这个 Demo 看到这个系统要做哪些功能。
h. 需求分析: 概要设计 项目的详细设计 OOA/OOD
功能:划分模块
例子: 产品模块 : 产品分类 产品信息
订单模块:
购物车:
个人中心:
商铺模块:
物流模块:
支付模块:
I. 开发阶段:
你要每个功能模块,做E-R图(实体关系模型图)
工具:Rose(IBM开发 笨重) PD(PowerDesigner 轻量级)
J. 根据E-R图建立数据库(SQL关系型是数据库,NoSQL 不仅仅是关系数据库)
K. 实体类 Dao类 Service类 Servlet类 ...
L. 测试上线
注意:切记要有规范:(制定规范)
例如:类名:XXXServlet
二、数据库连接池
1.连接池的出现
普通的jdbc:
驱动:jdbc接口的实现类
DriverManager(驱动管理器):获取数据连接 Connection
Statement ResultSet等:Connection
connect
jdbc<--------------->DB
时间浪费在: 建立一次连接 销毁一次连接 效率不高,真正的开发中也不会这么做。
连接池的出现:
jdbc<---------连接池------------>DB 缓存机制
Sun公司的人: 一套接口 DataSource(数据源),他就是数据库连接池的标准规范
DataSource:谁实现?
c3p0 : Hibernate
druid: 阿里
2. 如何编写数据库连接池:
(1)引入 Jar 包 数据库的驱动,在pom.xml引入地址 JDBC的实现类
(2)引入数据库连接池的实现类,在pom.xml引入地址 Druid
3. 实现:
Maven项目包:
Project Directory
entity: 实体类
dao: 持久层
prototype(原型)
impl
service:业务层代码
prototype
impl
servlet:控制层
util:工具类
(1). pom.xml
1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 2 <modelVersion>4.0.0modelVersion> 3 <groupId>com.uek.projectgroupId> 4 <artifactId>airsysartifactId> 5 <version>0.1version> 6 <packaging>warpackaging> 7 <name>airplanename> 8 9 <properties> 10 11 <project.build.sourceEncoding>UTF-8project.build.sourceEncoding> 12 13 <failOnMissingWebXml>falsefailOnMissingWebXml> 14 properties> 15 16 <dependencies> 17 18 19 <dependency> 20 <groupId>javax.servletgroupId> 21 <artifactId>javax.servlet-apiartifactId> 22 <version>3.1.0version> 23 <scope>providedscope> 24 dependency> 25 26 <dependency> 27 <groupId>javax.servlet.jspgroupId> 28 <artifactId>jsp-apiartifactId> 29 <version>2.0version> 30 <scope>providedscope> 31 dependency> 32 33 34 35 <dependency> 36 <groupId>mysqlgroupId> 37 <artifactId>mysql-connector-javaartifactId> 38 <version>5.1.48version> 39 dependency> 40 41 42 43 <dependency> 44 <groupId>com.alibabagroupId> 45 <artifactId>druidartifactId> 46 <version>1.1.20version> 47 dependency> 48 49 dependencies> 50 51 52 <build> 53 <plugins> 54 <plugin> 55 56 <artifactId>maven-compiler-pluginartifactId> 57 <version>3.5.1version> 58 <configuration> 59 <source>1.8source> 60 <target>1.8target> 61 configuration> 62 plugin> 63 64 <plugin> 65 <groupId>org.apache.tomcat.mavengroupId> 66 <artifactId>tomcat7-maven-pluginartifactId> 67 <version>2.2version> 68 <configuration> 69 <port>8080port> 70 <path>/airsyspath> 71 72 <contextReloadable>truecontextReloadable> 73 configuration> 74 plugin> 75 76 77 plugins> 78 build> 79 project>
(2). druid.properies
driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/demo username=root password=root #Druid连接池 initialSize=5 # 初始化连接池里建立的数量 :5 maxActive=10 # 最大的连接数量:10 maxWait=3000 # 等待时间:3s
(3). DruidUtil.java
1 package util; 2 3 4 import java.io.InputStream; 5 import java.sql.Connection; 6 import java.sql.ResultSet; 7 import java.sql.SQLException; 8 import java.sql.Statement; 9 import java.util.Properties; 10 11 import javax.sql.DataSource; 12 13 import com.alibaba.druid.pool.DruidDataSourceFactory; 14 15 16 /** 17 * 数据库连接池工具 18 * @author 儿子 19 * 20 */ 21 public class DruidUtil { 22 23 private static DataSource ds; 24 25 /** 26 * 静态代码块 加载配置文件信息 只读取一次 27 */ 28 static { 29 //-- 1. 加载配置文件信息 30 Properties ps = new Properties(); //-- Map 31 //-- 2. 建立到配置文件流 32 InputStream in = DruidUtil.class. 33 getClassLoader().getResourceAsStream("druid.properties"); 34 //-- 3.读取配置文件的数据 35 try { 36 ps.load(in); 37 ds = DruidDataSourceFactory.createDataSource(ps); 38 } catch (Exception e) { 39 System.out.println("读取配置文件异常"); 40 } 41 42 //-- 4. 通过配置信息建立数据源对象DataSoure(其实就是连接池对象) 43 try { 44 DruidDataSourceFactory.createDataSource(ps); 45 } catch (Exception e) { 46 System.out.println("建立数据源对象DataSoure异常"); 47 } 48 } 49 /** 50 * 获取连接对象 51 * @return Connection 52 */ 53 public static Connection getConnection() { 54 55 //-- 通过连接池获取连接对象 56 Connection con = null; 57 try { 58 con = ds.getConnection(); 59 } catch (SQLException e) { 60 System.out.println("JDBC 获取连接异常"); 61 } 62 return con; 63 } 64 65 /** 66 * 释放文件资源 67 * @param stmt 68 * @param con 69 */ 70 public static void close (Statement stmt, Connection con) { 71 if(stmt!=null) { 72 try { 73 stmt.close(); 74 } catch (SQLException e) { 75 e.printStackTrace(); 76 } 77 } 78 if (con != null ) { 79 try { 80 con.close(); 81 } catch (SQLException e) { 82 e.printStackTrace(); 83 } 84 } 85 } 86 /** 87 * 释放文件资源 88 * @param rs 89 * @param stmt 90 * @param con 91 */ 92 public static void close(ResultSet rs, Statement stmt, Connection con) { 93 if (rs != null ) { 94 try { 95 rs.close(); 96 } catch (SQLException e) { 97 e.printStackTrace(); 98 } 99 } 100 if(stmt!=null) { 101 try { 102 stmt.close(); 103 } catch (SQLException e) { 104 e.printStackTrace(); 105 } 106 } 107 if (con != null ) { 108 try { 109 con.close(); 110 } catch (SQLException e) { 111 e.printStackTrace(); 112 } 113 } 114 } 115 116 117 118 public static void main(String[] args) {} 119 }
(4) 测试是否成功
a. 将druid.properties 复制到 test/resources/ 下
b. 新建编写类 TestDruid.java
c. TestDruid.java
1 import java.sql.Connection; 2 import java.sql.Statement; 3 4 import util.DruidUtil; 5 6 /** 7 * 测试连接池工具类 8 * @author 儿子 9 * 10 */ 11 public class TestDruid { 12 public static void main(String[] args) throws Exception { 13 //-- 1. 获取连接对象 14 Connection con = DruidUtil.getConnection(); 15 //-- 2. 定义sql语句 16 String sql = "Create table student(id int,name varchar(20))"; 17 //-- 获取语句对象 18 Statement stmt = con.createStatement(); 19 //-- 4. 执行Sql语句 20 stmt.execute(sql); 21 //-- 释放资源 22 DruidUtil.close(stmt, con); 23 } 24 }