1、 公司開發基本流程
a. 瞭解需求信息(比較模糊)
需求,不是別人告訴你的,是你本身挖掘出來的。
售前工程師(對行業知識瞭解):編程學很差,但懂點代碼,對人的綜合能力要求比較高
b. 產品經理:
整理需求,瞭解,從網上找些競品分析。[3,5 個同類產品]
競品分析:
1. 客戶人羣(流量)
2. 市場前景
3. 功能(優劣勢)前端
c. 產品設計師:
經過競品分析,作個系統原型(線框圖/草圖)經過ps/axture/c4d把原型作出來
頁面優點,技術優點,咱們作的系統功能優點,交互效果(感受)(研究人的行爲)java
d. 原型會給客戶作展現(ppt axture)mysql
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. 測試上線
注意:切記要有規範:(制定規範)web
例如:類名:XXXServlet
2、數據庫鏈接池sql
1.鏈接池的出現數據庫
普通的jdbc:
驅動:jdbc接口的實現類
DriverManager(驅動管理器):獲取數據鏈接 Connection
Statement ResultSet等:Connection
connect
jdbc<--------------->DB apache
時間浪費在: 創建一次鏈接 銷燬一次鏈接 效率不高,真正的開發中也不會這麼作。編程
鏈接池的出現:
jdbc<---------鏈接池------------>DB 緩存機制
Sun公司的人: 一套接口 DataSource(數據源),他就是數據庫鏈接池的標準規範
DataSource:誰實現?
c3p0 : Hibernate
druid: 阿里
2. 如何編寫數據庫鏈接池:
(1)引入 Jar 包 數據庫的驅動,在pom.xml引入地址 JDBC的實現類
(2)引入數據庫鏈接池的實現類,在pom.xml引入地址 Druid
api
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.0</modelVersion> 3 <groupId>com.uek.project</groupId> 4 <artifactId>airsys</artifactId> 5 <version>0.1</version> 6 <packaging>war</packaging> 7 <name>airplane</name> 8 <!-- 2. 項目屬性配置 --> 9 <properties> 10 <!-- 項目編碼使用UTF-8 --> 11 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 12 <!-- 忽略掉web.xml文件 ,由於咱們使用servlet3.0開發web項目 --> 13 <failOnMissingWebXml>false</failOnMissingWebXml> 14 </properties> 15 <!-- 3. 配置項目所須要的第三方jar 包 --> 16 <dependencies> 17 <!-- servlet api --> 18 <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --> 19 <dependency> 20 <groupId>javax.servlet</groupId> 21 <artifactId>javax.servlet-api</artifactId> 22 <version>3.1.0</version> 23 <scope>provided</scope> 24 </dependency> 25 26 <dependency> 27 <groupId>javax.servlet.jsp</groupId> 28 <artifactId>jsp-api</artifactId> 29 <version>2.0</version> 30 <scope>provided</scope> 31 </dependency> 32 33 <!-- MySQL數據庫鏈接池 --> 34 <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> 35 <dependency> 36 <groupId>mysql</groupId> 37 <artifactId>mysql-connector-java</artifactId> 38 <version>5.1.48</version> 39 </dependency> 40 41 <!-- Druid --> 42 <!-- https://mvnrepository.com/artifact/com.alibaba/druid --> 43 <dependency> 44 <groupId>com.alibaba</groupId> 45 <artifactId>druid</artifactId> 46 <version>1.1.20</version> 47 </dependency> 48 49 </dependencies> 50 51 <!-- 配置構建插件 --> 52 <build> 53 <plugins> 54 <plugin> 55 <!-- 編譯插件 --> 56 <artifactId>maven-compiler-plugin</artifactId> 57 <version>3.5.1</version> 58 <configuration> 59 <source>1.8</source> 60 <target>1.8</target> 61 </configuration> 62 </plugin> 63 <!-- Tomcat 插件 --> 64 <plugin> 65 <groupId>org.apache.tomcat.maven</groupId> 66 <artifactId>tomcat7-maven-plugin</artifactId> 67 <version>2.2</version> 68 <configuration> 69 <port>8080</port> 70 <path>/airsys</path> 71 <!-- 實現熱部署,不須要每次修改代碼後都從新啓動Tomcat --> 72 <contextReloadable>true</contextReloadable> 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<Object,object> 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 }