Tag: servlet filters

在web.xml中,url-pattern匹配器有没有办法排除URL?

我编写了一个filter,每次访问我的网站上的url时都需要调用它,除了CSS,JS和IMAGE文件。 所以在我的定义中,我希望有类似的东西: myAuthorizationFilter NOT /css && NOT /js && NOT /images 反正有没有这样做? 我能找到的唯一文件只有/ * 更新: 我最终使用类似于Mr.J4mes提供的答案: private static Pattern excludeUrls = Pattern.compile(“^.*/(css|js|images)/.*$”, Pattern.CASE_INSENSITIVE); private boolean isWorthyRequest(HttpServletRequest request) { String url = request.getRequestURI().toString(); Matcher m = excludeUrls.matcher(url); return (!m.matches()); }

特定于请求参数的JavafilterURL模式

我们有一种情况,我们想对包含一些特定请求参数的URL使用filter,例如: HTTP://mydomain.com/ ID = 78&formtype = simple_form&……. HTTP://mydomain.com/ ID = 788&formtype = special_form&……. 依此类推, id是在运行时获取的,我想只在formtype=special_form时才在web.xml配置filter。 应该如何实现解决方案? 可以使用正则表达式模式配置filter吗?

全局Java Servletfilter,有可能吗?

我正在为学术目的编写一个项目,其中包括其他不相关的内容,包括编写一个监视servlet / jsp响应时间的filter。 问题是filter应该在服务器中的每个已部署的Web应用程序上工作,而不仅仅是在特定的应用程序上,我找不到有关应用“全局”filter的任何信息。 它甚至可能吗? 注意:重要的是要提到我使用Apache Tomcat 7作为首选服务器。 谢谢! 米奇

在Servlet工作完成之前或之后执行doFilter()吗?

javax.servlet.Filter对象既可用于身份validation(Filter需要在任何servlet工作完成之前捕获请求),也可用于XSLT转换(servlet需要完全生成内容)。 什么时候实际执行? 我知道这是依赖于实现的(在Web容器上),但这似乎是需要所有人解决的问题。 也许为Web容器的每个Filter注册设置一个配置选项? 额外: 什么控制filter执行的顺序? 为什么FooFilter会在BarFilter之前执行?

使用Tomcat,@ WebFilter不能与web.xml中的一起使用

这是一个有效的web.xml: 30 rememberMeCookieFilter be.example.fun.jsp.filters.RememberMeCookieFilter mustBeSignedInFilter be.example.fun.jsp.filters.MustBeSignedInFilter rememberMeCookieFilter /* mustBeSignedInFilter /private/* 当我删除元素并使用以下注释时: @WebFilter(filterName=”rememberMeCookieFilter”) public class RememberMeCookieFilter implements Filter @WebFilter(filterName=”mustBeSignedInFilter”) public class MustBeSignedInFilter implements Filter 然后Tomcat 7.0.14给我以下错误: java.lang.IllegalArgumentException: Filter mapping must specify either a or a at org.apache.catalina.core.StandardContext.validateFilterMap(StandardContext.java:2956) at org.apache.catalina.core.StandardContext.addFilterMap(StandardContext.java:2915) at org.apache.catalina.deploy.WebXml.configureContext(WebXml.java:1180) at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1270) … 我按照这个问题的答案,但这对我不起作用。 以下是我的Web应用程序的依赖项: org.slf4j slf4j-api 1.6.4 ch.qos.logback logback-core 1.0.0 ch.qos.logback logback-classic 1.0.0 org.codehaus.groovy […]

servletfilter如何识别下一个目标是另一个filter还是servlet / jsp?

我们通常最终在web.xml中为servlet中的任何Filter编写/* 。 requestRedirectorFilter /action `. 现在我的疑问是java如何识别下一个servlet / jsp是哪个? 因为我们通过任何要求 request.getRequestDispatcher(“/ABCXYZ”).forward(request, (HttpServletResponse)servletResponse); 要在下一个servlet / jsp上导航,默认情况下容器将在web.xml中搜索。 在web.xml中, /*已经存在于我们使用的filter中。 究竟这里的实际问题就开始了。 如果/* [其作用类似于任何请求的通用接收器]已存在于web.xml中,那么heck容器如何知道如何跟随/ABCXYZ而不是/* ? 请在这方面分享您的观点和知识。

除了一个servlet之外,还是将所有内容过滤到Struts2?

我有一个Struts2(2.1.8.1)Web应用程序。 我的web.xml看起来像, struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter struts2 /* 这被配置为将所有请求映射到strutsfilter。 我想在我的Web应用程序中添加一个servlet。 我想将具有特定url模式的所有请求发送到该servlet。 我希望其他所有内容都可以转到我的struts servlet。 我知道我只能将“* .action”映射到struts servlet,但我讨厌.action位于我所有URL的末尾。

在Filter bean类中使用一些bean?

在我的filterbean类中,我添加了一些bean依赖项(使用@Autowired注释)。 但是在doFilter()方法中,我的所有依赖bean都是null … public class FacebookOAuth implements Filter { @Autowired private BusinessLogger logger; @Autowired private IUserSessionInfo userSessionInfo; @Autowired private FacebookOAuthHelper oAuthHelper; public void init(FilterConfig fc) throws ServletException { // Nothing to do } public void doFilter(ServletRequest sr, ServletResponse sr1, FilterChain fc) throws IOException, ServletException { // HttpServletRequest req = (HttpServletRequest)sr; HttpServletResponse res = (HttpServletResponse) sr1; […]

ServletResponse和HttpServletResponseWrapper之间的区别?

我是servlet的新手,并阅读有关filter和包装器的一些文本。 我可以理解filter,但对包装器感到困惑。 在书中,作者给出了一个例子: 如果没有包装: public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { String name = request.getParameter(“name”).trim(); try { chain.doFilter(request, response); PrintWriter out = response.getWriter(); if (name.length() == 0) { out.println(“Some message”); out.println(“”); out.println(“”); out.close(); } } catch (Throwable t) { } } 在包装的情况下: public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) […]

在Tomcat中自动检测URI编码

我有一个运行Apache Tomcat 6.x的实例,我想让它解释传入URL的字符集比默认行为更加智能。 特别是,我想实现以下映射: So%DFe => Soße So%C3%9Fe => Soße So%DF%C3%9F => (error) 我想要的bevavior可以被描述为“尝试将字节流解码为UTF-8,如果它不起作用则假设ISO-8859-1”。 在这种情况下,仅使用URIEncoding配置不起作用。 那么如何配置Tomcat以我想要的方式对请求进行编码? 我可能必须编写一个filter来接收请求(尤其是查询字符串)并将其重新编码为参数。 这是自然的方式吗?