<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 嵌入式 Tomcat > 原文: [https://zetcode.com/web/embeddedtomcat/](https://zetcode.com/web/embeddedtomcat/) 在本教程中,我們將展示如何與嵌入式 Tomcat 服務器一起使用。 Tomcat 可以在嵌入式模式下運行; 這意味著無需構建 WAR 文件并將其部署在獨立的 Tomcat 服務器中。 本教程中的示例是使用 Maven 構建的。 ## Tomcat Apache Tomcat 是 Java Servlet,JavaServer Pages,Java Expression Language 和 Java WebSocket 技術的開源實現。 Apache Maven 是一個軟件項目管理和理解工具。 該項目在名為`pom.xml`的 XML 文件中描述。 它包含對其他外部模塊和組件的項目依賴關系,構建順序,目錄和所需的插件。 ## 創建一個 servlet 在下面的示例中,我們創建一個帶有嵌入式 Tomcat 服務器的命令行 Java 應用。 該應用附加一個簡單的 servlet。 ![Project structure](https://img.kancloud.cn/63/cc/63cc467ae9060d78a40d8cbf4a0aef55_315x235.jpg) 圖:項目結構 該圖顯示了 NetBeans 中的項目結構。 注意,我們使用的是 Java Maven 控制臺應用,而不是 Maven Web 應用。 `pom.xml` ```java <?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>com.zetcode</groupId> <artifactId>EmbeddedTomcatEx</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <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> <tomcat.version>9.0.0.M6</tomcat.version> </properties> <dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-core</artifactId> <version>${tomcat.version}</version> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-logging-juli</artifactId> <version>${tomcat.version}</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>appassembler-maven-plugin</artifactId> <version>1.1.1</version> <configuration> <assembleDirectory>target</assembleDirectory> <programs> <program> <mainClass>com.zetcode.embedded.EmbeddedTomcatEx</mainClass> <name>webapp</name> </program> </programs> </configuration> <executions> <execution> <phase>package</phase> <goals> <goal>assemble</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project> ``` Maven `pom.xml`包含嵌入式 Tomcat 服務器和用于構建應用的匯編程序插件的依賴項。 由于我們只有 Servlet,因此 JSP 容器的依賴關系未包含在此應用中。 `EmbeddedTomcatEx.java` ```java package com.zetcode.embedded; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.io.Writer; import org.apache.catalina.Context; import org.apache.catalina.LifecycleException; import org.apache.catalina.startup.Tomcat; public class EmbeddedTomcatEx { public static void main(String[] args) throws LifecycleException, InterruptedException, ServletException { Tomcat tomcat = new Tomcat(); tomcat.setPort(8082); Context ctx = tomcat.addContext("/", new File(".").getAbsolutePath()); Tomcat.addServlet(ctx, "Embedded", new HttpServlet() { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { Writer w = resp.getWriter(); w.write("Embedded Tomcat servlet.\n"); w.flush(); w.close(); } }); ctx.addServletMapping("/*", "Embedded"); tomcat.start(); tomcat.getServer().await(); } } ``` `EmbeddedTomcatEx`是 Java 控制臺應用,其中包括嵌入式 Tomcat 服務器。 ```java Tomcat tomcat = new Tomcat(); tomcat.setPort(8082); ``` Tomcat 在端口 8082 上啟動。默認端口為 8080;默認端口為 8080。 NetBeans 將 8084 用于其內置的 Tomcat 服務器。 我們選擇了另一個端口,以免發生沖突。 ```java Context ctx = tomcat.addContext("/", new File(".").getAbsolutePath()); ``` 每個應用都映射到上下文。 使用`addContext()`方法,我們創建了一個不支持 JSP 文件并且沒有`web.xml`文件的應用。 我們使用根上下文路徑和當前工作目錄作為文檔庫。 ```java Tomcat.addServlet(ctx, "Embedded", new HttpServlet() { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { Writer w = resp.getWriter(); w.write("Embedded Tomcat servlet.\n"); w.flush(); w.close(); } }); ``` 通過`addServlet()`方法添加了一個新的 servlet。 該 servlet 僅以一些 ASCII 文本作為響應。 ```java ctx.addServletMapping("/*", "Embedded"); ``` servlet 映射控制如何訪問名為 Embedded 的 servlet。 對于我們的示例,所有 URL 最終都會調用我們的 servlet。 ```java tomcat.start(); tomcat.getServer().await(); ``` Tomcat 服務器已啟動。 ```java $ curl localhost:8082/ Embedded Tomcat servlet. ``` 我們運行該應用并使用`curl`工具對其進行測試。 ## JSP 文件 在第二個示例中,我們使用嵌入式 Tomcat 服務器來提供 JSP 文件。 `pom.xml` ```java <?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>com.zetcode</groupId> <artifactId>EmbeddedTomcatEx2</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <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> <tomcat.version>9.0.0.M6</tomcat.version> </properties> <dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-core</artifactId> <version>${tomcat.version}</version> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-logging-juli</artifactId> <version>${tomcat.version}</version> </dependency> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-jasper</artifactId> <version>${tomcat.version}</version> </dependency> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-jasper-el</artifactId> <version>${tomcat.version}</version> </dependency> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-jsp-api</artifactId> <version>${tomcat.version}</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>appassembler-maven-plugin</artifactId> <version>1.1.1</version> <configuration> <assembleDirectory>target</assembleDirectory> <programs> <program> <mainClass>com.zetcode.embedded.EmbeddedTomcatEx2</mainClass> <name>webapp</name> </program> </programs> </configuration> <executions> <execution> <phase>package</phase> <goals> <goal>assemble</goal> </goals> </execution> </executions> </plugin> </plugins> </build> <name>EmbeddedTomcatEx2</name> </project> ``` 在此`pom.xml`文件中,我們還包括嵌入式 Tomcat JSP 容器的依賴項:`tomcat-jasper`,`tomcat-jasper-el`和`tomcat-jsp-api`。 `index.jsp` ```java <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <title>JSP file</title> <meta charset="UTF-8"> </head> <body> <p> This is a simple JSP file. </p> </body> </html> ``` 這是嵌入式 Tomcat 服務器提供的簡單 JSP 文件。 `EmbeddedTomcatEx2.java` ```java package com.zetcode.embedded; import javax.servlet.ServletException; import java.io.File; import org.apache.catalina.LifecycleException; import org.apache.catalina.startup.Tomcat; public class EmbeddedTomcatEx2 { public static void main(String[] args) throws LifecycleException, InterruptedException, ServletException { String docBase = "src/main/webapp/"; Tomcat tomcat = new Tomcat(); tomcat.setPort(8082); tomcat.addWebapp("/", new File(docBase).getAbsolutePath()); tomcat.start(); tomcat.getServer().await(); } } ``` 該應用提供一個 JSP 文件。 該文件位于`src/main/webapp`子目錄中。 ```java tomcat.addWebapp("/", new File(docBase).getAbsolutePath()); ``` 這次我們使用`addWebapp()`將應用添加到 Tomcat 服務器。 ```java $ curl localhost:8082/ <!DOCTYPE html> <html> <head> <title>JSP file</title> <meta charset="UTF-8"> </head> <body> <p> This is a simple JSP file. </p> </body> </html> ``` 當我們訪問應用時,我們得到了這個。 這是嵌入式 Tomcat 教程。 使用嵌入式 Tomcat,我們提供了一個 servlet 和一個 JSP 文件。 我們已經使用了 Apache Tomcat,Maven 和 NetBeans。 您可能還需要查看一些相關的教程:[嵌入式 Jetty 的 Jersey 應用](/articles/jerseyembeddedjetty/), [Jetty 教程](/java/jetty/), [Java 教程](/lang/java/)或 [SQL 查詢標記教程](/java/sqlquerytag/)。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看