gpt4 book ai didi

java - Url Shortener 重定向到 index.html

转载 作者:行者123 更新时间:2023-11-28 23:45:06 25 4
gpt4 key购买 nike

是的,又一个用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com