日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

maven项目 jetty_如何使用Java,Maven,Jetty创建Web应用程序项目

發布時間:2023/12/3 java 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 maven项目 jetty_如何使用Java,Maven,Jetty创建Web应用程序项目 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

maven項目 jetty

在本文中,我們使用Maven Archetype插件創建一個簡單的Web應用程序。 我們將在一個名為Jetty的Servlet容器中運行此Web應用程序,添加一些依賴項,編寫簡單的Servlet,并生成WAR文件。 在本文的結尾,您還可以在Tomcat中部署該服務。

系統要求

  • Java SE開發套件8
  • Maven 3.3.3

逐步創建Web服務

本節說明如何從EMPTY文件夾創建此簡單的Web項目。

創建簡單的Web項目

創建您的Web應用程序

$ mvn archetype:generate -DgroupId=com.pengyifan.simpleweb \-DartifactId=simple-webapp \-Dpackage=com.pengyifan.simpleweb \-DarchetypeArtifactId=maven-archetype-webapp \-Dversion=1.0-SNAPSHOT \-DinteractiveMode=false... [INFO] BUILD SUCCESS

Maven Archetype插件創建項目后,將目錄更改為simple-webapp目錄,并查看pom.xml 。 您應該看到

<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.pengyifan.simpleweb</groupId><artifactId>simple-webapp</artifactId><packaging>war</packaging><version>1.0-SNAPSHOT</version><name>simple-webapp 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></dependencies><build><finalName>simple-webapp</finalName></build> </project>

請注意,包裝元素包含值war 。 這種打包類型是配置Maven以在WAR文件中生成Web應用程序存檔的方式。 一個帶有war包裝的項目將在target目錄中創建一個WAR文件。 因此,該文件的默認名稱為${artifactId}-${version}.war 。 在此Maven項目中,默認WAR將在target/simple-webapp-1.0-SNAPSHOT.war 。 此外,我們通過在該項目的構建配置中添加finalName元素來定制生成的WAR文件的名稱。 在finalName為simple-webapp ,打包階段在target/simple-webapp.war生成一個WAR文件。

接下來,您需要配置

  • 適用于目標Java版本的Maven Compiler插件(本文中的JDK 8)
  • Java Servlet依賴性。
  • Maven碼頭插件。
  • pom.xml應該看起來像這樣。 您也可以使用下載的軟件包中的pom.xml覆蓋它。

    <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.pengyifan.simpleweb</groupId><artifactId>simple-webapp</artifactId><packaging>war</packaging><version>1.0-SNAPSHOT</version><name>simple-webapp 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>servlet-api</artifactId><version>2.4</version><scope>provided</scope></dependency></dependencies><build><finalName>simple-webapp</finalName><plugins><plugin><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.8</source><target>1.8</target></configuration></plugin><plugin><groupId>org.mortbay.jetty</groupId><artifactId>maven-jetty-plugin</artifactId><version>6.1.26</version><configuration><connectors><connector implementation="org.mortbay.jetty.nio.SelectChannelConnector"><port>80</port></connector></connectors></configuration></plugin></plugins></build> </project>

    現在,您可以調用Jetty插件的Run目標,以在Jetty Servlet容器中啟動Web應用程序。 跑:

    $ mvn jetty:run

    注意, mvn jetty:run將繼續運行Jetty servlet容器,直到您使用CTRL-C停止該過程為止。

    Maven啟動Jetty Servlet容器后,在Web瀏覽器中加載URL http://localhost/simple-webapp/index.jsp 。 由Archetype生成的簡單index.jsp很簡單; 它包含帶有文本“ Hello World!”的第二級標題。 Maven希望將Web應用程序的文檔根目錄存儲在src/main/webapp 。 在此目錄中,您可以找到index.jsp文件。

    <h2>Hello World! </h2>

    在src/main/webapp/WEB-INF ,我們將找到最小的Web應用程序web.xml ,如以下示例所示:

    <web-app><display-name>Archetype Created Web Application</display-name> </web-app>

    添加一個簡單的Servlet

    僅具有一個頁面且沒有配置的servlet的Web應用程序幾乎是無用的。 讓我們向該應用程序添加一個簡單的servlet,并對pom.xml和web.xml進行一些更改以支持此更改。 首先,我們需要在src/main/java下創建一個名為com.pengyifan.web的新包:

    $ mkdir -p src/main/java/com/pengyifan/web $ cd src/main/java/com/pengyifan/web

    創建此程序包后,轉到src/main/java/com/pengyifan/web directory然后創建一個名為SimpleServlet的類:

    package com.pengyifan.web;import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter;public class SimpleServlet extends HttpServlet {@Overridepublic void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doPost(request, response);}@Overridepublic void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {PrintWriter out = response.getWriter();out.println("SimpleServlet Executed");out.flush();out.close();} }

    我們的SimpleServlet類就是這樣:一個servlet,它向響應的Writer打印一條簡單消息。 現在,我們需要將此servlet添加到您的Web應用程序并將其映射到請求路徑。 您可以在src/main/webapp/WEB-INF更改web.xml 。

    <web-app><display-name>Archetype Created Web Application</display-name><servlet><servlet-name>simple</servlet-name><servlet-class>com.pengyifan.web.SimpleServlet</servlet-class></servlet><servlet-mapping><servlet-name>simple</servlet-name><url-pattern>/simple</url-pattern></servlet-mapping> </web-app>

    一切就緒,可以測試該servlet。 跑:

    $ mvn clean install ... $ mvn jetty:run [INFO] [jetty:run] ... [INFO] Started Jetty Server

    此時,您應該能夠檢索SimpleServlet的輸出。 在Web瀏覽器中,您可以加載http:// localhost:8080 / simple-webapp / simple,并獲取SimpleServlet Executed 。

    更改端口

    在源代碼包中,我們使用端口80 。 在此任務中,我們建議您在端口80上偵聽RESTful API。 但是我們仍然可以收聽其他端口。 為此,請在pom.xml文件中找到以下幾行,然后在<port>更改數字。

    [...] <plugin><groupId>org.mortbay.jetty</groupId><artifactId>maven-jetty-plugin</artifactId><version>6.1.26</version><configuration><connectors><connector implementation="org.mortbay.jetty.nio.SelectChannelConnector"><port>80</port></connector></connectors></configuration> </plugin> [...]

    出于安全原因,我們可能需要啟用服務器與客戶端之間的SSL通信。 因此,當我們運行mvn jetty:run我們必須能夠使用https協議。 為了進行開發,我們可以創建自己的安全證書并配置插件以使用它。

    要創建開發證書,我們運行以下命令:

    keytool -genkey -alias jetty6 -keyalg RSA \-keystore target/jetty-ssl.keystore \-storepass jetty6 -keypass jetty6 \-dname "CN=your name or domain"

    輸入-dname "CN="選項的名稱或域。 在Maven pom.xml配置插件時,我們再次需要密鑰庫和密鑰密碼。 以下代碼片段顯示了Jetty插件如何支持SSL:

    <plugin><groupId>org.mortbay.jetty</groupId><artifactId>maven-jetty-plugin</artifactId><configuration><connectors><connector implementation="org.mortbay.jetty.nio.SelectChannelConnector"><port>8080</port></connector><connector implementation="org.mortbay.jetty.security.SslSocketConnector"><port>8081</port><maxIdleTime>60000</maxIdleTime><keystore>${project.build.directory}/jetty-ssl.keystore</keystore><password>jetty6</password><keyPassword>jetty6</keyPassword></connector></connectors></configuration> </plugin>

    在connectors元素中,我們定義了用于在端口8080上監聽http和在端口8081上監聽https的連接器。 在<keystore> ,我們引用使用keytool創建的密鑰庫文件。 <password>和<keyPassword>定義密碼值。

    要測試此配置,我們可以調用mvn jetty:run并打開一個地址為https://localhost:8081/simple-webapp/的Web瀏覽器。 我們一定不要忘記使用https作為協議。

    我們使用Java開發工具包中的keytool命令生成了密鑰庫。 但是有一個Maven插件可以做同樣的事情,但是我們可以在POM中定義keytool的所有參數。 當我們運行mvn keytool:generateKeyPair ,將mvn keytool:generateKeyPair密鑰庫,并使用mvn keytool:clean可以再次刪除密鑰庫。 如果要將密鑰庫的創建附加到Maven生成資源階段,則必須首先確保我們調用keytool:clean否則我們會從keytool中得到一個錯誤,指出指定的別名已經存在。 因此,我們可以將以下內容添加到我們的POM中:

    <plugin><groupId>org.codehaus.mojo</groupId><artifactId>keytool-maven-plugin</artifactId><executions><execution><phase>generate-resources</phase><id>clean</id><goals><goal>clean</goal></goals></execution><execution><phase>generate-resources</phase><id>generateKeyPair</id><goals><goal>generateKeyPair</goal></goals></execution></executions><configuration><keystore>${project.build.directory}/jetty-ssl.keystore</keystore><dname>CN=BioCreative, OU=NLM, O=NIH, L=Bethesda, ST=DC</dname><keypass>jetty6</keypass><storepass>jetty6</storepass><alias>jetty6</alias><keyalg>RSA</keyalg></configuration> </plugin>

    現在我們可以調用mvn jetty:run ,并且keyty由Jetty插件自動生成和使用。

    配置Tomcat

    Tomcat身份驗證

    要把WAR文件部署到Tomcat中,要比Jetty困難一點。 首先,我們需要添加一個具有manager-gui和manager-script角色的用戶。 在%TOMCAT_PATH%/conf/tomcat-users.xml

    <tomcat-users><role rolename="manager-gui"/><role rolename="manager-script"/><user username="admin" password="password" roles="manager-gui,manager-script" /> </tomcat-users>

    Maven認證

    在Maven設置文件%MAVEN_PATH%/conf/settings.xml ,在Tomcat用戶上方添加,以后Maven將使用該用戶登錄Tomcat服務器。

    <settings ...><servers><server><id>TomcatServer</id><username>admin</username><password>password</password></server></servers> </settings>

    Tomcat Maven插件

    在pom.xml聲明一個Maven Tomcat插件

    <plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><configuration><url>http://localhost:8080/</url><server>TomcatServer</server><path>/biocreative</path></configuration> </plugin>

    在部署過程中,它告訴Maven使用http:// localhost:8080 /在路徑/biocreative WAR文件部署到Tomcat服務器,并使用“ TomcatServer”(在settings.xml )用戶名和密碼進行身份驗證。

    部署到Tomcat

    在Tomcat上操作WAR文件的命令。

    • mvn tomcat7:部署
    • mvn tomcat7:取消部署
    • mvn tomcat7:重新部署

    例如,

    mvn tomcat7:deploy

    Tomcat 6示例

    如果你使用Tomcat 6,更改插件artifactId中pom.xml到tomcat6-maven-plugin 。 推薦行可能是

    • mvn tomcat6:部署
    • mvn tomcat6:取消部署
    • mvn tomcat6:重新部署

    翻譯自: https://www.javacodegeeks.com/2015/08/how-to-create-a-web-application-project-with-java-maven-jetty.html

    maven項目 jetty

    總結

    以上是生活随笔為你收集整理的maven项目 jetty_如何使用Java,Maven,Jetty创建Web应用程序项目的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。