北京教育学会网站建设,精品一卡2卡三卡4卡分类,牡丹江市广告公司,国外网站 工信部备案在本文中#xff0c;我们使用Maven Archetype插件创建一个简单的Web应用程序。 我们将在名为Jetty的Servlet容器中运行此Web应用程序#xff0c;添加一些依赖项#xff0c;编写简单的Servlet#xff0c;并生成WAR文件。 在本文的最后#xff0c;您还可以在Tomcat中部署该服… 在本文中我们使用Maven Archetype插件创建一个简单的Web应用程序。 我们将在名为Jetty的Servlet容器中运行此Web应用程序添加一些依赖项编写简单的Servlet并生成WAR文件。 在本文的最后您还可以在Tomcat中部署该服务。 系统要求 Java SE开发套件8 Maven 3.3.3 逐步创建Web服务 本节说明如何从EMPTY文件夹创建此简单的Web项目。 创建简单的Web项目 创建您的Web应用程序 $ mvn archetype:generate -DgroupIdcom.pengyifan.simpleweb \-DartifactIdsimple-webapp \-Dpackagecom.pengyifan.simpleweb \-DarchetypeArtifactIdmaven-archetype-webapp \-Dversion1.0-SNAPSHOT \-DinteractiveModefalse...
[INFO] BUILD SUCCESS Maven Archetype插件创建项目后将目录更改为simple-webapp目录并查看pom.xml 。 您应该看到 project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.pengyifan.simpleweb/groupIdartifactIdsimple-webapp/artifactIdpackagingwar/packagingversion1.0-SNAPSHOT/versionnamesimple-webapp Maven Webapp/nameurlhttp://maven.apache.org/urldependenciesdependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion3.8.1/versionscopetest/scope/dependency/dependenciesbuildfinalNamesimple-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 xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.pengyifan.simpleweb/groupIdartifactIdsimple-webapp/artifactIdpackagingwar/packagingversion1.0-SNAPSHOT/versionnamesimple-webapp Maven Webapp/nameurlhttp://maven.apache.org/urldependenciesdependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion3.8.1/versionscopetest/scope/dependencydependencygroupIdjavax.servlet/groupIdartifactIdservlet-api/artifactIdversion2.4/versionscopeprovided/scope/dependency/dependenciesbuildfinalNamesimple-webapp/finalNamepluginspluginartifactIdmaven-compiler-plugin/artifactIdconfigurationsource1.8/sourcetarget1.8/target/configuration/pluginplugingroupIdorg.mortbay.jetty/groupIdartifactIdmaven-jetty-plugin/artifactIdversion6.1.26/versionconfigurationconnectorsconnector implementationorg.mortbay.jetty.nio.SelectChannelConnectorport80/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文件。 h2Hello World!
/h2 在src/main/webapp/WEB-INF 我们将找到最小的Web应用程序web.xml 如以下示例所示 web-appdisplay-nameArchetype 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-appdisplay-nameArchetype Created Web Application/display-nameservletservlet-namesimple/servlet-nameservlet-classcom.pengyifan.web.SimpleServlet/servlet-class/servletservlet-mappingservlet-namesimple/servlet-nameurl-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// localhost8080 / simple-webapp / simple并获取SimpleServlet Executed 。 更改端口 在源代码包中我们使用端口80 。 在此任务中我们建议您在端口80上监听 RESTful API。 但是我们仍然可以收听其他端口。 为此请在pom.xml文件中找到以下几行然后在port更改数字。 [...]
plugingroupIdorg.mortbay.jetty/groupIdartifactIdmaven-jetty-plugin/artifactIdversion6.1.26/versionconfigurationconnectorsconnector implementationorg.mortbay.jetty.nio.SelectChannelConnectorport80/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 CNyour name or domain 输入-dname CN选项的名称或域名。 在Maven pom.xml配置插件时我们再次需要密钥库和密钥密码。 以下代码片段显示了Jetty插件如何支持SSL plugingroupIdorg.mortbay.jetty/groupIdartifactIdmaven-jetty-plugin/artifactIdconfigurationconnectorsconnector implementationorg.mortbay.jetty.nio.SelectChannelConnectorport8080/port/connectorconnector implementationorg.mortbay.jetty.security.SslSocketConnectorport8081/portmaxIdleTime60000/maxIdleTimekeystore${project.build.directory}/jetty-ssl.keystore/keystorepasswordjetty6/passwordkeyPasswordjetty6/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中 plugingroupIdorg.codehaus.mojo/groupIdartifactIdkeytool-maven-plugin/artifactIdexecutionsexecutionphasegenerate-resources/phaseidclean/idgoalsgoalclean/goal/goals/executionexecutionphasegenerate-resources/phaseidgenerateKeyPair/idgoalsgoalgenerateKeyPair/goal/goals/execution/executionsconfigurationkeystore${project.build.directory}/jetty-ssl.keystore/keystorednameCNBioCreative, OUNLM, ONIH, LBethesda, STDC/dnamekeypassjetty6/keypassstorepassjetty6/storepassaliasjetty6/aliaskeyalgRSA/keyalg/configuration
/plugin 现在我们可以调用mvn jetty:run 并且keyty由Jetty插件自动生成和使用。 配置Tomcat Tomcat身份验证 要把WAR文件部署到Tomcat中要比Jetty困难一点。 首先我们需要添加一个具有角色manager-gui和manager-script 。 在%TOMCAT_PATH%/conf/tomcat-users.xml tomcat-usersrole rolenamemanager-gui/role rolenamemanager-script/user usernameadmin passwordpassword rolesmanager-gui,manager-script /
/tomcat-users Maven认证 在Maven设置文件%MAVEN_PATH%/conf/settings.xml 在Tomcat用户上方添加以后Maven将使用该用户登录Tomcat服务器。 settings ...serversserveridTomcatServer/idusernameadmin/usernamepasswordpassword/password/server/servers
/settings Tomcat Maven插件 在pom.xml声明一个Maven Tomcat插件 plugingroupIdorg.apache.tomcat.maven/groupIdartifactIdtomcat7-maven-plugin/artifactIdversion2.2/versionconfigurationurlhttp://localhost:8080//urlserverTomcatServer/serverpath/biocreative/path/configuration
/plugin 在部署期间它告诉Maven使用http// localhost8080 /在路径/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