2017/3/4

在Tomcat部署Servlet

一、創造Servlet程式,檔名HelloWorld.java
// Filename : HelloWorld.java
// Description : This servlet merely says hello!
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class HelloWorld extends HttpServlet {

        public void doGet ( HttpServletRequest request, HttpServletResponse response )
        throws ServletException, IOException    {

                response.setContentType("text/html");
                PrintWriter out = response.getWriter();

                out.println("<html>");
                out.println("<head><title>Hello, Cruel World!</title></head>");
                out.println("<body>");
                out.println("<h1>Hello, Cruel World !</h1>");
                out.println("This is my first servlet.");
                out.println("</body>");
        }// end doGet
}///:~



二、編譯HelloWorld.java
我把HelloWorld.java放在桌面,先用cd指令至它的路徑
$ cd /Users/xanxus/Desktop
$ javac HelloWorld.java -classpath /Users/xanxus/apache-tomcat-8.5.11/lib/servlet-api.jar
因為編譯Servlet程式需用到servlet-api.jar這個檔,所以-classpath需指到此jar所在位置,編譯完的class檔會跟HelloWorld.java同目錄

三、創造標準的目錄結構
找到Tomcat底下的webapps資料夾,分別創造以下目錄:
webapps/MyFirst
webapps/MyFirst/WEB-INF
webapps/MyFirst/WEB-INF/classes
webapps/MyFirst/WEB-INF/lib
webapps/MyFirst/WEB-INF/web.xml
web.xml內容如下:
<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

<servlet>
        <servlet-name>HelloWorld</servlet-name>
        <servlet-class>HelloWorld</servlet-class>
</servlet>

<servlet-mapping>
        <servlet-name>HelloWorld</servlet-name>
        <url-pattern>/HelloWorld</url-pattern>
</servlet-mapping>

</web-app>
再把剛剛編譯完的HelloWorld.class放到webapps/MyFirst/WEB-INF/classes底下

四、啟動Tomcat
$ cd /Users/xanxus/apache-tomcat-8.5.11/bin
$ ./catalina.sh start

打開瀏覽器,網址打http://127.0.0.1:8080/MyFirst/HelloWorld


這是最簡單手動部署Servlet的方式

補充:
如果class檔是在數個樹狀目錄下,那web.xml的<servlet-class>如何改?
假設HelloWorld.class在apache-tomcat-8.5.11/webapps/Ydd/WEB-INF/classes/cc/jxanxus/HelloWorld.class 這種目錄

那首先我的HelloWorld.java的package 要這樣寫:
package cc.jxanxus;
並且web.xml的<servlet-class>要改成:
<servlet-class>cc.jxanxus.HelloWorld</servlet-class>
因為如果設定的路徑不對,可是抓不到檔案的,所以這很重要。

補充:
下面加個-d . 指令可以幫你產生套件的目錄結構,就不用自己慢慢建資料夾了
javac *.java -classpath /Users/xanxus/apache-tomcat-8.5.11/lib/servlet-api.jar -d .

以上是在macOS Sierra下作業

參考:
Tomcat官方部署http://bit.ly/2mYkidg

沒有留言:

張貼留言