Tag: servlet filters

在filter中添加标头响应?

我需要在每个响应中添加标头。 我打算在下面做 public class MyFilter extends OncePerRequestFilter { @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { filterChain.doFilter(request, response); response.addHeader(“Access-Control-Allow-Origin”, “*”); } } 我想在filterChain.doFilter(request, response)之后执行它filterChain.doFilter(request, response)这样一旦控制器处理它,我只需在返回客户端之前添加头。 这是对的吗 ? 但按照如何编写响应filter? 在chain.doFilter返回之后,对响应做任何事都为时已晚。 此时,整个响应已发送到客户端,您的代码无法访问它。 以上陈述对我来说不合适。 我不能在filterChain.doFilter(request, response)之后添加标头吗? 如果不是为什么? 我正在使用spring mvc。

从REST Webservice调用Servlet之前的filter

我编写了一个REST Web服务方法setToken(@Context HttpServletRequest request, @Context HttpServletResponse response, @PathParam(“token”) String token) , HeaderFilter和SampleServlet 。 下面是Web服务类`@Path(“/ service”)public class Service { /*@Context private ServletContext servletContext; @Context private HttpServletRequest request; @Context private HttpServletResponse response;*/ @Path(“/val/{token}”) @GET @Produces(“application/xml”) public String setToken(@Context HttpServletRequest request, @Context HttpServletResponse response, @PathParam(“token”) String token) throws ServletException, IOException { String value=token; if(request==null){ System.out.println(“Request null”); } System.out.println(“Token: […]

spring的mvc。 不区分大小写的get参数映射

根据这个答案,我尝试编写我的代码: POJO: class MyBean{ public String getValueName() { return valueName; } public void setValueName(String valueName) { this.valueName = valueName; } String valueName; } 内控制器: @ModelAttribute public MyBean createMyBean() { return new MyBean(); } @RequestMapping(value = “/getMyBean”, method = RequestMethod.GET) public String getMyBean(@ModelAttribute MyBean myBean) { System.out.println(myBean.getValueName()); return “pathToJsp”; } web.xml配置: caseInsensitiveFilter com.terminal.interceptor.CaseInsensitiveRequestFilter caseInsensitiveFilter /* 过滤: […]

响应正在提交并且doFilter链被破坏

为了这是我需要发生的事情: 请求blah.com/test ServletFilter A – 创建配置文件,然后调用chain.doFilter ServletFilter B(由于url模式不匹配而被跳过) Servlet – 改变配置文件, repsonse.setStatus和response.addHeader(“Location”, target) ServletFilter A – 应该根据配置文件创建一个cookie 实际发生了什么: ServletFilter A – 创建配置文件,然后调用chain.doFilter ServletFilter B(由于url模式不匹配而被跳过) Servlet – 改变配置文件, repsonse.setStatus和response.addHeader(“Location”, target) 提交重定向,ServletFilter A不完成任务 我认为这可能与您可以在ServletFilter配置中设置的调度程序值有关。 有任何想法吗?

如何将struts2中的charset更改为utf-8

嗨,我有测试场,我想把测试不是用英语(例如俄语),但在我的动作课中,我得到的只是文字而不是文字????????? 。 我试图编写简单的filter,它描述了struts2中的参数字符集转换 但它仍然无法工作..有人可以帮助我 更新我有这个 我想用俄语进行测试,然后将其发送到我的行动。但是在我的动作课中,我得到的只是文字而不是文字????????? 解决这个问题我需要将charset更改为utf8而不是win1251。

ServletRequest中的会话变量

我需要通过filter访问会话变量。 我甚至不知道是否有可能。 在实践中,问题是来自javax.Servlet.Filter实现的doFilter方法类型是ServletRequest ,而HttpServletinheritance了类,doPost方法参数request是HttpServletRequest。 我可以在Filter中访问ServletRequest中的会话吗? 我应该这样做吗? 你能为我推荐什么? 谢谢!

示例Servletfilter捕获并阻止请求可疑URL的IP

避免重新开发车轮。 是否有任何示例Java EE servletfilter负责一些基本的安全检查/即 如果rootkit命中服务器,则阻止Web请求一段时间,即使用以.exe结尾或包含“../../ ..”的URL。 限制或阻止正在发出意外大量请求的IP。 我也想知道是否有类似于Thread.sleep(1000); 在servletfilter中对那些特定类型的请求不会是一件坏事。

调用filter的顺序是什么?

假设我在我的web.xml中有以下内容 F1 /XYZ/* F2 /XYZ/abc.do F3 /* 如果请求以/XYZ/abc.do.And为什么,将调用filter的顺序是什么?

Servletfilter:非常简单的限速filter,允许突发

我想添加一个非常简单的filter来执行每IP速率限制,但仍然允许突发,有点像iptables允许做的。 我不想安装整个厨房水槽:我只需要一个实现该function的Filter类。 什么是一个好的数据结构/算法,允许做一个简单的“速率限制但允许短暂的突发”? 例如,如果用户尝试每分钟执行的操作超过’x’GET / POST,我想提供HTTP错误代码,但我仍然想让同一个用户“爆发”到’y’(其中y> x)直到他击中爆裂帽。 仅仅是为了比较,这里是如何使用iptables配置类似的速率限制与突发(这只是一个例子,显示我在说什么,即使在我的情况下它不是关于设置速率限制+ TCP TCP数据包突发): iptables -A INPUT -p tcp –syn -m limit –limit 1/s –limit-burst 5

会话validationfilter,在会话过期时注销用户

我有一个会话validationfilter,在会话过期时注销用户。 这是一段代码,但这不起作用。 不工作意味着即使会话过期,也不会重定向到登录页面。 请帮我解决这个问题。 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletResponse res = (HttpServletResponse) response; HttpServletRequest req = (HttpServletRequest) request; HttpSession s = req.getSession(false); if (s==null) { //redirect to login page with session expiry message } else { chain.doFilter(request, response); } }