Spring Boot获取浏览器请求URL

时间:2018-04-13 21:35:04

标签: java spring spring-boot

我有一个简单的休息控制器,可以捕获错误。我想获得浏览器发送给服务器的实际URL,但是servlet给了我一个不同的URL。

如果我导航到class MainProgram(): def __init__(self): # etc. self.frame_1 = FirstFrame(self) self.frame_2 = SecondFrame(self) # ... class SecondFrame(): def __init__(self, parent): self.parentobj = parent self.parent = parent.win # etc. # and so on def b_fuction(self): self.var2 = self.parentobj.frame_1.var1 ,则会触发404错误,并将其路由到定义的127.0.0.1/abc处理程序。但是,输出结果为/error而不是127.0.0.1/error。如何获取原始网址?

127.0.0.1/abc

1 个答案:

答案 0 :(得分:0)

您可以定义自己的originalUri,在/error映射处理之前,将原始请求URI保存为您请求的属性:

@RequestMapping("/error")
public String error(HttpServletRequest request) {
  System.out.println("ERR: " + request.getAttribute("originalUri"));
  return "ERR";
}

然后在您正在使用的forward()映射实现中读取新的ResponseEntity属性:

@ExceptionHandler

您还可以尝试扩展Spring MVC中可用的其他错误处理类来添加此行为,例如ResponseEntityExceptionHandler。请注意,我的示例中的 public class YourServlet extends AbstractImageServlet { protected Layer createLayer(AbstractImageServlet.ImageContext imageContext) throws RepositoryException, IOException { Layer resized = ImageHelper.resize(layer, new Dimension(), new Dimension(0, 0), new Dimension(768, 768)); } protected void writeLayer(SlingHttpServletRequest request, SlingHttpServletResponse response, AbstractImageServlet.ImageContext context, Layer layer, double quality) throws IOException, RepositoryException { super.writeLayer(request, response, context, layer, QUALITY); } } 可能会被视为肤浅,因为可以从{{1}}返回{{1}}。