有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何修复对Servlet的无限重定向?

我有一个Servlet映射如下:

@WebServlet("/test/*")

因此,访问localhost:8080/test/1localhost:8080/test/99的所有内容都在同一个Servlet中处理,并将它们转发给localhost:8080/test/1/test.html

问题是——我的转发属于相同的通配符规则,即test/*——并导致无限循环

我一直试图解决这个问题,但运气不佳。我一直在考虑添加某种计数器来跟踪Servlet被调用的次数,但如果我想正确地重用Servlet,这只会限制我并产生另一个问题

感谢大家的帮助,因为我一整天都在忙这个。谢谢谢谢谢谢!

@WebServlet("/test/*")
public class WildcardTest extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            System.out.println(request.getRequestURL());
            RequestDispatcher view = request.getRequestDispatcher("test.html");
            view.forward(request, response);    
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

决议: 我使用WEB-INF目录来存储html视图。您可以在不点击任何servlet映射的情况下转发到那里。我以为这会解决问题,但它仍然给了我同样的问题

 RequestDispatcher view = request.getRequestDispatcher("WEB-INF/views/login.html");

请求http://localhost:8080/test/test时的输出:

2016-05-15T21:12:37.798+0200|Info: http://localhost:8080/test/test
2016-05-15T21:12:37.798+0200|Info: http://localhost:8080/test/WEB-INF/views/login.html
2016-05-15T21:12:37.798+0200|Info: http://localhost:8080/test/WEB-INF/views/WEB-INF/views/login.html
2016-05-15T21:12:37.798+0200|Info: http://localhost:8080/test/WEB-INF/views/WEB-INF/views/WEB-INF/views/login.html
2016-05-15T21:12:37.798+0200|Info: http://localhost:8080/test/WEB-INF/views/WEB-INF/views/WEB-INF/views/WEB-INF/views/login.html

共 (1) 个答案

  1. # 1 楼答案

    使用WEB-INF目录存储html视图。您可以在不点击任何servlet映射的情况下转发到那里