我有一个我认为是最简单的hello world示例(见下文)。但是当通过firefox请求"http://localhost:8080/hello“时,它会给我”请求的资源(/hello/)不可用“错误。
环境: Windows 7上新安装的tomcat 6.0.32。
其他信息: 1.没有一个“相似的问题”提供任何线索。
从
我考虑过的一些可能性:
根据文档,我不需要使用一个error.
我想问题很简单,但我看不见。
2011年8月8日,关于使用context.xml的答案是正确的,谢谢。环顾四周,实现相同效果的另一种方法似乎是将其放入我的web.xml文件中。
<context-param>
<param-name>ContextPath</param-name>
<param-value>/dts</param-value>
</context-param>web.xml:
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" version="2.4"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http:/java.sun.com/dtd/web-app_2_3.dtd">
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>test.HelloServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
HelloServlet.java:包装试验;
import java.io.*;
import javax.servlet.http.*;
import javax.servlet.*;
public class HelloServlet extends HttpServlet {
public void init()
{
System.out.println("\nHelloServlet.init");
}
public void doGet (HttpServletRequest req,
HttpServletResponse res)
throws ServletException, IOException
{
System.out.println("\nHelloServlet.doGet");
PrintWriter out = res.getWriter();
out.println("Hello, world!");
out.close();
}
}发布于 2011-08-07 20:03:41
对于Java应用程序(的一部分,但不是其总和),应用程序在所谓的“上下文路径”下有Servlet。为了将任何请求映射到应用程序,必须指定此“上下文路径”。
Apache使这个上下文路径非常容易配置,无论是通过server.xml (不推荐)还是单独的上下文文件(推荐)。这两种方法都指定了在哪里找到web应用程序目录(一个未打包的web应用程序存档或WAR文件),以及将它放在服务器上的上下文路径的位置。
正如Vlad已经说过的那样,如果您将war文件部署到Tomcat的webapp目录中,并在其上自动安装(我相信它是默认的),Tomcat将将.war解压缩到该位置下的目录中,并使用war的名称作为其上下文路径。他的示例war文件名为"helloapp.war",因此,使用默认设置,它将接收对http://localhost:8080/helloapp的任何请求,因为它的上下文路径变为helloapp。
当然,一旦请求被发送到上下文路径,就需要与其匹配。这就是web.xml进来玩的地方。虽然可以使用根作为匹配器(对上下文路径的每个请求都由同一个进程处理),但通常使用模式(如*.do、*.action等),以便很容易区分对helloapp的单个请求(与通过某些参数和通过相同的http://localhost:8080/helloapp路径识别两者相比,http://localhost:8080/helloapp/login.action和http://localhost:8080/helloapp/doSomethingElse.action更容易阅读和调试)
因此,上下文路径到达应用程序,然后应用程序必须对web.xml进行查找,以查看向何处发送实际请求。在您的示例中,如果您的webapp部署在helloapp的上下文路径上,为了使用正确的映射访问它,您只需附加/hello,这样请求就变成了http://localhost:8080/helloapp/hello。
发布于 2011-08-07 18:56:22
您正在webapp中部署hello servlet。假设webapp位于helloapp文件夹中或Tomcat的webapps目录中的归档helloapp.war中,那么您的sevlet可以在http://localhost:8080/helloapp/hello上访问
发布于 2011-08-07 18:47:56
您需要将包重命名为ROOT.war (或根目录),或者修改ROOT.xml context.xml文件以指向hello文件夹。
https://stackoverflow.com/questions/6974915
复制相似问题