2010-08-07 4 views
0

Je travaille sur une application qui nécessite de télécharger des données en masse à partir d'un serveur de fichiers avec une contrainte de taille de fichier maximale fixée à 3 Mo. Cela signifie que j'aurais une capacité de téléchargement maximale de 3Mb. J'écris le flux d'entrée dans le flux de sortie de réponse. Mon problème est que je dois rediriger ma réponse à une page jsp après que je descends. Maintenant, quand je redirige en utilisant le code de ma servlet .. Je reçois une exception java.lang.IllegalStateException: ne peut pas en avant après la réponse a été commiseRediriger après avoir écrit une exception de lancement de réponse

RequestDispatcher rd = this.getServletContext().getRequestDispatcher("/save.jsp"); 
rd.forward(request, response); 

Comment puis-je télécharger redirect.Will dans un thread séparé me aider des conseils .Please ....

Répondre

2

Vous ne pouvez pas le faire. Fondamentalement, ce que «commis» signifie, c'est que le côté serveur a commencé à envoyer le message de réponse au client. À tout le moins, il a envoyé la première "ligne" de la réponse qui contient le code d'état de la réponse. Et si vous souhaitez effectuer une redirection, cela est implémenté (en partie) en définissant un code d'état 3xx dans la réponse.

Vous devez trouver un moyen de faire la redirection avant que la réponse soit validée.

0

Vous ne pouvez pas rediriger alors que la réponse a déjà été définie. Autres détails here.

+0

Lorsque je termine mon téléchargement étant dans le même servlet alors pourquoi ne puis-je rediriger ??? – Sam

+0

Vous ne pouvez pas faire cela, le servlet définit déjà une sortie. Cependant, vous pouvez utiliser AJAX push pour y parvenir, si je vous ai bien compris. – thelost

Questions connexes