gpt4 book ai didi

java - Spring MVC 相当于 ASP.NET RouteData

转载 作者:行者123 更新时间:2023-12-02 04:57:05 25 4
gpt4 key购买 nike

我正在尝试提取请求路由数据(类似于 ASP.NET 中的 RouteData 对象),以获取请求的 Controller 和操作。我正在尝试在过滤器内执行此操作,但特定的 Spring 实现就足够了。

有什么办法可以得到它吗?

谢谢。

最佳答案

这无法从过滤器内部完成。您必须使用 HandlerInterceptor 实现来完成此操作。在 preHandle 方法中,您可以像这样获取 PathVariables:

Map pathVariables = (Map)request.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE);

这是一个简短的编译示例:

实现HandlerMapping接口(interface):

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.HandlerMapping;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;

public class ParameterValidationHandlerInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
Map pathVariables = (Map) request.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE);
return true;
}

@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}

@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}

在应用程序中注册拦截器:

@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new ParameterValidationHandlerInterceptor());
}

关于java - Spring MVC 相当于 ASP.NET RouteData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28656359/

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