Java Tomcat 6未识别<;url映射>;
我有我认为最简单的方法 hello world示例(见下文)。但当要求 "http://localhost:8080/hello“通过firefox, 它给了我 “请求的资源(/hello/)不可用” 错误 环境:Windows 7上新安装的tomcat 6.0.32 其他资料: 1.“类似的问题”都没有提供任何线索Java Tomcat 6未识别<;url映射>;,java,tomcat,servlets,Java,Tomcat,Servlets,我有我认为最简单的方法 hello world示例(见下文)。但当要求 "http://localhost:8080/hello“通过firefox, 它给了我 “请求的资源(/hello/)不可用” 错误 环境:Windows 7上新安装的tomcat 6.0.32 其他资料: 1.“类似的问题”都没有提供任何线索 从实验来看,tomcat似乎不是 从localhost:8080/hello映射到我的servlet 我设置“” 这表明servlet的init条目正在 已调用,但从未调用doGe
<context-param>
<param-name>ContextPath</param-name>
<param-value>/dts</param-value>
</context-param>
您需要将包重命名为ROOT.war(或根目录),或修改ROOT.xml context.xml文件以指向hello文件夹。您正在webapp中部署您的
hello
servlet。假设webapp位于文件夹helloapp
或Tomcat的webapps
目录下的存档helloapp.war
中,那么您的sevlet将可在http://localhost:8080/helloapp/hello
如果你转到/hello/hello,我打赌你会看到你的应用程序。如果您使用的是tomcat,请使用context.xml。
webapp可能不需要使用它,但如果在tomcat下部署,那么当您有context.xml文件时,事情就会更加协调一致
<context-param>
<param-name>ContextPath</param-name>
<param-value>/dts</param-value>
</context-param>
在/yourtomcatinstall/webapps/hello/META-INF/中创建一个包含以下信息的context.xml文件”
并将web.xml中servlet的url映射更改为/和/或/*一个servlet可以有多个url映射。对于Java servlet应用程序(Java EE-Java Enterprise Edition的一部分,但不是总和),应用程序在所谓的“上下文路径”下有servlet“必须指定才能将任何请求映射到应用程序 ApacheTomcat可以通过server.xml(不推荐)或单个上下文文件(推荐)轻松配置此上下文路径。这两种方法都指定在何处查找web应用程序目录(未打包的web应用程序归档文件或WAR文件),以及将其放置在服务器上上下文路径的何处 正如Vlad已经说过的,如果您将war文件部署到Tomcat的webapps目录中,并在上进行自动安装(我相信默认情况下是打开的),Tomcat将把.war解压到该位置下的目录中,并使用war的名称作为其上下文路径。他的示例war文件名为“helloapp.war”,因此,在默认设置下,它将接收任何对
http://localhost:8080/helloapp
因为其上下文路径变为helloapp
当然,一旦请求被发送到上下文路径,就需要与之匹配。这就是web.xml发挥作用的地方。虽然可以使用根作为匹配器(对上下文路径的每个请求都由同一个进程处理),但通常会使用一个模式(例如*.do、*.action等),以便可以轻松区分对helloapp的各个请求(更易于阅读和调试http://localhost:8080/helloapp/login.action
和http://localhost:8080/helloapp/doSomethingElse.action
比通过一些参数和相同路径的http://localhost:8080/helloapp
在我看来)
因此,上下文路径到达您的应用程序,然后您的应用程序必须在web.xml上进行查找,以查看将实际请求发送到何处。在您的示例中,如果您的webapp部署在helloapp的上下文路径上,要使用正确的映射访问它,您只需附加/hello,请求就会变成
http://localhost:8080/helloapp/hello
对不起,原始示例是从我自己的一个Web应用程序粘贴的。从技术上讲,您可以将url映射更改为/但我仍然会向您的Web应用程序添加context.xml。此外,如果您没有设置context.xml。无论.war文件名是什么,都将是根url。因此,如果您的war文件名为HelloServlet.war,tomcat将在webapps/HelloServlet目录中部署它,并且您的根url将是/HelloServlet。因此,您将能够访问位于:/HelloServlet/hello.1的servlet。/hello/hello确实调用了servlet。2.添加context.xml也起到了作用;希望文档在这方面更加清晰,但是哦,很好。
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();
}
}
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/hello">
</Context>