尝试运行servlet时获取HTTP状态404错误 [英] Getting HTTP Status 404 error when trying to run servlet
问题描述
webapps / ServletTest / WEB-INF / classes
文件夹中并进行编译,创建文件 Hello .class
在同一个文件夹中。然后,我修改了我的web.xml文件来映射servlet并尝试通过以下地址运行: http:// localhost :8080 / ServletTest / Hello
但是,这没有工作,发生以下错误
HTTP状态404 -
类型状态报告
消息
描述请求的资源不可用。
Apache Tomcat / 7.0.42
web.xml文件中的映射如下所示:
< servlet>
< servlet-name> Hello< / servlet-name>
< servlet-class> Main.Hello< / servlet-class>
< / servlet>
< servlet-mapping>
< servlet-name> Hello< / servlet-name>
< url-pattern> / Hello< / url-pattern>
< / servlet-mapping>
servlet的代码:
包主;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(/ Hello)
public class Hello extends HttpServlet {
private static final long serialVersionUID = 1L;
public Hello(){
super();
}
protected void doGet(HttpServletRequest request,HttpServletResponse
response)throws ServletException,IOException {
PrintWriter out = response.getWriter();
response.setContentType(text / html);
String path = request.getContextPath();
String ip = request.getRemoteAddr();
out.print(< html>+
< title> Hello< / title>+
Hello World+< br>+
你的ip是:+ ip +< br>+
你的路径是:+ path
+< / html>);
}
protected void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException {
}
}
编译的 Hello.class
文件应位于文件夹
webapps / ServletTest / WEB-INF / classes / Main
因为它被声明为包主
/ p>
此外,您可以在 /logs/catalina.out
或中查看Tomcat的启动日志, log / catalina.log
,取决于。
此外,Suresh在评论中是正确的,使用< servlet>
声明或 @WebServlet
。不要同时使用。
I have a problem with my simple servlet that I am trying to run, Hello.java. I made it in eclipse, then placed the file it in the webapps/ServletTest/WEB-INF/classes
folder and compiled it, creating the file Hello.class
in the same folder. I then modified my web.xml file to map the servlet and tried to run it through the following address
http://localhost:8080/ServletTest/Hello
However, this did not work, giving the following error
HTTP Status 404 -
type Status report
message
description The requested resource is not available. Apache Tomcat/7.0.42
The mapping in the web.xml file looks like this:
<servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>Main.Hello</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Hello</servlet-name>
<url-pattern>/Hello</url-pattern>
</servlet-mapping>
The code of the servlet:
package Main;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/Hello")
public class Hello extends HttpServlet {
private static final long serialVersionUID = 1L;
public Hello() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
response.setContentType("text/html");
String path = request.getContextPath();
String ip = request.getRemoteAddr();
out.print("<html>" +
"<title>Hello</title>" +
"Hello World"+ "<br>" +
"Your ip is: " + ip + "<br>" +
"Your path is: " + path
+ "</html>");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
}
The compiled Hello.class
file should be in the folder
webapps/ServletTest/WEB-INF/classes/Main
since it's declared to be in package Main
.
Also, you can see Tomcat's startup logs in /logs/catalina.out
or /logs/catalina.log
, depending.
Also, Suresh is right in the comments, use either a <servlet>
declaration or @WebServlet
. Don't use both.
这篇关于尝试运行servlet时获取HTTP状态404错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!