我在tomcat目录下的ubuntu上安装了Apache Tomcat。我通过导出为单个会话设置CATALINA_HOME
环境变量。然后我从命令行通过$CATALINA_HOME/bin/startup.sh
启动了tomcat。一切都运作良好。我看到tomcat官方页面并假设服务器安装正确。然后我在
$CATALINA_HOME/webaps/apress/
目录。
import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.http.*;
public class HelloWorldServlet extends HttpServlet
{
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text/html");
PrintWriter out=response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>hello, world</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1> hello world</h1>");
out.println("</body>");
out.println("</html>");
}
}
然后我编译了文件
javac -cp HelloWorldServlet.java -d ./classes -cp $CATALINA_HOME/bin/servlet-api.jar
编译成功,类文件被放入应用程序根目录的classes子目录中。
然后我编辑了web.xml文件。
<?xml version ="1.0" encoding ="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns.xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http:/java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<display-name>Chapter 2</display-name>
<description> Apress demo</description>
<servlet>
<servlet-name>helloworld</servlet-name>
<servlet-class>HelloWorldServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>helloworld</servlet-name>
<url-pattern>/hello.html</url-pattern>
</servlet-mapping>
</web-app>
然后我重启了Tomcat。但是当我尝试通过
访问时http://localhost:8080/apress/hello.html
我收到Http状态404消息。我做错了什么?
答案 0 :(得分:0)
我建议您首先尝试在Netbeans或Eclipse等IDE中构建应用程序,然后研究自动生成的配置文件。
答案 1 :(得分:0)
在tomcat目录中查看一个logs目录。停止tomcat。删除所有日志文件并重新启动tomcat并点击该URL。检查日志(主要是访问日志和catalina.out)。首先在那里寻找错误。
您可能还想考虑使用@WebServlet而不是编辑web.xml,现代版本的tomcat可以识别用它注释的类,并自动将它们注册为servlet。
@WebServlet(name="HelloWorld", urlPatterns={"/hello.html"})
public class HelloWorldServlet extends HttpServlet {
}
另外,您如何将此servlet部署为WAR文件?
答案 2 :(得分:0)
两件事可能。根据您所写的内容,您创建应用程序的目录是:
$CATALINA_HOME/webaps/apress/
它应该是
$CATALINA_HOME/webapps/apress/
但我想这只是一种打字。
第二件事是你应该复制已编译的文件
HelloWorldServlet.class
到
apress/WEB-INF/classes
目录,或者直接将java文件编译到这个目录中