Bonjour,
J'ai un filtre qui fait des traitement sur la réponse renvoyée en modifiant les urls des liens présents sur la page renvoyé qui sont des liens vers l'exterieur en les redirigenat vers une JSP qui elle même va rediriger vers les memes lien externes.
Le problème c'est que j'ai une exception au niveau de mon filtre:
La reqûete est bien redirigée vers la JSP mais c au moment ou le reqête vers la JSP passe par le filtre qu'est générée l'excerption : java.lang.IllegalStateException
at org.apache.coyote.tomcat5.CoyoteResponseFacade.resetBuffer(CoyoteResponseFacade.java:247)
at javax.servlet.ServletResponseWrapper.resetBuffer(ServletResponseWrapper.java:191)
Code du filtre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletResponseWrapper wrapper = new HttpServletResponseWrapper((HttpServletResponse) response); chain.doFilter(request, wrapper); ResponseContent content = wrapper.getContent(); content.getOutputStream(); PrintWriter pws = new PrintWriter(wrapper.getOutputStream()); String chaine = new String(content.getContent()); String chaine2 = chaine.replaceAll("href=\"(http://[^\"]+)\"", "href=\"/application/redirect.jsp?url=$1\""); try { wrapper.resetBuffer(); } catch (Exception e) { // TODO: handle exception logger_.debug("erreur reset buffer",e); } pws.write(chaine2); pws.flush(); pws.close(); }
Code JSP :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Example</title> </head> <body> <% String url = request.getParameter("url"); response.sendRedirect(url);%> </body> </html>
Partager