簡體   English   中英

Jetty Servlet轉發JSP:轉發錯誤

[英]Jetty Servlet forward jsp: forward error

正向jsp中的問題給出了錯誤消息:

2016-01-27 13:22:13.192:WARN:oejs.ServletHandler:qtp1132700707-25: Error for /
java.lang.StackOverflowError
    at java.lang.String.startsWith(String.java:1434)
    at org.eclipse.jetty.server.Dispatcher$ForwardAttributes.setAttribute(Dispatcher.java:352)
    at org.eclipse.jetty.server.Dispatcher$ForwardAttributes.setAttribute(Dispatcher.java:368)
    at org.eclipse.jetty.server.Dispatcher$ForwardAttributes.setAttribute(Dispatcher.java:368)
    at org.eclipse.jetty.server.Request.setAttribute(Request.java:1925)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:839)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:583)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:224)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
    at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:199)
    at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:74)
    at pages.index.doGet(index.java:18)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)

獲取:

@WebServlet(urlPatterns = "/") 
public class index extends HttpServlet{
    private static final long serialVersionUID = 1L;
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        request.getRequestDispatcher("/index.jsp").forward(request,response);
    }
}

啟動服務器:

WebAppContext webapp1 = new WebAppContext();
webapp1.setResourceBase("src/Pages");
webapp1.setContextPath("/");
webapp1.setDefaultsDescriptor("src/WEB-INF/web.xml");
webapp1.setDescriptor("src/WEB-INF/web.xml");
server.setHandler(webapp1);

getServletContext()沒有幫助

請幫助我了解問題所在。

添加了index.jsp,生成NetBeans 8.1,我沒有改變。

<%@page contentType="text/html" pageEncoding="UTF-8"%>

<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">

<f:view>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
            <title>JSP Page</title>
        </head>
        <body>
            <h1><h:outputText value="Hello World!"/></h1>
        </body>
    </html>
</f:view>

您的index.jsp正在調用servlet,而servlet正在調用index.jsp使它們具有無限循環。 更改頁面servlet應該轉發

getServletContext().getRequestDispatcher("/page.jsp").forward(request,response);

我確實做了

getServletContext().getRequestDispatcher("/page.jsp").forward(request,response);

正如羅曼·C(Roman C)所建議的。但是,這並不能單獨解決。 我還刪除了所有servlet映射。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM