Hiphone2016 2017-08-28 02:37 采纳率: 100%
浏览 2020
已结题

jetty代码,可以重定向到html页面,却不能转发

主函数:

package com.ls;

import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;

public class Main {
      public static void main(String[] args) throws Exception {
        Server server = new Server(8080);
        ServletContextHandler servletContext = new ServletContextHandler(ServletContextHandler.SESSIONS);
        servletContext.setContextPath("/loadJetty");
        servletContext.setResourceBase(".");
        server.setHandler(servletContext);
        servletContext.addServlet(new ServletHolder(new ProceedServlet()), "/");
        server.start();
        server.join();
    }

}

ProceedServlet的代码:

package com.ls;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ProceedServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public ProceedServlet() {
        super();
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.getServletContext().getRequestDispatcher("/load.html").forward(request, response);
    }

这样的话运行主函数,在浏览器输入http://localhost:8080/loadJetty,控制台报错:java.lang.StackOverflowError,单步调试发现doGet方法在不断进行。但是,如果ProceedServlet的doGet方法写:
response.sendRedirect("/load.html");
就可以重定向到html页面。请问这是为什么呢?
附上我的项目结构图:(用Maven管理的)
图片说明

  • 写回答

1条回答

  • Hiphone2016 2017-08-29 06:36
    关注

    其实在Servlet里重定向到一个html页面,浏览器会显示404错误页面,昨天之所以重定向成功了,是因为先用ResourceHandler访问了这个html页面。实际上,jetty中访问静态页面似乎只能通过ResourceHandler。

    评论

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作