我真的做功课弄清楚原因,但我还在苦苦挣扎。请帮忙!
我有一个在今天之前没有任何页面运行良好的Servlet(tomcat 7& eclipse)
现在,我希望尝试添加一些页面并重定向到它们。我添加了一行
response.sendRedirect("/userhelp.html");
测试页面是否正常工作,但不是。
我将我的userhelp.html放在WebContent的下面。为了测试,我尝试将其复制到WEB-INF中,但它都不起作用。
如果我将“/userhelp.html”替换为“userhelp.html”,则它没有错误页面,但具有“递归重定向”。
以下是我的相对代码。
@WebServlet(name="core",urlPatterns={"/"})
public class CoreServlet extends HttpServlet {
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
response.sendRedirect("/userhelp.html");
答案 0 :(得分:1)
您需要将sendrederct编辑为:
response.sendRedirect是(" /ProjectName/userhelp.html");
你有response.sendRedirect(" /userhelp.html");对你的sendRedirect的争论以正斜杠开头。这意味着对容器的根进行了反应。容器构建了相对于请求的原始URL的URL。
您的userhelp.html页面退出了项目的webcontent.It来自容器根目录的相对路径应该是/Projectname/userhelp.html。所以你需要编辑你的路径 response.sendRedirect是
编辑:问题在于你的servlet映射,因为@servletmapping(/)意味着任何为这个url模式(/)发送的东西都应该发送到这个servlet。所以真正发生的是当你的servlet第一次被调用时并且调用了response.sendredirect(),创建了一个新的请求对象,并且它的路径是/,所以再次调用你的servlet并开始这个递归过程。
因此,解决方法是将servlet映射更改为:@servletmapping(/ test),然后通过调用yourlocalhost / test / .So来调用此servlet,当这次重定向完成时,不会调用Servlet。