我的servlet没有正确转发。我不断地被转发到Tomcat-8.5、404或500错误页面,这取决于我尝试了什么。当我收到500错误时,它只是说servlet抛出了一个异常。
我尝试检索锚标记的名称(在导航栏中),并根据该名称将其转发到正确的JSP。一旦我得到了工作,我将使用这个servlet来检查现有的会话或启动新的会话。
非常感谢你的帮助。
下面是我的servlet映射:
<servlet>
<servlet-name>SessionTracker</servlet-name>
<servlet-class>SessionTracker</servlet-class>
</servlet>
<!-- Servlet Maps -->
<servlet-mapping>
<servlet-name>SessionTracker</servlet-name>
<url-pattern>/donate/*</url-pattern>
</servlet-mapping>下面是锚标签:
<li><a href="/donate/donate.jsp" name="donate">Donate</a></li>
请注意,我还在锚标签上尝试了以下操作:
<li><a href="/donate/donate.jsp?name=donate" name="donate">Donate</a</li>
下面是各自的Java函数:
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletContext sc = getServletContext();
String url = forwardRequest(request, response, sc);
sc.getRequestDispatcher(url).forward(request, response);
}
private static String forwardRequest(HttpServletRequest request, HttpServletResponse response, ServletContext sc){
String url = new String("");
String name = request.getParameter("name");
switch(name){ //switch state to determine which
case "donate":
url = "/donate/donate.jsp";
break;
case "mission":
url = "/about/missionStatement.jsp";
break;
}
return url;
}发布于 2017-03-19 12:54:03
好的,让我们分析一下你的代码:
1.- dd (web.xml)
<servlet-class>SessionTracker</servlet-class>尽量不要使用默认包(尽管这里没有问题)
<url-pattern>/donate/*</url-pattern>哦,孩子,这是一个问题,你对容器说,嘿,如果有人使用http://localhost:8080/mysite/donate/whateverIDon的tCare,调用Servlet SessionTracker,所以我可以使用不同的路径,它将调用相同的Servlet
/mysite/donate/some
/mysite/donate/hereWeGo
/mysite/donate/lol所以这并不好,请尝试将其更改为
<url-pattern>/donate/SesionTrackerServlet</url-pattern>2.-看看你的
<li><a href="/donate/donate.jsp?name=donate" name="donate">Donate</a</li>你能看到失败吗?是的,正如我所说的,当用户单击此处时,它将调用您的Servlet,因此您的servlet将调用您的方法forwardRequest,您认为会发生什么?是的,它将转发到url =“/donate/bonate.jsp”;但是等等,你明白我的观点1了吗?您将再次调用servlet和方法,并再次执行booooom....Estado HTTP500- Servlet抛出异常,因为您创建了一个循环。
但正如我所说的,将其更改为:
Web.xml
<servlet>
<servlet-name>SessionTracker</servlet-name>
<servlet-class>SessionTracker</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SessionTracker</servlet-name>
<url-pattern>/donate/SessionTrackerServlet</url-pattern>
</servlet-mapping>现在输入这个url (当然,如果需要,可以更改您的端口)
http://localhost:8080/Test/donate/SessionTrackerServlet?name=donate
和woooala =)
[![enter image description here][1]][1]
[![enter image description here][2]][2]
[![enter image description here][3]][3]
[![enter image description here][4]][4]
[1]: https://i.stack.imgur.com/9hhTO.png
[2]: https://i.stack.imgur.com/Hqha7.png
[3]: https://i.stack.imgur.com/uUvn4.png
[4]: https://i.stack.imgur.com/Tge2x.pnghttps://stackoverflow.com/questions/42882198
复制相似问题