Java - IntelliJ社区Maven Web应用程序

时间:2017-10-15 02:59:58

标签: java maven intellij-idea

我正在尝试从.NET过来的Java,并希望创建一个执行以下操作的简单页面:

  • 实施RESTful API
  • 连接MySQL数据库
  • 实施基于角色的安全性

我尝试了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上运行。

1 个答案:

答案 0 :(得分:0)

在命令行

启动
  1. 如果您还没有这样做,请下载Apache Maven 3.5.0并将/bin目录添加到系统PATH变量中。

  2. 输入pom.xml文件所在的目录并运行以下命令:

    mvn clean package
    mvn tomcat7:deploy
    mvn tomcat7:start
    
  3. 第一个命令将构建代码并在子目录target/中生成Java WAR存档。

    第二个命令将WAR存档部署到Tomcat应用程序服务器。

    第三个命令将启动Tomcat并按配置(localhost:8080)公开服务器。

    不要担心命令tomcat7,即使您使用Tomcat 9也应该没问题。

    在IntellJ

    内启动

    IntelliJ中的Maven管理并不是最佳选择,但在右侧您应该看到 Maven项目窗格(如果您不这样做,请选择&#34;工具 - &gt;查看工具按钮&#34;菜单)。点击并展开。

    Lifecycle下,您将找到标准的Maven目标,因此双击clean然后package将以与上一节中所述类似的方式生成WAR文件。 / p>

    Plugins下,你会发现由Tomcat插件统治的Maven目标。展开并双击tomcat7:deploytomcat7:start

    与ASP.NET

    快速并行

    如果您来自.NET,只需将Tomcat视为与VisualStudio捆绑在一起的IISExpress的Java版本。它是一个应用程序服务器,您可以在其中部署应用程序代码,并模拟用于开发的Web服务器服务。

    存在许多相似之处,也存在许多差异。一般来说,.NET中的应用程序生命周期要包含得更多,我认为除了VisualStudio和MSBuild之外,你很少需要其他任何东西。在Java中,由于社区的缘故,许多事情已经创建和发展了几十年:我们有不同的构建系统(Maven,Ant,Gradle),最好的工具是命令行,并且有多种方法可以实现相同的目标。

    例如,您正在使用Jersey REST库以及下面的基础应用服务器(Tomcat),但您也可以部署到NIO服务器(Grizzly)。如果您使用像Spring这样的扩展框架,您通常不会担心这些问题,因为从一种方式切换到另一种方式只需要在pom.xml中导入模块而不是另一种模块。

    希望这对你有所帮助并给你一些指导。