0

먼저 코드를 제거하십시오. 의 WebContent에서클라우드 파운드리 404하지만 로컬 톰캣은 괜찮습니다.

<!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에있는 WebContent에

index.html을/WEB-INF 자바 자료에

<?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> 

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 이클립스이를 누를 때 나는 안녕하세요 버튼을 클릭하면 는 지금이 얻을

HTTP 상태 404 - /하여 HelloWorld/HelloAgain
유형 상태 보고서
메시지 /하여 HelloWorld/HelloAgain
설명 요청한 리소스를 사용할 수 없습니다. 나는이 사이트를 시도/7.0.62


아파치 톰캣 ... java servlet not found error 404 in eclipse

뿐만 아니라 몇 가지 다른과 권고의 비 클라우드 파운드리 측를 해결 HTTP Status 404 - on Eclipse with Tomcat Java - Servlet 404 error Getting HTTP Status 404 error when trying to run servlet. 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에 배포 할 때 URL이 잘못되었거나 404 링크가 생성되는 링크가 올바르지 않습니다.

빠른 테스트는 CF에 배포 할 때 /HelloAgain으로가는 것이 좋습니다. 앱이 ROOT 컨텍스트에서 배포되므로 해당 URL에서 액세스 할 수 있어야합니다. 출력에 "Served at: /"이 표시됩니다.

URL이 올바르게 생성되는지 확인하는 한 가지 방법은 JSTL Core의 <c:url> 태그를 사용하는 것입니다. 또 다른 방법은 HttpServletRequest 객체의 매개 변수에서 URL을 작성하는 것입니다. 나는 다른 많은 방법들이있을 것이라고 확신한다. 사용되는 URL이 응용 프로그램이 배포되는 컨텍스트를 고려해야합니다.

희망 하시겠습니까?

관련 문제