2017-10-15 19 views
0

我嘗試從Java .NET過來,想要做一個簡單的頁面,執行以下操作:爪哇 - 的IntelliJ社區Maven的Web應用程序

  • 實現的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上運行。

+0

在單個問題中,這是太多的問題。你需要保持專注。如果您有intellij問題,您可能無法正確導入項目到intellij,並應參考他們的文檔在https://www.jetbrains.com/help/idea/maven.html – Deadron

+0

這裏只有一個問題,我如何得到它在我現有的Tomcat 9上安裝?我只是告訴你細節並告訴你我想做什麼。 ASP.NET Core允許我在VS中進行幾次點擊即可完成所有這些工作,儘管它默認運行MSSQL LocalDb而不是MySQL。我正在尋找與Java相同的MVC分離問題。這是可行的,還是我不應該期待Java來製作webapps? –

回答

0

啓動在命令行

  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

啓動

Maven的管理的IntelliJ是不是真的最佳,但在右邊你會看到一個Maven項目窗口(如果你不這樣做,選擇「工具 - >查看工具按鈕」菜單)。點擊並展開。

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

根據Plugins你會發現由Tomcat插件統治的Maven目標。展開並雙擊tomcat7:deploytomcat7:start

與ASP.NET

快速並行

如果你來自.NET,只是覺得的Tomcat作爲IISExpress的Java版本附帶的VisualStudio與捆綁。它是一個應用程序服務器,您可以在其中部署應用程序代碼並模擬用於開發的Web服務器服務。

有很多相似之處,也有許多差異。一般來說,.NET中的應用程序生命週期更加複雜,除了VisualStudio和MSBuild之外,我認爲你很少需要其他東西。在Java中,由於社區的關係,幾十年來已經創建並發展了許多東西:我們有不同的構建系統(Maven,Ant,Gradle),最好的工具是命令行,並且有多種方法可以實現相同的目標。

例如,您正在將Jersey REST庫與底層應用程序服務器(Tomcat)配合使用,但您也可以將其部署到NIO服務器(Grizzly)。如果你使用像Spring這樣的擴展框架,你通常不用擔心這些問題,因爲從一種方式切換到另一種方式只需要在你的pom.xml中導入一個模塊而不是另一個。

希望這對你有幫助,並給了你一些指導。

+0

當我試圖運行tomcat7時:我得到: 警告:發生了非法的反射訪問操作 警告:com.thoughtworks.xstream.core.util.Fields非法反射訪問(file:/Users/johnernest/.m2 /repository/com/thoughtworks/xstream/xstream/1.3.1/xstream-1.3.1.jar)添加到字段java.util.Properties.defaults 警告:請考慮向com.thoughtworks.xstream.core的維護者報告此問題.util.Fields 警告:使用--illegal-access = warn來啓用進一步的非法反射訪問操作的警告 警告:所有非法訪問操作將在未來REL中被拒絕 –

+0

因此,它看起來像一些依賴關係搞砸了。我剛剛在週末順便安裝了IntelliJ。 –

+0

我有一個tomcat7:運行選項,它說它正在運行,但是當我去瀏覽器時,我只是得到一個空白頁。 –