![](/img/trans.png)
[英]How to return required parameters as json response from pojo class in spring boot?
[英]spring boot - returning pojo response from filter
我想创建一个具有自动装配构造函数参数的过滤器/bean,并且对于对某些 url 的每个请求检查标头并返回一个 pojo 错误(或理想情况下抛出将由 spring 处理的异常),或通过过滤器链传递请求. 就像是
@Bean
class MyFilter {
@Autowired
public MyFilter(MyService myService) {...}
public doFilter(request, response, chain) {
if (request. ...) {
throw new ResponseStatusException(HttpStatus.BAD_REQUEST)
// or return new MyErrorPojo()
}
return chain.doFilter(request, response)
}
}
春天的做法是什么?
也许这会帮助你。
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
@Component
@Order( 1 )
public class RequestFilter implements Filter
{
@Override
public void doFilter(
ServletRequest request,
ServletResponse response,
FilterChain chain ) throws IOException, ServletException
{
HttpServletRequest req = ( HttpServletRequest ) request;
if( false )
{
response.getWriter().println( "error" );
throw new ServletException( "" );
}
else
{
doFilter( request, response, chain );
}
}
}
我认为在这里你有一个相当令人困惑的技术组合:
过滤器属于 servlet 规范,并在 HTTP 请求抽象级别上运行。
一旦过滤器链通过并到达 DispatcherServlet(spring mvc 的入口点),spring 就会与所有 MVC 好东西一起发挥作用。
因此,如果您想检查标题,则有一个名为org.springframework.web.servlet.handler.HandlerInterceptorAdapter
的抽象
基本上可以创建一个实现这个接口的类,并检查方法中的头:属于这个接口
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
如您所见,您可以访问请求并可以检查那里的标头。
现在我自己没有使用过(现在无法检查)但它需要在 WebMvcConfigurer 级别进行配置,该配置具有特殊的“addInterceptor”方法。 所以我不能确认只添加一个创建类型的 bean 就足够了,或者你可以用 WebMvcConfigurer 配置它
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.