2009-07-31 8 views
1

Merci à tout le monde à l'avance -La prise en charge pour JspWriter

Je n'ai pas encore trouver un moyen facile de le faire, mais, est-il possible de prendre en charge le traitement des données (en-têtes et tout) écrit à JspWriter? Un peu comme une liaison pour gérer ce tampon dynamiquement et ensuite contrôler la sortie vers JspWriter? Je rencontre des problèmes avec les redirections où l'en-tête de statut est déjà débusqué à cause de certains de mes inclus (je pense que c'est l'inclus, mais indépendamment de son rinçage définitivement le tampon).

Je suis au courant de la mise en taille des tampons, etc.

Je ne suis pas à l'aide d'un cadre, juste jsp pur sur tomcat.

Merci,

Sam

Répondre

3

Vous pouvez essayer d'écrire un Filter et la cartographie pour intercepter vos pages JSP:

(excerpt from web.xml) 
<filter> 
    <filter-name>jspFilter</filter-name> 
    <filter-class>com.mypackage.JspFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>jspFilter</filter-name> 
    <url-pattern>*.jsp</url-pattern> 
</filter-mapping> 

Dans votre implémentation de la méthode doFilter() vous pouvez envelopper la réponse de servlet dans votre propre en étendant HttpServletResponseWrapper et en remplaçant ses méthodes getWriter()/getOutputStream() pour utiliser StringWriter pour mettre en tampon la réponse. Après avoir invoqué la méthode doFilter() et qu'elle renvoie (ou déclenche une exception), vous pouvez faire ce que vous voulez avec la réponse mise en mémoire tampon - l'imprimer, la rediriger vers une autre page, et vous.

+0

Merci encore pour le response- J'ai trouvé ce code, je pense que ce genre de ne vous parlez: http://docstore.mik.ua/orelly/xml/jxslt/ch08_04.htm#javaxslt -CHP-8-EX-10 Serais-je capable de faire cette substitution dans le contexte de jsp (par exemple <%! %>)? Par exemple: jspFilter jspfilter.jsp jspFilter * .jsp De plus, quand est-ce que doFilter() est réellement appelé et où est-ce que cela est réellement placé? Merci, Sam –

+0

Oui, 'BufferedHttpResponseWrapper' dans le lien ci-dessus fait ce dont je parle. Je ne suis pas sûr de ce que vous entendez par "overriding dans le contexte de jsp" - que vous voulez implémenter le filtre en tant que JSP? Cela ne peut pas être fait, ça doit être une classe Java. Il y a un exemple ('MyFilter') montré dans votre lien, vous pouvez également regarder ici: http://java.sun.com/javaee/5/docs/tutorial/doc/bnagb.html La classe de filtre compilé doit être déployé dans le cadre de votre application web (vous pouvez le placer dans/WEB-INF/classes), la méthode doFilter() sera invoquée automatiquement par le conteneur servlet (Tomcat). – ChssPly76

+0

Merci beaucoup pour votre aide! –

Questions connexes