云代工404但本地tomcat很好

时间:2017-05-05 15:41:59

标签: eclipse servlets tomcat7 http-status-code-404 cloudfoundry

首先让代码放开。

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>

WebContent / WEB-INF中的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 Resources / src / hlo.hello.net

中的HelloAgain.java
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按钮时,我会回到&#34;服务于:/ HelloWorld&#34;在浏览器中。 现在,当我将其推送到我们的内部Cloud Foundry设置VIA Eclipse时,我点击Hello按钮

HTTP状态404 - / HelloWorld / HelloAgain
类型状态报告
message / HelloWorld / HelloAgain
description所请求的资源不可用 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将在每个单一时间工作,但它永远不会找到servlet。我也看过我部署的云代工服务器文件,这个类在WEB-INF / classes / hlo / hello / net /

下面

很奇怪。此外,链接站点中的一些建议将本地apache deployemtn打破到服务器将关闭的位置。只是看看是否有人有任何见解,因为我在搜索云代工厂404时找不到任何好的数据。

1 个答案:

答案 0 :(得分:0)

您似乎正在尝试访问/HelloWorld/HelloAgain

  

HTTP状态404 - / HelloWorld / HelloAgain

您的Servlet已配置为/HelloAgain/HelloWorld是上下文(您可以在本地运行的输出中看到此内容,Served at: <context>)。

将应用程序部署到本地Tomcat时,通常在上下文而不是ROOT上下文中完成。不同之处在于,当您部署到上下文时,所有内容都以该上下文名称为前缀。部署到Cloud Foundry时,Java构建包始终将您的应用程序部署为ROOT上下文。这意味着没有前缀。

如果您的应用程序中包含硬编码的URL或链接包含上下文名称,则在部署到CF时它们将不正确,并且会生成404.

在CF上部署时,一个快速测试是转到/HelloAgain。由于应用程序部署在ROOT上下文中,因此应该可以在该URL上访问它。我怀疑你会在输出中看到"Served at: /"

确保正确生成网址的一种方法是使用JSTL Core的<c:url>标记。另一种方法是从HttpServletRequest对象的参数构建您的URL。我确定还有很多其他方法。您只需确保使用的URL考虑了部署应用程序的位置的上下文。

希望有所帮助!