java - Url Shortener 重定向到 index.html

标签 java tomcat servlets jetty stack-overflow

是的,又一个用 java 编写的 url 缩短器,因为我想要我自己的,因为为什么不呢。目前一切正常,只是不是我想要的那样。总之,整个项目中只有一个servlet映射到“/”。没有涉及框架,也没有任何花哨的东西,这只是一个基本的 Servlet“项目”。在 doPost 上创建了一个新的 shortUrl,你会得到一个 JSON 响应。在 doGet 上,如果 URL 是“/*{any_valid_short_url}”,则会发送重定向(如下)。

response.sendRedirect("longUrlString")

我遇到的问题是索引页面,当调用相同的 doGet 时,我检查请求的路径,如果它是“/”,那么目前,我使用 FileInputStream 并通过响应流出 index.html 页面.getOutputStream(),在我看来这很老套。我想改用 requestDispatcher,但是当我尝试实现它(如下)时,我进入了重定向循环,并且 servlet 容器(jetty 或 tomcat)堆栈溢出。

getServletContext().getRequestDispatcher("/index.html").forward(req, res);

我对这是如何完成的有什么误解吗?该项目目前托管在我的 github 页面上。 https://github.com/justinmburrous/ShortUrl

最佳答案

您需要使此检查范围更窄,因为对于所有请求,此条件都为真,因此所有请求都会一次又一次地转发到“index.html”

    if(requestedPath.equals("/")){

    //tried with multiple variations of /index.html, renamed to jsp, etc...
RequestDispatcher dispatcher = request.getRequestDispatcher("index.html");
dispatcher.forward(request, response);    
    }

编辑: 由于您的 servlet 被映射为默认 servlet ,因此所有转发或请求都将由该 Servlet 处理。 您应该将 url 映射到更具体的范围。

RequestDispatcher - forward - produces infinite loop

关于java - Url Shortener 重定向到 index.html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15209381/

相关文章:

java - 如何排除 Orika bean 映射器中的字段?

java - JBoss 7 应用程序,从 ui 启动/停止?

apache - NGINX 与 Apache?部署react时选择什么

eclipse - 从 Eclipse 在 Tomcat 上运行 Maven 项目

java - 对象良好实践

java - 由 servlet 设置的属性存储在哪里?

java - 如何使用 Android Webview 检查链接是否离线或损坏?

Java 设计 : which approach is good

performance - 引入更多过滤器是否会降低Tomcat的性能?

java - 将 HttpServletRequest 对象存储在队列中供以后处理是否危险?