我的webapp文件夹中有一个“ index.html”文件。现在,我想通过我的servlet重定向到该文件,但是它总是会给出异常,因为我不知道要放置什么路径。我的代码:
public void service(HttpServletRequest request,
HttpServletResponse response) throws IOException {
// Must set the content type first
RequestDispatcher view = request.getRequestDispatcher("webapp/index.html");
try {
view.forward(request, response);
} catch (ServletException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
我使用了“ index.html”,“ / index.html”,“ ./ index.html”, “ /webapp/index.html”,“ ./ webapp / index.html”。
我不知道如何访问此文件。请帮忙。
答案 0 :(得分:0)
您的代码有两个问题:
第一个问题是您要覆盖 service()方法。没有理由这样做,Javadoc specification for service()明确表示:
从公共服务方法接收标准HTTP请求,并 将它们分派到此类中定义的doMethod方法。这个 方法是HTTP的特定版本 Servlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)方法。 无需覆盖 这种方法。
因此删除您的doService()
方法。相反,应实现一个doGet()
方法,其中包含您的doService()
方法中的代码。
第二个问题是指定html文件名的方式看起来不正确。我不知道您如何组织项目,但如果将 index.html 直接放在 WebContent 下,则可以使用” / index来引用文件。 html“ 或” index.html“ 。 From the specification for getRequestDispatcher()
:
指定的路径名可以是相对的,尽管它不能扩展 在当前servlet上下文之外。如果路径以“ /”开头 被解释为相对于当前上下文根。
尝试删除service()
方法并添加包含您的代码的doGet()
方法:
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
RequestDispatcher view = request.getRequestDispatcher("index.html");
try {
view.forward(request, response);
} catch (ServletException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}