gpt4 book ai didi

java - Spring MVC - 在构造函数内部重定向

转载 作者:行者123 更新时间:2023-12-04 05:13:18 26 4
gpt4 key购买 nike

如果需要,我想知道如何在 Controller 构造函数中重定向请求?

例如:在构造函数中,我需要检查一些条件,如果不满足,我想重定向到其他地方。同样,构造函数的其余部分也不会执行,也不会执行“原始跟随操作”。我想要这样的代码。

@Controller
class SampleController{
public SampleController(){
if(![some condition]){
...redirecting code...
}
...rest code...
}

...rest code...
}

编辑

如果构造函数不是一个好的选择或方法,那么有没有像 before filter 这样的选项,它总是在构造函数的每个操作之前执行,并且会在某些条件失败时重定向?

最佳答案

您可以使用拦截器:

public class CheckInterceptor implements HandlerInterceptor {

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws ServletException {
if (handler instanceof TheController) {
// or for any controller: if (handler.getClass().isAnnotationPresent(Controller.class))
if (!check()) {
redirect("/check-failure.html");
return false;
}
}
return true;
}

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

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

private void redirect(HttpServletRequest request, HttpServletResponse response, String path) throws ServletException {
try {
response.sendRedirect(request.getContextPath() + path);
} catch (IOException e) {
throw new ServletException(e);
}
}

private boolean check() {
return ...
}

}

然后在 applicationContext.xml 中注册它:
<mvc:interceptors>
<bean class="your.package.CheckInterceptor" />
</mvc:interceptors>

关于java - Spring MVC - 在构造函数内部重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14620126/

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