[英]Servlet filter change response?
我下面有servlet過濾器。
public class MyFilter extends BaseServletRequestFilter {
@Override
protected void afterExecutingFilterChain(final ServletRequest requset, FilterResponseWrapper response) throws ServletException {
//To do
}
@Override
protected void beforeExecutingFilterChain(final ServletRequest requset, final FilterResponseWrapper response) throws ServletException{
//Here request needs to be intercepted
//To do
}
}
我有上層過濾器。 我的要求是我需要攔截請求。 我需要檢查請求中的一些布爾值。 如果布爾變量為true,則應繼續進行請求處理。 如果布爾變量是false,則請求不應繼續,我需要發送一些自定義響應,如下所示。
public enum CustomStatus {
OK("Ok"),
BAD_REQUEST("BadRequest");
private final String value;
CustomStatus(String v) {
value = v;
}
public String value() {
return value;
}
public static CustomStatus fromValue(String v) {
for (CustomStatus c: CustomStatus.values()) {
if (c.value.equals(v)) {
return c;
}
}
throw new IllegalArgumentException(v);
}
}
如果請求布爾變量的值為false,那么我必須將上述自定義狀態設置為響應並返回,而不處理請求。 我怎樣才能做到這一點?
謝謝!
使用過濾器界面:
public final class XssFilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException
{
//check request...
if (ok) {
chain.doFilter(request, response);
} else {
// do something with the response
}
}
不能更具體地說明這一點,因為您沒有確切說出要檢查的布爾值在哪里(是參數,URL的一部分,cookie還是標頭?),您也沒有說清楚您想對響應做些什么。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.