【发布时间】:2019-07-06 16:13:48
【问题描述】:
我继承了一个 JAVA Spring MVC Web 应用程序。我对 Spring MVC 完全陌生,并且在 JAVA 方面非常新手。但我的第一个任务是将应用程序的 URL 添加到已经通过代码生成的电子邮件中。
它基本上是用户单击链接并直接转到特定页面的一种方式。但是,当我尝试在这里看到的所有涉及HttpServletRequest 和更重要的是getRequestURL() 的各种事情时。
Controller 接管后才能获取 URL。我需要的是我将称为引用 URL 的内容——我在浏览器中看到的应用程序 URL。
控制器是一个 REST 服务并返回 localhost:8181/etc/etc,它甚至不包括站点的域。我已经尝试过各种方法,如getHeader("Referer") 等。同样,它们只是返回后控制器 URL。我尝试添加代码以获取正确的 URL 预控制器,然后将其传递给控制器方法。仍然给我后控制器 URL。
【问题讨论】:
-
为了在控制器开始处理之前获取请求,使用HttpFilter。要获取域,请尝试阅读请求的
Host标头 (request.getHeader("Host")) -
@ValentinCarnu HttpFilter 是一个低级概念。让它留在纯 Servlets 应用程序上。使用 Spring,我们可以使用更抽象的方法。
-
@LppEdd 过滤器在处理请求时提供了更多选项,在Spring HandlerInterceptor vs Servlet Filters 线程上有一些关于差异的详细信息。 Spring 框架还利用了过滤器和拦截器
标签: java spring-mvc