我有下面的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
}
}
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);
}
}
使用筛选器接口:
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,还是header?),也没有确切地说明要对响应执行什么操作。
在检查完成之前,我是否必须在包装器中捕获一些东西以防止响应发送到客户机?
问题内容: Servlet和Filter有什么区别?您建议使用什么来授权页面? 问题答案: 当你要根据特定条件过滤和/或修改请求时,请使用。使用时要控制,预处理和/或后处理请求。 在Java EE的教程中提到有关筛选如下: 筛选器是可以转换请求或响应的标头和内容(或两者)的对象。过滤器与Web组件的不同之处在于,过滤器本身通常不会创建响应。相反,过滤器提供的功能可以“附加”到任何类型的Web资源。
Servlet 过滤器可以动态地拦截请求和响应,以变换或使用包含在请求或响应中的信息。 可以将一个或多个 Servlet 过滤器附加到一个 Servlet 或一组 Servlet。Servlet 过滤器也可以附加到 JavaServer Pages (JSP) 文件和 HTML 页面。调用 Servlet 前调用所有附加的 Servlet 过滤器。 Servlet 过滤器是可用于 Servlet
问题内容: 我有RESTful Web服务,该服务由javascript使用。该服务返回的内容类型为“ application / json”。但是,对于IE,内容类型必须为“ text / html”。因此,当检测到IE作为客户端时,我编写了一个过滤器和包装程序来更改内容类型。我的逻辑似乎对内容类型没有影响。我究竟做错了什么? 过滤器: 包装器: 问题答案: 我找到了答案。诀窍是防止我的Web服
问题内容: 现在可以将Spring中的 s配置为仅使用来在某些URL上调用。 Servlet过滤器可以实现相同的功能(日志记录,安全性等)。那么应该使用哪一个呢? 我认为使用Interceptor,可以使用对象与模型一起使用,因此它具有更多的优势。谁能提出过滤器或拦截器比其他方法更具优势的方案? 问题答案: 该接口的JavaDoc本身有两个段落讨论这个问题: HandlerInterceptor基
问题内容: 现有的Web应用程序正在Tomcat 4.1上运行。页面存在XSS问题,但是我无法修改源代码。我决定编写一个servlet过滤器以在页面看到参数之前对其进行清理。 我想这样编写一个Filter类: 但是ServletRequest.setParameter不存在。 在将请求向下传递之前,如何更改请求参数的值? 问题答案: 如前所述,没有setParameter方法。这是故意的,因为该类