首页 > 解决方案 > 如何重定向到 Java/Spring 控制器中的 URL

问题描述

我正在构建一个 URL 缩短器并正在研究“跟随方法” - 例如 short.li/?stub=dishpods 应该重定向到 https://www.amazon.com/gp/product/B07CTQ8THP/ref=ppx_yo_dt_b_asin_title_o00_s00?ie= UTF8&psc=1

如何在我的控制器中设置此自动重定向?我能想到的最好的方法是打印到控制台,但我希望它自动跟随。

  @GetMapping("/")
    void follow(@RequestParam String stub) throws IOException, InterruptedException {
        ShortUrl longUrl = repository.findByShortUrl(stub);
        String longUrlString;
        if (longUrl != null) {
            longUrlString = longUrl.getShortUrl();
        } else {
            longUrlString = "https://google.com";
        }

        try {

            URL myurl = new URL(longUrlString);
            con = (HttpURLConnection) myurl.openConnection();

            con.setRequestMethod("GET");

            StringBuilder content;

            try (BufferedReader in = new BufferedReader(
                new InputStreamReader(con.getInputStream()))) {

                String line;
                content = new StringBuilder();

                while ((line = in.readLine()) != null) {

                    content.append(line);
                    content.append(System.lineSeparator());
                }
            }

            System.out.println(content.toString());

        } finally {

            con.disconnect();
        }
    }

标签: javaspringspring-bootspring-mvcjava-11

解决方案


您可以使用弹簧RedirectView

@GetMapping("/")
public RedirectView follow() {
    return new RedirectView("www.foo.baa");
}

推荐阅读