Java web項目


前言

本文目標:使用eclipseIDE環境搭建一個基於maven的web項目,講解搭建過程,項目結構,程序運行、調試和測試過程,並使用maven作為持續集成工具。

   

面向對象:轉型java.net開發人員

   

知識點:eclipse,maven,jfinal,jetty,tomcat,junit

   

環境准備

Maven

  1. 安裝maven-3.3.9, 建議3.0+版本
  2. 檢查安裝版本,命令行輸入: mvn -version

   

   

   

Tomcat

  1. 下載tomcat-v7,解壓到本地。

   

Eclipse

  1. 安裝eclipse-neon版本。請確保安裝了圖示中的插件。

       

  2. 配置maven

       

  3. 配置server

   

   

   

   

創建項目

使用eclipse創建基於maven的web項目

使用maven在命令行創建web項目

   

  1. 創建web項目:
    1. 執行命令: mvn archetype:generate, 控制台顯示如下消息后將無反應(原因: mvn嘗試列出服務器所有的項目模板,類型太多且訪問maven倉庫太慢導致,為什么太慢?你懂的,防火長城)

         

         

    2. 添加參數使mvn只列出本機的模板:-DarchetypeCatalog=internal
    3. 模板還是很多,建議增加參數,例如要創建web項目,可用參數 -Dfilter=web
    4. 確定了模板類型后,可直接在參數指定模板:-DarchetypeArtifactId=maven-archetype-webapp
    5. mvn默認使用交互模式,可參數指定為非交互模式:-DinteractiveMode=false
    6. 創建網站項目( 包名com.demo, 項目名websample) 的完整命令: mvn archetype:generate -DarchetypeArtifactId=maven-archetype-webapp -DgroupId=com.demo -DartifactId=websample -DinteractiveMode=false -DarchetypeCatalog=internal

         

         

    7. 查看編譯、測試、打包效果,命令: mvn compile test package
    8. 生成eclipse項目的相關文件(.project,.classpath),
      1. 進入項目目錄,命令:cd websample
      2. 執行命令:mvn eclipse:eclipse
    9. 其他
      1. 網上案例大多沒有沒有設置參數 -DarcheypeCatalog,由於國情原因,基本都卡在了 a)
      2. 即使指定了模板也要設置 -DarchetypeCatalog參數,否則還是卡在a)

eclipse中打開項目

eclipse中導入maven項目

maven生成項目文件后導入

  1. 生成eclipse項目的相關文件(.project,.classpath),
    1. 進入項目目錄,命令:cd websample
    2. 執行命令:mvn eclipse:eclipse
  2. eclipse 中導入

       

       

  3. 編譯錯誤處理, Makers 窗口提示錯誤
    1. The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path

      解決方法:

      1. Right Click on Project
      2. Select Properties
      3. Select Project Facets
      4. Select Apache Tomcat as Runtime server
      5. Click OK

注意事項

  1. 導入項目(java世界叫構件)名稱不能和工作區中已有構件同名。(pom.xml中的artifactId節點值)

   

源碼開發

參考JFinal手冊添加MVC結構的源碼。

  1. 修改項目編譯輸出目錄到src/main/webapp/WEB-INF/classes(maven默認是target/classes)
  2. 修改pom.xml文件,添加依賴。
  3. 修改web.xml文件,指定過濾器。
  4. 添加java文件
    1. 創建java文件夾(maven結構中源碼位置為src/main/java)。
    2. 添加配置文件,DemoConfig.java文件,繼承JFinalConfig。
    3. 添加控制器文件,HelloController.java文件。

   

運行調試

JFinal手冊中有2種運行方式

  1. App運行【Java Application】
    1. 該方式依賴jetty,一種輕量級、嵌入式的servle容器。
  2. 部署到server運行【Run on Server】
    1. 建議直接使用tomcat目錄配置,注意修改端口不要被占用導致無法啟動

   

   

JFinal測試擴展jfinal-ext

  1. 該擴展不支持jfinal-2.1+,該版本重構中修改了logger類,其他不兼容未知。
  2. 開源軟件的升級兼容性很差

   

使用junit編寫單元測試

Junit3 vs Junit4

  • maven模板創建項目中默認依賴junit3
  • eclipse默認的單元測試插件使用junit4
  • Junit3.8對測試代碼的要求
    • public的。
    • void的。
    • 無方法參數。
    • 方法名稱必須以test開頭
  • 兩者使用上區別很大,v4采用了更簡潔Annotation特性(java5)簡化測試代碼

添加測試代碼

Junit3測試代碼

import junit.framework.TestCase;

import static org.junit.Assert.*;

public class AddOperationTest extends TestCase{

public void setUp() throws Exception {

}

public void tearDown() throws Exception {

}

public void testAdd() {assertEquals(expResult, result);}

}

Junit4測試代碼

import junit.framework.TestCase;

import org.junit.After;

import org.junit.Before;

import org.junit.Test;

import static org.junit.Assert.*;

public class AddOperationTest extends TestCase{

@before

public void setUp() throws Exception {}

@after

public void tearDown() throws Exception {}

@test

public void testAdd() {assertEquals(expResult, result);}

}

   

maven中的單元測試,

  1. 命令: mvn test

   

eclipse中的單元測試

  1. 上述步驟中修改了Java Build Path的默認輸出文件夾為src/main/webapp/WEB-INF/classes, 此處需要對test源碼目錄做修改,使其輸出到target/test-classes,保持和maven中一致

       

       

  2. 新建配置文件
  3. 修改classpath,否則運行單元測試時會提示:Eclipse - java.lang.ClassNotFoundException
    1. Open your run configurations
    2. Click on the jUnit-Test you want to start
    3. go to the classpath tab
    4. Try to add a folder (click on user entries, click on advanced, click on add folders, click on ok and search the outputfolder for your test classes(those you find under projektproperties java build path, source))

       

       

web程序打包

  1. 命令: mvn package
  2. 上述命令將target/目錄下輸出websample.war及websample文件夾。
  3. websample.war包含了項目所需的所有文件

   

持續集成

持續集成實踐

  • 只維護一個源碼倉庫
  • 自動化構建
  • 讓構建自行測試
  • 每人每天向主干提交代碼
  • 每次提交都應在持續集成機器上構建主干
  • 保持快速的構建
  • 在模擬生產環境中測試
  • 讓每個人都能輕易獲得最新的可執行文件
  • 每個人都能看到進度
  • 自動化部署

   

擴展閱讀

maven與eclipse的關系

   

   

   

參考資料

  1. Creating Simple Web Application Using Apache Maven
  2. 如何用Maven創建web項目(具體步驟)
  3. 將 Maven生成的java項目轉化為支持 Eclipse IDE的項目
  4. 在 Eclipse 中利用 Maven
  5. 基於Maven的持續集成實踐
  6. JUnit4 詳解


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM