0

まず、コードを手に入れましょう。 WebContent/WEB-INFでクラウドファウンドリ404しかし、ローカルのtomcatは大丈夫です

のWebContent

内のindex.html
<!DOCTYPE html> 
<html> 
<head> 
<meta charset="ISO-8859-1"> 
<title>Child Tickets</title> 
</head> 
<body> 
<h1>Find all child tickets affected user and their info</h1> 
<hr> 
<form name="f1" method="GET" action="/FindChildTicket4/FindChildTickets"> 
<input type="text" name="masterticket"> 
<button type="submit" value="main" name="btnSubmit">Hello</button> 
<br> 
<br> 
<div id="results"> 
results html 
</div> 
</form> 
</body> 
</html> 

web.xmlの

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> 
    <display-name>HelloWorld</display-name> 
    <welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
    <welcome-file>index.htm</welcome-file> 
    <welcome-file>index.jsp</welcome-file> 
    <welcome-file>default.html</welcome-file> 
    <welcome-file>default.htm</welcome-file> 
    <welcome-file>default.jsp</welcome-file> 
    </welcome-file-list> 
</web-app> 

のJavaリソースのHelloAgain.java/SRC/hlo.hello.net

package hlo.hello.net; 

import java.io.IOException; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

/** 
* Servlet implementation class HelloAgain 
*/ 
@WebServlet("/HelloAgain") 
public class HelloAgain extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

    /** 
    * @see HttpServlet#HttpServlet() 
    */ 
    public HelloAgain() { 
     super(); 
     // TODO Auto-generated constructor stub 
    } 

    /** 
    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 
    */ 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     // TODO Auto-generated method stub 
     response.getWriter().append("Served at: ").append(request.getContextPath()); 
    } 

    /** 
    * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
    */ 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     // TODO Auto-generated method stub 
     doGet(request, response); 
    } 

} 

EclipseでローカルのApache7サーバーにhtmlを起動し、Helloボタンをクリックすると、「Ser ved at:/ HelloWorld "と入力します。私は社内クラウドファウンドリーセットアップVIAのEclipseにこれを押すと、私はハローボタンをクリックすると は今、私はこれを取得

HTTPステータス404 -/HelloWorldの/ HelloAgain
タイプステータスレポート
メッセージ/ HelloWorldの/ HelloAgain
説明要求されたリソースは使用できません。
のApache Tomcat/7.0.62

私はこれらのサイトを試してみました... HTTP Status 404 - on Eclipse with Tomcat Java - Servlet 404 error Getting HTTP Status 404 error when trying to run servlet java servlet not found error 404 in eclipse

だけでなく、いくつかの他と勧告の非クラウドファウンドリ側が修正されています。 HTMLは毎回動作しますが、サーブレットは決して見つけられません。私は配備したクラウドファウンドリサーバファイルも見てきました。クラスはWEB-INF/classes/hlo/hello/net/

の下にあります。

非常に奇妙です。また、リンクされたサイトの推奨事項のいくつかは、サーバーがシャットダウンする場所へのローカルApacheのデプロイメントを壊しました。クラウドファウンドリを検索してもデータが見つからないので、誰かが洞察力を持っているかどうかを確認するだけです。

答えて

0

/HelloWorld/HelloAgainにアクセスしようとしているようです。

HTTPステータス404 -/HelloWorldの/ HelloAgain

あなたのサーブレットは/HelloAgain/HelloWorld用に設定されている(あなたがServed at: <context>、ローカルで実行したときからの出力でこれを見ることができる)状況です。

アプリケーションをローカルのTomcatにデプロイする場合は、通常、ROOTコンテキストではなくコンテキストで実行されます。違いは、コンテキストにデプロイするときに、すべてにそのコンテキスト名の接頭辞が付いていることです。 Cloud Foundryにデプロイすると、Javaビルドパックは常にアプリケーションをROOTコンテキストとしてデプロイします。これはプレフィックスがないことを意味します。

アプリケーションにハードコードされたURLまたはリンクがあり、コンテキスト名が含まれていると、CFにデプロイするときに不正確になり、404が生成されます。

CFにデプロイすると、簡単なテストでは/HelloAgainになるはずです。アプリはROOTコンテキストの下に配備されているため、そのURLからアクセスできる必要があります。あなたは出力に"Served at: /"が表示されると思う。

URLが正しく生成されるようにする方法の1つは、JSTL Coreの<c:url>タグです。別の方法は、HttpServletRequestオブジェクトのパラメータからURLを構築することです。私は他にもたくさんの方法があると確信しています。使用されているURLがアプリケーションの配備状況を考慮していることを確認するだけです。

希望に役立ちます!

関連する問題