我正在尝试从.NET过来的Java,并希望创建一个执行以下操作的简单页面:
我尝试了Eclipse,但没有取得多大成功,而且与VS2017相比,代码完成速度非常慢。所以我正在尝试使用IntelliJ社区。我已经构建了一个Maven项目,但是我的URL没有运行,看起来我的.java文件中没有任何代码完成。它没有自动构建应用程序目录。
我的POM:
<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>org.johnnytest.webapp</groupId>
<artifactId>jerseyexample</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>jerseyexample Maven Webapp</name>
<url>http://maven.apache.org</url>
<repositories>
<repository>
<id>snapshot-repository.java.net</id>
<name>Java.net Snapshot Repository for Maven</name>
<url>https://maven.java.net/content/repositories/snapshots/</url>
<layout>default</layout>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>2.26</version>
</dependency>
</dependencies>
<build>
<finalName>jerseyexample</finalName>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<url>http://localhost:8080/</url>
<!--<username>joe</username>-->
<!--<password>joe</password>-->
</configuration>
</plugin>
</plugins>
</build>
</project>
我的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>
<servlet>
<servlet-name>jersey-servlet</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.johnnytest.app</param-value>
<load-on-startup>1</load-on-startup>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>jersey-servlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
我的Java文件:
package com.johnnytest.app;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Response;
@Path("/test")
public class MainApp {
@GET
@Path("/{param}")
public Response getMessage(@PathParam("param") String message) {
String output = "Jersey says " + message;
return Response.status(200).entity(output).build();
}
}
此外它正在运行Tomcat 7,我在我的系统上安装了9。有没有办法让它在我现有的Tomcat安装上运行?当我访问localhost:8080上的任何URL时,我只在Safari中获得一个空白页面。在OSX Sierra上运行。
答案 0 :(得分:0)
如果您还没有这样做,请下载Apache Maven 3.5.0并将/bin
目录添加到系统PATH
变量中。
输入pom.xml
文件所在的目录并运行以下命令:
mvn clean package
mvn tomcat7:deploy
mvn tomcat7:start
第一个命令将构建代码并在子目录target/
中生成Java WAR存档。
第二个命令将WAR存档部署到Tomcat应用程序服务器。
第三个命令将启动Tomcat并按配置(localhost:8080
)公开服务器。
不要担心命令tomcat7
,即使您使用Tomcat 9也应该没问题。
IntelliJ中的Maven管理并不是最佳选择,但在右侧您应该看到 Maven项目窗格(如果您不这样做,请选择&#34;工具 - &gt;查看工具按钮&#34;菜单)。点击并展开。
在Lifecycle
下,您将找到标准的Maven目标,因此双击clean
然后package
将以与上一节中所述类似的方式生成WAR文件。 / p>
在Plugins
下,你会发现由Tomcat插件统治的Maven目标。展开并双击tomcat7:deploy
和tomcat7:start
。
如果您来自.NET,只需将Tomcat视为与VisualStudio捆绑在一起的IISExpress的Java版本。它是一个应用程序服务器,您可以在其中部署应用程序代码,并模拟用于开发的Web服务器服务。
存在许多相似之处,也存在许多差异。一般来说,.NET中的应用程序生命周期要包含得更多,我认为除了VisualStudio和MSBuild之外,你很少需要其他任何东西。在Java中,由于社区的缘故,许多事情已经创建和发展了几十年:我们有不同的构建系统(Maven,Ant,Gradle),最好的工具是命令行,并且有多种方法可以实现相同的目标。
例如,您正在使用Jersey REST库以及下面的基础应用服务器(Tomcat),但您也可以部署到NIO服务器(Grizzly)。如果您使用像Spring这样的扩展框架,您通常不会担心这些问题,因为从一种方式切换到另一种方式只需要在pom.xml中导入模块而不是另一种模块。
希望这对你有所帮助并给你一些指导。