在慕課網上看了Java高並發秒殺API視屏後,覺得這個案例真的讓我學到了很多,現在重新自己實現一遍,博客記下,順便分析其中的要點。
第一步是項目的創建和依賴
利用Maven去創建工程然後導入Idea中並完成相關配置,這裡的注意點:
1.利用Maven創建web項目命令:mvn archetype:generate -DgroupId=org.seckill -DartifactId=seckill -DarchetypeArtifactId=maven-archetype-webapp -DarchetypeCatalog=local
關於這條命令的解釋:mvn archetype:generate 固定格式
-DgroupId 組織標識(包名)
-DartifactId 項目名稱
-DarchetypeArtifactId 指定ArchetypeId。maven-archetype-quickstart表示創建一個Java Project;maven-archetype-webapp表示創建一個Web Project
-DarchetypeCatalog 用來指定maven-archetype-plugin讀取archetype-catalog.xml文件的位置,local——本地的,位置為~/.m2/archetype-catalog.xml
關於Maven命中各種參數的詳細解釋參考了這兩篇博文:http://blog.csdn.net/edward0830ly/article/details/8748986 和 http://blog.csdn.net/robinjwong/article/details/38899065
2.從官網上獲取相關配置。一些xml文件配置什麼的,從官網的說明指導上直接拷即可。
3.Idea導入Maven項目,導入pom.xml文件即可。 這步我在做的時候遇到幾個問題, 主要是因為自己比較菜,idea不會用。一個是Idea中的Project相當於eclipse中的workplace,Modules才相當於eclipse中的 project,所以想要在idea窗口中同時顯示多個項目的話可以自己新建一個empty project, 然後導入項目即可。另一個問題是如何刪除project,先關閉project再刪除。
4.mavaen創建的工程的web.xml文件sevlet默認版本是2.3,EL表達式默認不工作,得修改。去tomacat目錄中的webapps,有一些示例,找到實例的web-xml文件,拷貝其中的頭部分即可
1 <web-app xmlns="http://java.sun.com/xml/ns/javaee" 2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 4 http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 5 version="3.0" 6 metadata-complete="true"> 7 <!--修改servlet版本為3.0-->
5.創建好的Maven項目還有一些缺失的文件夾要自己手動去創建,主要是一個java文件,用來存放我們寫的源代碼,以及test文件用來存放我們的測試用例。建好後的文件目錄:
6.在pom.xml中加入相關的依賴,這裡給個網址 http://mvnrepository.com/ ,想要什麼jar包直接就能搜出它的依賴是怎麼寫的。下面是這個案例所用到的全部依賴
1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 3 <modelVersion>4.0.0</modelVersion> 4 <groupId>org.seckill2</groupId> 5 <artifactId>seckill2</artifactId> 6 <packaging>war</packaging> 7 <version>1.0</version> 8 <name>seckill2 Maven Webapp</name> 9 <url>http://maven.apache.org</url> 10 <dependencies> 11 <dependency> 12 <groupId>junit</groupId> 13 <artifactId>junit</artifactId> 14 <version>4.11</version> 15 <scope>test</scope> 16 </dependency> 17 <!-- 補全項目依賴--> 18 <!--1.日志 java日志:slf4j, log4j, logback, common-logging 19 slf4j 是規范/接口 20 日志實現:log4j,logback,common-logging 21 使用:slf4j+logback 22 --> 23 <dependency> 24 <groupId>org.slf4j</groupId> 25 <artifactId>slf4j-api</artifactId> 26 <version>1.7.12</version> 27 </dependency> 28 <dependency> 29 <groupId>ch.qos.logback</groupId> 30 <artifactId>logback-core</artifactId> 31 <version>1.1.1</version> 32 </dependency> 33 <!--實現slf4j接口並整合--> 34 <dependency> 35 <groupId>ch.qos.logback</groupId> 36 <artifactId>logback-classic</artifactId> 37 <version>1.1.1</version> 38 </dependency> 39 40 <!--2:數據庫相關依賴--> 41 <dependency> 42 <groupId>mysql</groupId> 43 <artifactId>mysql-connector-java</artifactId> 44 <version>5.1.35</version> 45 <scope>runtime</scope> 46 </dependency> 47 <dependency> 48 <groupId>c3p0</groupId> 49 <artifactId>c3p0</artifactId> 50 <version>0.9.1.2</version> 51 </dependency> 52 53 <!--DAO框架依賴: MyBatis依賴--> 54 <dependency> 55 <groupId>org.mybatis</groupId> 56 <artifactId>mybatis</artifactId> 57 <version>3.3.0</version> 58 </dependency> 59 <!--mybatis自身實現的spring整合依賴--> 60 <dependency> 61 <groupId>org.mybatis</groupId> 62 <artifactId>mybatis-spring</artifactId> 63 <version>1.2.3</version> 64 </dependency> 65 66 <!--3: Servlet Web 相關依賴--> 67 <dependency> 68 <groupId>taglibs</groupId> 69 <artifactId>standard</artifactId> 70 <version>1.1.2</version> 71 </dependency> 72 <dependency> 73 <groupId>jstl</groupId> 74 <artifactId>jstl</artifactId> 75 <version>1.2</version> 76 </dependency> 77 <dependency> 78 <groupId>com.fasterxml.jackson.core</groupId> 79 <artifactId>jackson-databind</artifactId> 80 <version>2.5.4</version> 81 </dependency> 82 <dependency> 83 <groupId>javax.servlet</groupId> 84 <artifactId>javax.servlet-api</artifactId> 85 <version>3.0.1</version> 86 </dependency> 87 88 <!--4:spring依賴--> 89 <!--1)spring核心依賴--> 90 <dependency> 91 <groupId>org.springframework</groupId> 92 <artifactId>spring-core</artifactId> 93 <version>4.1.7.RELEASE</version> 94 </dependency> 95 <dependency> 96 <groupId>org.springframework</groupId> 97 <artifactId>spring-beans</artifactId> 98 <version>4.1.7.RELEASE</version> 99 </dependency> 100 <dependency> 101 <groupId>org.springframework</groupId> 102 <artifactId>spring-context</artifactId> 103 <version>4.1.7.RELEASE</version> 104 </dependency> 105 <!--2)spring dao層依賴--> 106 <dependency> 107 <groupId>org.springframework</groupId> 108 <artifactId>spring-jdbc</artifactId> 109 <version>4.1.7.RELEASE</version> 110 </dependency> 111 <dependency> 112 <groupId>org.springframework</groupId> 113 <artifactId>spring-tx</artifactId> 114 <version>4.1.7.RELEASE</version> 115 </dependency> 116 <!--3)spring web相關依賴--> 117 <dependency> 118 <groupId>org.springframework</groupId> 119 <artifactId>spring-web</artifactId> 120 <version>4.1.7.RELEASE</version> 121 </dependency> 122 <dependency> 123 <groupId>org.springframework</groupId> 124 <artifactId>spring-webmvc</artifactId> 125 <version>4.1.7.RELEASE</version> 126 </dependency> 127 128 <!--4)spring test相關依賴--> 129 <dependency> 130 <groupId>org.springframework</groupId> 131 <artifactId>spring-test</artifactId> 132 <version>4.1.7.RELEASE</version> 133 </dependency> 134 135 <!-- redis客戶端: Jedis --> 136 <dependency> 137 <groupId>redis.clients</groupId> 138 <artifactId>jedis</artifactId> 139 <version>2.7.3</version> 140 </dependency> 141 <!--protostuff序列化依賴--> 142 <dependency> 143 <groupId>com.dyuproject.protostuff</groupId> 144 <artifactId>protostuff-core</artifactId> 145 <version>1.0.8</version> 146 </dependency> 147 <dependency> 148 <groupId>com.dyuproject.protostuff</groupId> 149 <artifactId>protostuff-runtime</artifactId> 150 <version>1.0.8</version> 151 </dependency> 152 <!-- https://mvnrepository.com/artifact/commons-collections/commons-collections --> 153 <dependency> 154 <groupId>commons-collections</groupId> 155 <artifactId>commons-collections</artifactId> 156 <version>3.2.1</version> 157 </dependency> 158 </dependencies> 159 <build> 160 <finalName>seckill2</finalName> 161 </build> 162 </project>
這裡有出現了點差錯,因為idea的maven配置沒有配置我自己下的那個導致找不到依賴的錯誤,更改下配置即可。
呼。。。。。 項目的創建和依賴終於完成了。。。。。自己實在太水了。。。。 下一步正式開始DAO層的設計與開發。