2017-05-11
JAVASCRIPT

Tomcat + Servlet + IntelliJ

社群版 IntelliJ 也可以整合 Tomcat 與 Servlet 開發環境。

IntelliJ with Tomcat

我自己在剛開始想要使用 IntelliJ 練習 Java Servlet 開發的時候,一直有一種不得奇門而入的感覺。 這邊就來分享一下自己最終研究出來的方法吧!

先把 Tomcat 核心下載好

建立專案

這次的專案我們會用 Maven 管理專案相依性,寫一點點的 Servlet ,不過並不是這篇的教學重點,所以就先跟著做就好,不用太苛求說一定要搞懂,之後跟著專案慢慢搞懂就好!

create new project 建立新專案

project setting 選 Maven 來建立新專案

select maven


Smart Tomcat Plugin

由於我們用的 Community 版本的 IntelliJ ,所以預設是沒有裝 Tomcat 讓我們用的。我們必須要依賴一個叫做 Smart Tomcat 的外掛。

安裝 IntelliJ 的外掛,可以在上方的 Tab 選單中點 IntelliJ IDEA > Preference > Plugins 找到後搜尋 "Smart Tomcat"

install smart tomcat

Servlet - Hello World

Maven pom.xml - 相關設定

<!-- pom.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>tomcat-hello</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>

    <name>tomcat-hello Maven Webapp</name>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

</project>

HelloWorld.java

package com.example;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet(
        name = "HelloWorld",
        urlPatterns = {"/helloworld"}, // 等等要把這串敲在網頁根目錄之後
        loadOnStartup = 1
)
public class HelloWorld extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        PrintWriter writer = resp.getWriter();
        writer.println("<!DOCTYPE html>");
        writer.println("<html>");
        writer.println("<head>");
        writer.println("<title>Hello! Servlet!</title>");
        writer.println("</head>");
        writer.println("<body>");
        writer.println("<h1>Hello! Servlet!</h1>");
        writer.println("</body>");
        writer.println("</html>");
    }
}

專案概觀: project overview

最後!在設定好我們剛剛安裝的 Smart Tomcat 就可以了! add smart tomcat

smart tomcat configuration

add smart tomcat server

select tomcat server 到之前從官網抓下來的 tomcat package 目錄

select tomcat server ok

server config 設定完後就可以按 OK 了

select custom tomcat

view service 跑起來之後...

not found 根目錄沒有東西是很正常的,因為我們程式並沒有處理根目錄的內容。

Servlet hello world 把剛剛 Java 程式的 urlPatterns 內容填進去


總算寫完這些這些專案開始前的準備了... 這讓我想起來當初剛進後端,為了把公司要求的工作環境跑起來花了我將近一個禮拜的時間哪... 現在為了文章寫一次的感覺還是一樣,繁瑣,真是繁瑣! 不過也別看這個好像一氣呵成呀~ 當初也是讓我看了一整個年假才稍稍有點搞懂...

之後的文章不會再這樣用一大堆圖片了混分了, 之後的都會是一堆程式碼,跟一堆廢話...(?