鍍金池/ 教程/ C++/ Eclipse 的 Java Web 項(xiàng)目環(huán)境搭建
介紹
IntelliJ IDEA 界面介紹
最特殊的快捷鍵 Alt + Enter 介紹
IntelliJ IDEA 配合 Maven 的一些技巧
文件代碼模板的使用
常見文件類型的圖標(biāo)介紹
IntelliJ IDEA 推薦設(shè)置講解
Maven 項(xiàng)目介紹
IntelliJ IDEA 相關(guān)核心文件和目錄介紹
Debug 介紹
IntelliJ IDEA 常用設(shè)置講解 - 2
IntelliJ IDEA 插件開發(fā)視頻教程
IntelliJ IDEA 緩存和索引介紹和清理方法
IntelliJ IDEA 主題、字體、編輯區(qū)主題、文件編碼修改、亂碼問題
Maven 的單模塊 Spring Boot 項(xiàng)目
IntelliJ IDEA 遠(yuǎn)程調(diào)試 Tomcat
插件的使用
IntelliJ IDEA 編譯方式介紹
IntelliJ IDEA For Mac 快捷鍵
IntelliJ IDEA 常用設(shè)置講解 - 1
首次運(yùn)行
Ubuntu 系統(tǒng)下安裝 IntelliJ IDEA
數(shù)據(jù)庫管理工具介紹
重構(gòu)講解
從 Windows 過度到 Mac 必備快捷鍵對(duì)照表
Windows 系統(tǒng)下安裝 IntelliJ IDEA
Maven 的單模塊 / 多模塊之 Spring MVC + Spring + Spring Data JPA 項(xiàng)目
版本控制的使用
IntelliJ IDEA 的 Java 熱部署插件 JRebel 安裝及使用
IntelliJ IDEA 常用設(shè)置講解 - 3
Emmet 的使用
Postfix Completion 的使用
Mac 系統(tǒng)下安裝 IntelliJ IDEA
本系列教程結(jié)束
實(shí)時(shí)代碼模板的使用
快捷鍵
IntelliJ IDEA 項(xiàng)目相關(guān)的幾個(gè)重要概念介紹
安裝總結(jié)
Maven 的單模塊 / 多模塊之 Spring MVC + Spring + Mybatis 項(xiàng)目講解
關(guān)于
Eclipse 的 Java Web 項(xiàng)目環(huán)境搭建
IntelliJ IDEA 常用設(shè)置講解 - 4
Hello World 項(xiàng)目創(chuàng)建與項(xiàng)目配置文件介紹

Eclipse 的 Java Web 項(xiàng)目環(huán)境搭建

Eclipse 項(xiàng)目結(jié)構(gòu)

http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxi-a-eclipse-project-introduce-1.gif" alt="Eclipse 項(xiàng)目結(jié)構(gòu)" />

  • 如上圖 Gif 演示,在 Eclipse 下,一般中小項(xiàng)目的項(xiàng)目結(jié)構(gòu)基本都是這種模式的,所以我們這里也通過網(wǎng)上一個(gè)開源項(xiàng)目 JspRun 進(jìn)行講解。
  • 下載地址:http://pan.baidu.com/s/1i3zrSf7

Eclipse 項(xiàng)目配置

http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxi-b-eclipse-project-settings-1.jpg" alt="Eclipse 項(xiàng)目配置" />

  • 如上圖箭頭所示,在 IntelliJ IDEA 下是支持直接打開 Eclipse 項(xiàng)目的,無需導(dǎo)入。
  • 如上圖標(biāo)注 1 所示,選擇項(xiàng)目的 .project 文件打開即可。

http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxi-b-eclipse-project-settings-2.jpg" alt="Eclipse 項(xiàng)目配置" />

  • 如上圖標(biāo)注 1 所示,IntelliJ IDEA 能自動(dòng)識(shí)別到可編譯的 src 類目錄,所以這里文件夾是藍(lán)色的。
  • 如上圖標(biāo)注 2 所示,Java Web 項(xiàng)目 WebRoot 是整個(gè)項(xiàng)目輸出的根目錄,所以這個(gè)區(qū)域也是非常重要的,只是無需配置。
  • 如上圖標(biāo)注 3 所示,WEB-INF 下的一些配置文件,以及兩個(gè)目錄 classeslib 都是至關(guān)重要的,其中 classes 是紅色目錄,也就是被排除的,因?yàn)榫幾g產(chǎn)生的文件對(duì)開發(fā)來講是沒有多大意義的,所以進(jìn)行了排除,但是這并不會(huì)影響容器去使用它。

http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxi-b-eclipse-project-settings-3.jpg" alt="Eclipse 項(xiàng)目配置" />

  • 如上圖標(biāo)注 1 所示,因?yàn)檫@個(gè)項(xiàng)目是單 Module 的,所以我們這里在 Project compiler output 可以選擇項(xiàng)目 WEB-INF 下的 classes 編譯目錄。

http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxi-b-eclipse-project-settings-4.jpg" alt="Eclipse 項(xiàng)目配置" />

  • 如上圖紅圈所示,我們可以根據(jù)實(shí)際情況,對(duì)項(xiàng)目的任意目錄進(jìn)行這五種目錄類型的標(biāo)注,選中要標(biāo)注的目錄然后點(diǎn)擊想要標(biāo)注的類型按鈕即可,這個(gè)知識(shí)點(diǎn)非常非常重要,必須會(huì)。

    • Sources 一般用于標(biāo)注類似 src 這種可編譯目錄。有時(shí)候我們不單單項(xiàng)目的 src 目錄要可編譯,還有其他一些特別的目錄也要作為可編譯的目錄,就需要對(duì)該目錄進(jìn)行此標(biāo)注。只有 Sources 這種可編譯目錄才可以新建 Java 類和包,這一點(diǎn)需要牢記。
    • Tests 一般用于標(biāo)注可編譯的單元測試目錄。在規(guī)范的 maven 項(xiàng)目結(jié)構(gòu)中,頂級(jí)目錄是 src,maven 的 src 我們是不會(huì)設(shè)置為 Sources 的,而是在其子目錄 main 目錄下的 java 目錄,我們會(huì)設(shè)置為 Sources。而單元測試的目錄是 src - test - java,這里的 java 目錄我們就會(huì)設(shè)置為 Tests,表示該目錄是作為可編譯的單元測試目錄。一般這個(gè)和后面幾個(gè)我們都是在 maven 項(xiàng)目下進(jìn)行配置的,但是我這里還是會(huì)先說說。從這一點(diǎn)我們也可以看出 IntelliJ IDEA 對(duì) maven 項(xiàng)目的支持是比較徹底的。
    • Resources 一般用于標(biāo)注資源文件目錄。在 maven 項(xiàng)目下,資源目錄是單獨(dú)劃分出來的,其目錄為:src - main -resources,這里的 resources 目錄我們就會(huì)設(shè)置為 Resources,表示該目錄是作為資源目錄。資源目錄下的文件是會(huì)被編譯到輸出目錄下的。
    • Test Resources 一般用于標(biāo)注單元測試的資源文件目錄。在 maven 項(xiàng)目下,單元測試的資源目錄是單獨(dú)劃分出來的,其目錄為:src - test -resources,這里的 resources 目錄我們就會(huì)設(shè)置為 Test Resources,表示該目錄是作為單元測試的資源目錄。資源目錄下的文件是會(huì)被編譯到輸出目錄下的。
    • Excluded 一般用于標(biāo)注排除目錄。被排除的目錄不會(huì)被 IntelliJ IDEA 創(chuàng)建索引,相當(dāng)于被 IntelliJ IDEA 廢棄,該目錄下的代碼文件是不具備代碼檢查和智能提示等常規(guī)代碼功能。
    • 通過上面的介紹,我們知道對(duì)于非 maven 項(xiàng)目我們只要會(huì)設(shè)置 src 即可。
  • 如上圖箭頭所示,被標(biāo)注的目錄會(huì)在右側(cè)有一個(gè)總的概括。值得一提的是 classes 雖然是 Excluded 目錄,但是由于它的特殊性且不可編輯,所以不顯示在這里。
  • 如上圖標(biāo)注 1 所示,如果要去掉目錄的標(biāo)注含義,可以點(diǎn)擊打叉按鈕進(jìn)行刪除。

http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxi-b-eclipse-project-settings-5.jpg" alt="Eclipse 項(xiàng)目配置" />

  • 如上圖標(biāo)注 1 所示,這是一個(gè)單 Module 的項(xiàng)目,Module 的編譯輸出目錄可以跟 Project 的項(xiàng)目輸出目錄一致,都是 WebRoot 下的 classes 目錄。

http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxi-b-eclipse-project-settings-6.jpg" alt="Eclipse 項(xiàng)目配置" />

  • 如上圖紅圈所示,這里顯示項(xiàng)目的所有依賴包,其中紅色表示 IntelliJ IDEA 無法識(shí)別。IntelliJ IDEA 支持一個(gè)一個(gè)導(dǎo)入依賴包,也支持直接導(dǎo)入一個(gè)目錄下的所有依賴包。上圖的這種就是一個(gè)一個(gè)具體化的依賴包。除非你的項(xiàng)目各個(gè)依賴包有存在依賴順序關(guān)系,不然不建議一個(gè)一個(gè)引入,這樣比較麻煩。所以我這里會(huì)先把這些零散的依賴包全部去除掉,然后按目錄來引入。
  • 如上圖標(biāo)注 1 所示,依賴包支持這五種操作。
  • 加號(hào),表示可以引入新依賴包。
  • 減號(hào),表示可以去除對(duì)應(yīng)的依賴包。
  • 向上箭頭,表示依賴包可以向上移動(dòng)位置。依賴包越上面的表示在項(xiàng)目加載的時(shí)候越是優(yōu)先,所以對(duì)于同一個(gè)依賴包,不同版本,依賴順序不同,結(jié)果也可能會(huì)是大不相同的。
  • 向下箭頭,表示依賴包可以向下移動(dòng)位置,原因同上。
  • 筆,表示可以編輯依賴包的名稱和路徑。

http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxi-b-eclipse-project-settings-7.jpg" alt="Eclipse 項(xiàng)目配置" />

  • 如上圖所示,引入依賴包支持 jar 包和目錄,以及已經(jīng)導(dǎo)入項(xiàng)目的 Libraries 中的依賴包。多 Module 的項(xiàng)目還可以依賴其他 Module。

http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxi-b-eclipse-project-settings-8.gif" alt="Eclipse 項(xiàng)目配置" />

  • 由于我們剛剛?cè)サ袅思t圈中的所有依賴包,所以我們現(xiàn)在還需要導(dǎo)入依賴包。在導(dǎo)入之前我們先把項(xiàng)目的 lib 作為一個(gè)總的依賴包放置到項(xiàng)目 Libraries 中。如上圖 Gif 演示,就是把 lib 目錄轉(zhuǎn)換成一個(gè)依賴包。這樣的好處是,當(dāng)我們項(xiàng)目需要添加新依賴包時(shí),我們只要放置在 lib 目錄下即可自動(dòng)被項(xiàng)目引入,原因就是我們這里引的是目錄,而不是一個(gè)一個(gè)依賴包。

http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxi-b-eclipse-project-settings-9.jpg" alt="Eclipse 項(xiàng)目配置" />

  • 如上圖標(biāo)注 1 所示,引入剛剛放置好的 Librarieslib 依賴包。

http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxi-b-eclipse-project-settings-10.gif" alt="Eclipse 項(xiàng)目配置" />

  • 對(duì)于傳統(tǒng)的 Java Web 項(xiàng)目,我們一般還需要指定配置 web.xml 位置。如上圖 Gif 演示,這個(gè)一般在 Facts 中進(jìn)行配置。Facts 可以理解為用于配置項(xiàng)目的框架區(qū),在這里管理項(xiàng)目使用的框架配置文件。這個(gè)是 IntelliJ IDEA 特有的一個(gè)配置點(diǎn)。
  • 除了 web.xml 一般我們要配置外,其他一些框架,即使我們不在這里配置也是不會(huì)影響項(xiàng)目的運(yùn)行的,但是是有缺點(diǎn)的,比如我們項(xiàng)目中一般都是有 Spring 框架的,而 Spring 是有很多配置文件的,如果我們在這里進(jìn)行了配置,那你會(huì)發(fā)現(xiàn) IntelliJ IDEA 編輯區(qū)底部會(huì)多出現(xiàn)幾個(gè) Spring 項(xiàng)目的設(shè)置區(qū),原因就是你告訴了 IntelliJ IDEA,你的項(xiàng)目使用了 Spring 框架,那 IntelliJ IDEA 就會(huì)出現(xiàn)其對(duì)應(yīng)的配置功能給你。Hibernate 等其他框架道理一樣。

http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxi-b-eclipse-project-settings-11.gif" alt="Eclipse 項(xiàng)目配置" />

  • Artifacts 也是 IntelliJ IDEA 特有的一個(gè)概念,我們可以理解這里是配置項(xiàng)目最終輸出結(jié)果的地方。比如 Java Web 項(xiàng)目我們一般必備一個(gè)配置就是要配置成一個(gè) war 包展開的方式,這樣容器才能運(yùn)行該項(xiàng)目。上圖 Gif 演示的就是配置一個(gè) war 包展開的輸出結(jié)構(gòu)。其結(jié)構(gòu)是由于前面的幾項(xiàng)配置決定,所以如果前面的 Module 配置沒有多大問題,這里可以省去一些配置步驟。但是有些時(shí)候我們也是需要做一些修改,比如此項(xiàng)目的輸出目錄默認(rèn)生成的是錯(cuò)誤,我改為了項(xiàng)目中的 webRoot 目錄。
  • Artifacts 配置,等下在配置 Tomcat 的時(shí)候也會(huì)引用到,所以這里需要重點(diǎn)注意下。

Tomcat 配置

http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxi-c-eclipse-project-tomcat-settings-1.gif" alt="Tomcat 配置" />

  • 如上圖 Gif 所示,為項(xiàng)目整體的一個(gè) Tomcat 配置過程,有些需要特別講解的,我們將在下面進(jìn)行分解。

http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxi-c-eclipse-project-tomcat-settings-2.jpg" alt="Tomcat 配置" />

  • 如上圖彈出層所示,IntelliJ IDEA 支持目前市場上主流的應(yīng)用容器,所以基本上一個(gè) IntelliJ IDEA 足夠我們開發(fā)常見的項(xiàng)目。但是這里有一點(diǎn)需要提醒的,IntelliJ IDEA 支持這些容器但是不等同于幫我們自帶了這些容器的文件,所以上面的 Gif 演示中,原本我只有引入 Tomcat 7,但是為了這個(gè)項(xiàng)目我又引入了 Tomcat 6,而引入的 Tomcat 6 我只是指定了其存放的目錄位置 IntelliJ IDEA 自動(dòng)會(huì)識(shí)別到。

http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxi-c-eclipse-project-tomcat-settings-3.jpg" alt="Tomcat 配置" />

  • 如上圖標(biāo)注 1 所示,我們可以隨時(shí)為項(xiàng)目切換不同的容器。
  • 如上圖標(biāo)注 2 所示,我們可以指定給運(yùn)行的容器設(shè)置 VM 參數(shù)。
  • 如上圖標(biāo)注 3 所示,這分別是在兩種命令下的觸發(fā)的事件。這個(gè)是 IntelliJ IDEA 特有的,也是重點(diǎn)。
  • On Update action 當(dāng)我們按 Ctrl + F10 進(jìn)行容器更新的時(shí)候,可以根據(jù)我們配置的這個(gè)事件內(nèi)容進(jìn)行容器更新。其中我選擇的 Update classes and resources 事件是最常用的,表示我們在按 Ctrl + F10 進(jìn)行容器更新的時(shí)候,我們觸發(fā)更新編譯的類和資源文件到容器中。在 Debug 模式下,這個(gè)也就是所謂的 HotSwap。只是這種熱部署沒有 JRebel 插件那樣好用。
  • On frame deactivation 當(dāng)我們切換 IntelliJ IDEA 到瀏覽器的時(shí)候進(jìn)行指定事件更新,這個(gè)一般是因?yàn)?Web 開發(fā)的時(shí)候,我們需要經(jīng)常在 IntelliJ IDEA 和各個(gè)瀏覽器之間來回切換測試,所以才有了這種需求。IntelliJ IDEA 是為了幫我們在做這種無聊切換的時(shí)候做一些指定事情。當(dāng)然了,如果切換過于頻繁,這個(gè)功能還是很耗資源的,所以我設(shè)置的是 Do nothing 表示切換的時(shí)候什么都不做。
  • 如上圖標(biāo)注 4 所示,默認(rèn) Tomcat 的 HTTP 端口是 8080,如果你需要改其端口可以在這里設(shè)置。
  • 如上圖標(biāo)注 5 所示,這個(gè)知識(shí)點(diǎn)在前面的文章已經(jīng)有講過了。這里表示在 Tomcat 容器運(yùn)行前做什么事情,這里分別了:Make 和 Build Artifacts 操作。如上面 Gif 演示,這里的 Build Artifacts 是我們在 Deployment 選項(xiàng)卡中添加了 Artifact 之后自動(dòng)出現(xiàn)的。

Tomcat 啟動(dòng)

  • 通過上面的配置,IntelliJ IDEA 環(huán)境配置算是配置好了,現(xiàn)在配置下該項(xiàng)目相關(guān)的。
  • 打開你的 Mysql,執(zhí)行下面腳本,創(chuàng)建一個(gè)新的數(shù)據(jù)庫和用戶:
CREATE DATABASE `jsprun` CHARACTER SET utf8;
CREATE USER 'jsprun'@'localhost' IDENTIFIED BY 'jsprun';
GRANT ALL PRIVILEGES ON jsprun.* TO 'jsprun'@'localhost';
FLUSH PRIVILEGES;
  • 切換到上面新建的 jsprun 數(shù)據(jù)庫中執(zhí)行項(xiàng)目中這個(gè)數(shù)據(jù)腳本,文件位置:JspRun\WebRoot\install\jsprun_zh_CN.sql。
  • 修改 JspRun\WebRoot\config.properties 文件中的幾個(gè)屬性為下面內(nèi)容:
  • dbuser = jsprun
  • dbpw = jsprun

http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxi-d-eclipse-project-tomcat-run-1.gif" alt="Tomcat 啟動(dòng)" />

  • 如上圖 Gif 演示,我們?nèi)鄙僖?Tomcat 的依賴包。

http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxi-d-eclipse-project-tomcat-run-2.gif" alt="Tomcat 啟動(dòng)" />

  • 如上圖 Gif 演示,我們引入 Tomcat 的依賴包之后,可以運(yùn)行該項(xiàng)目。

http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxi-d-eclipse-project-tomcat-run-3.jpg" alt="Tomcat 啟動(dòng)" />

  • 如上圖所示,為最終項(xiàng)目運(yùn)行效果圖。

Tomcat 停止

http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxi-e-eclipse-project-tomcat-stop-1.gif" alt="Tomcat 停止" />

  • 如上圖所示,停止按鈕是要按兩次,第一按完出現(xiàn)一個(gè)骷髏頭并不是停止,需要再點(diǎn)擊一次。
  • 有時(shí)候即使點(diǎn)了兩次,Tomcat 容器也不一定能完全停掉,這時(shí)候很容易出現(xiàn)端口被占用的操作,這時(shí)候你需要打開系統(tǒng)的資源管理器,手動(dòng) kill 系統(tǒng)上所有的 java 進(jìn)程。

輸出 war 壓縮包

http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/images/xxi-e-eclipse-project-output-war-1.gif" alt="Tomcat 輸出 war 包" />

  • 如上圖 Gif 所示,除了在 Artifacts 中需要配置,還需要在容器中也跟著配置,這樣在啟動(dòng)容器的時(shí)候才會(huì)輸出一個(gè) war 壓縮包。
  • 通過配置,我們也知道 war 的壓縮包本質(zhì)是根據(jù)展開的 war 輸出包進(jìn)行壓縮的得來。