保姆級 tomcat 快速入門

img


背景介紹

Apache Tomcat 是Java Servlet、JavaServer Pages (JSP)、Java表達式語言和Java的WebSocket技術的一個開源實現 ,通常我們將Tomcat稱爲Web容器或者Servlet容器 。

tomcat各版本和相應規範的映射關係:


img


下載地址

https://tomcat.apache.org/download-90.cgi

下載到本地並解壓:


img


進入主目錄:


img


tomcat目錄介紹

bin

啓動,關閉和其他腳本。這些 .sh文件(對於Unix系統)是這些.bat文件的功能副本(對於Windows系統)。由於Win32命令行缺少某些功能,因此此處包含一些其他文件。

比如說:windows下啓動tomcat用的是startup.bat,另外Linux環境中使用的是startup.sh。對應還有相應的shutdown關閉腳本。

conf

tomcat的配置文件和相關的DTD。這裏最重要的文件是server.xml。它是容器的主要配置文件。

catalina.policy:tomcat:安全策略文件,控制JVM相關權限,具體可以參考java.security.Permission。

catalina.properties:tomcat Catalina 行爲控制配置文件,比如:Common ClassLoader。

logging.properties:tomcat日誌配置文件。裏面的日誌採用的是JDK Logging。

server.xml:tomcat server配置文件(對於我開發人員來說是非常重要)。

context.xml:全局context配置文件,監視並加載資源文件,當監視的文件發生發生變化時,自動加載 。

tomcat-user.xml:tomcat角色配置文件。

web.xml:Servlet標準的web.xml部署文件,tomcat默認實現部分配置 入內:

  • org.apache.catalina.servlets.DefaultServlet。

  • org.apache.jasper.servlet.JspServlet

logs

日誌文件默認位於此處。

localhost有用,當你們的tomcat啓動不了的時候,多看這個文件。比如:

  • NoClassDefFoundError

  • ClassNotFoundException

access最沒用。

catalina.{date} 主要是控制檯輸出,全部日誌都在這裏面。

webapps

這是您的webapp所在的位置。其實這裏面這幾個都是一個項目。

簡化web部署的方式。在線上環境中我們的應用是不會放在這裏的。最好的辦法就是外置。

lib

tomcat存放共用的類庫。比如:

  • ecj-4.17.jar: eclipse Java編譯器

  • jasper.jar:JSP編譯器。

work

存放tomcat運行時編譯後的文件,比如JSP編譯後的文件 。

temp

存放運行時產生的臨時文件。

啓動tomcat

啓動tomcat

我們在windows下的就直接啓動bin目錄下的startup.bat,對應Linux環境中我們使用的是startup.sh。

雙擊就能啓動了。控制檯會輸8080端口,然後我們訪問:

http://localhost:8080/

頁面展示:


img


這就代表着我們的tomcat啓動成功了。

此時,http://localhost:8080/請求到的是ROOT目錄。

比如:我們還可以http://localhost:8080/manager

Servlet項目部署到tomcat中

創建web項目

使用maven創建web項目,既然說tomcat是Servlet容器,那麼在項目中創建一個Servlet類,然後打成war包,拷貝到tomcat中部署。

項目結構如下:


img


添加依賴

    <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/maven-v4_0_0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <groupId>com.tian.maven</groupId>
     <artifactId>my-web-maven</artifactId>
     <packaging>war</packaging>
     <version>1.0-SNAPSHOT</version>
     <name>my-web-maven Maven Webapp</name>
     <url>http://maven.apache.org</url>
     <dependencies>
       <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>3.8.1</version>
         <scope>test</scope>
       </dependency>
       <dependency>
         <groupId>javax.servlet</groupId>
         <artifactId>javax.servlet-api</artifactId>
         <version>3.1.0</version>
       </dependency>
     </dependencies>
     <build>
       <finalName>my-web-maven</finalName>
     </build>
   </project>
























創建DemoServlet

    package com.tian.maven;

   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;

   @WebServlet(urlPatterns = "/demo")
   public class DemoServlet extends HttpServlet {
       @Override
       protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
           String msg = req.getParameter("message");
           String contextPath = req.getServletContext().getContextPath();
           System.out.println("contextPath=" + contextPath);
           resp.getWriter().println(msg);
       }
   }

















web.xml什麼都沒有,僅僅就是爲了打包。

    <!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>
     <display-name>Archetype Created Web Application</display-name>
   </web-app>





index.jsp找那個也沒什麼內容:

    <html>
   <body>
   <h2>Hello World!</h2>
   </body>
   </html>



使用mvn命令打成war包。


img


把打成的war包拷貝(其實拷貝my-web-maven文件夾也是一樣的)到tomcat中webapps目錄下:


img


然後到bin目錄下,雙擊


img


項目運行起來後,訪問 http://localhost:8080/


img


證明我們的項目已經啓動成功了。

接下來我們訪問我們寫的Servlet:

http://localhost:8080/demo?message=hello


img


報錯,HTTP狀態 404 - 未找到;

注意:這裏訪問的時候,我們需要把項目名稱當做contextPath,即訪問方式應該是:

http://localhost:8080/my-web-maven/demo?message=hello

頁面上輸出

hello

輕鬆搞定,這樣我們的項目就成功的部署到tomcat中。

IDEA中的項目部署到tomcat中

創建一個servlet項目,項目名稱my-servlet。


img



img


新建一個類MyServlet


img


進入我們剛剛安裝的tomcat目錄,進入到lib目錄中,選中servlet-api.jar。


img



img



img


點擊ok。


img


點擊Apply,然後點擊OK。

修改MyServlet內容:

    package com.tian.servlet;

   import javax.servlet.*;
   import java.io.IOException;
   import java.io.PrintWriter;

   //實現接口Servlet,必須重寫下面的這些方法
   public class MyServlet implements Servlet {

       private transient ServletConfig servletConfig;
       @Override
       public void init(ServletConfig servletConfig) throws ServletException {
           this.servletConfig = servletConfig;
       }

       @Override
       public ServletConfig getServletConfig() {
           return servletConfig;
       }

       @Override
       public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
           String servletName = servletConfig.getServletName();
           //網頁響應類型,瀏覽器將其渲染爲HTML格式
           response.setContentType("text/html");
           PrintWriter writer = response.getWriter();
           writer.println("<html><head></head>" + "<body> Hello this is  " + servletName + "</body></html>");
       }

       @Override
       public String getServletInfo() {
           return "my first Servlet";
       }

       @Override
       public void destroy() {
       }
   }




































修改web.xml文件內容:

    <?xml version="1.0" encoding="UTF-8"?>     <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"              xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"              version="3.1">         <servlet>             <servlet-name>myServlet</servlet-name>             <servlet-class>com.tian.servlet.MyServlet</servlet-class>         </servlet>         <servlet-mapping>             <servlet-name>myServlet</servlet-name>             <url-pattern>/demo</url-pattern>         </servlet-mapping>     </web-app>

另外我們把index.jsp內容修改一下,主要是爲了更好的演示:

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>     <html>     <body>     <h1> hello world </h1>     </body>     </html>

IDEA集成tomcat

在我們的IDEA中添加我們安裝的tomcat:


img



img


來到tomcat配置 的界面:


img


配置tomcat:


img


進入安裝目錄:


img


點擊OK,


img


然後進入deployment欄目:


img


添加我們創建的servlet項目:


img


自動就添加了我們的項目:


img


然後點擊Apply,再點擊OK。

IDEA集成tomcat,以及把我們項目給關聯起來了。下面我們就來運行一下:


img


啓動tomcat

點擊綠色三角:


img


證明我們的項目在tomcat中已經啓動成功。


img


訪問我們的servlet

此時,我們就可以來訪問我們的servlet了。

訪問:http://localhost:8080/ 頁面顯示就是我們前面修改的index.jsp的內容。

再訪問我們自己寫的Servlet:

http://localhost:8080/demo


img


成功的把我們的內容給輸出來了。好了本文內容就這些,簡單式tomcat入門。

總結

tomcat是什麼,tomcat如何安裝,如何啓動tomcat,如何部署我們自己的Servlet項目,我們在IDEA如何集成tomcat以及如何啓動tomcat。

人只要不失去方向,就不會失去自己



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章