首先让代码放开。
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.javapackage 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时找不到任何好的数据。
答案 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考虑了部署应用程序的位置的上下文。
希望有所帮助!