簡體   English   中英

Java-IntelliJ社區Maven Web應用

[英]Java - IntelliJ Community Maven Web App

我正在嘗試從.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. 如果尚未執行此操作,請下載Apache Maven 3.5.0並將/bin目錄添加到系統PATH變量中。

  2. 輸入pom.xml文件所在的目錄,然后運行以下命令:

     mvn clean package mvn tomcat7:deploy mvn tomcat7:start 

第一個命令將構建代碼並在子目錄target/生成Java WAR存檔。

第二條命令會將WAR歸檔文件部署到Tomcat應用程序服務器。

第三個命令將啟動Tomcat並按照配置( localhost:8080 )公開服務器。

不必擔心tomcat7命令,即使您使用的是Tomcat 9,也應該可以。

在IntellJ中啟動

IntelliJ中的Maven管理並不是真正的最佳選擇,但是在右側應該會看到一個Maven項目窗格(如果沒有,請選擇“工具->查看工具按鈕”菜單)。 單擊並展開。

Lifecycle您將找到標准的Maven目標,因此雙擊clean ,然后package將以與上一節中所述類似的方式生成WAR文件。

在“ 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中導入一個模塊,而不是另一種。

希望這對您有所幫助,並為您提供了一些指導。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM