comment effacer le contenu d'un PrintWriter après avoir écrit
Bonsoir, je veux savoir comment faire pour effacer les données écrites sur un PrintWriter, c'est à dire est-il possible de supprimer les données à partir d'un PrintWriter après l'impression?
ici, dans cette servlet-je imprimer du texte à la réponse et à la ligne indiqué par # je veux supprimer toutes les précédentes données papier et de l'impression de nouveaux trucs:
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
String uName = request.getParameter("uName");
String uPassword = request.getParameter("uPassword");
if (uName .equals("Islam")) {
out.println("Valid-Name");
if (uPassword !=null) {
if (uPassword .equals("Islam")) {
//# clear the writer from any printed data here
out.println("Valid-password");
} else {
out.println("");
out.println("InValid-password");
}
}
} else {
out.println("InValid-Name");
}
}
Note: j'ai essayé.flush (), mais l'ancien texte imprimé reste
rincer devrait faire l'affaire, suivie par près.
Servlet spécification fournit une façon de le faire. Veuillez voir la réponse ci-dessous
Servlet spécification fournit une façon de le faire. Veuillez voir la réponse ci-dessous
OriginalL'auteur Java Player | 2013-03-23
Vous devez vous connecter pour publier un commentaire.
Créer une mémoire
PrintWriter
à l'aide d'unStringWriter
. Vous pouvez obtenir le sous-jacent de la mémoire tampon à partir de laStringWriter
et désactivez-la si vous en avez besoin.Cette méthode ne fonctionne pas toujours. Il n'existe pas de méthode standard pour garantir la taille de la mémoire tampon sous-jacent à la Servlet PrintWriter; en fait, il n'a aucune obligation de le faire. Cette méthode fonctionne toujours.
Il fonctionnera toujours fourni, on sait ce qu'Servlet spécifications dit.
La Servlet spec dit la la réponse peut être engagée lorsque vous débordement de la mémoire tampon dans le PrintWriter. Vous ne savez pas ce que la taille de la mémoire tampon est, et il ne pouvait pas, en fait, être 0 octets. Comment est-ce que vous aider à faire de cette "toujours travailler"?
Vous pouvez toujours configurer votre taille de mémoire tampon requise. Même si vous utilisez votre propre PrintWriter, vous pouvez tampon seulement dans une certaine mesure. Ce que vous ne pouvez définir qu'à la Réponse de la taille de la mémoire tampon.
OriginalL'auteur Charles Forsythe
HttpServlteResponse.resetBuffer()
va effacer le contenu mis en mémoire tampon. Mais oui, si la réponse est déjà vidé le client qu'il va jeterIllegalStateException
. Parce qu'il est illégal pour effacer après une réponse partielle est envoyé au client.Références:
Cause de la Servlet "Réponse Déjà Commis"
OriginalL'auteur Ramesh PVK
Vous ne pouvez pas le faire avec l'original
PrintWriter
vous obtenez à partir de la réponse, qui est soutenu par leOutputStream
correspondant à la connexion du client. Ce que vous écrivez il va droit dans le navigateur via le fil (d'après certains) la mémoire tampon, de sorte que vous ne pouvez pas "reprendre".Ce que vous pouvez faire est d'écrire votre message dans certains
StringBuilder
et une fois que vous savez que c'est bon d'aller, de l'écrire à laPrintWriter
.Si vous voulez cette logique à être appliqué dans de multiples endroits (de manière transparente), vous pouvez envisager la rédaction d'un filtre qui encapsule l'original de la réponse dans un
HttpServletResponseWrapper
qui retourne un "faux"OutputStream
ouPrintWriter
et effectue cette vérification avant l'envoi sur le fil.Sur la deuxième approche générique (enveloppe réponse), ou pour savoir comment utiliser un StringBuilder ?
Sur la deuxième approche générique (enveloppe réponse)
OriginalL'auteur Costi Ciudatu
Ce qui a fini par travailler pour moi a été de changer la logique de la façon dont j'étais sortie de mes données.
C'est la structure de données j'étais sortie qu'stockés les résultats d'une recherche à l'aide du texte à partir d'un formulaire html à l'entrée.
J'étais donc à parcourir le contenu de cette structure de données et d'imprimer les documents au format html.
De compensation de la structure de données a travaillé beaucoup donné à ma servlet de configuration.
Ici était mon principal serverlet boucle logique:
OriginalL'auteur timbo7io