![](/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.