Comment faire pour rediriger la réponse d'une servlet dans la même page jsp à partir de là que nous avons obtenu la demande
Comment puis-je rediriger une réponse d'un servlet, à la même page jsp à partir d'où je me le demande. Supposons que j'ai un onglet appelé statut sur ma page jsp
http://localhost:8080/Example/status.jsp
. Maintenant, quand je envoyer une demande et quand je reçois une réponse,il doit afficher la réponse sur la même page, c'est à dire. il doit montrer une réaction sur
http://localhost:8080/Example/status.
jsp. Mais il me montre la réponse
http://localhost:8080/Example/Status
où l'État est l'url-pattern dans web.xml fichier. Merci de toute aide est appréciée. ci-dessous mon code.
Comment puis-je obtenir la réponse en l'état.jsp.
protected void doPost(HttpServletRequest req, HttpServletResponse res) throws
IOException {
try{
String showstatus =req.getParameter("showstatus");
PrintWriter out = res.getWriter();
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("C:\\tools\\server\\util stat -a" );
BufferedReader stdInput = new BufferedReader(new
InputStreamReader(pr.getInputStream()));
BufferedReader input = new BufferedReader(stdInput);
String stat = "";
while((stat = input.readLine()) != null){
out.println(stat);
}
}
catch (Throwable t)
{
t.printStackTrace();
}
finally {
} }
CODE JSP:
<div id= "status" style="display:none;">
<FORM action="status" METHOD="POST">
<input type=submit name=showstatus
id=txtSubmit value=Status />
</FORM>
</div>
WEB.XML:
<servlet>
<servlet-name>Status</servlet-name>
<servlet-class>com.emc.clp.license.Status</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Status</servlet-name>
<url-pattern>/status</url-pattern>
</servlet-mapping>
- Voulez-vous l'état.jsp pour traiter le formulaire par la poste? Si oui, vous avez besoin de changer la forme de l'action de
/Example/status.jsp
. Comme il est maintenant, la demande va être traitée par la servlet parce que votre action est justestatus
. - Merci pour la réponse rapide. Je n'ai pas de statut.jsp.Dois-je en créer un?
- Vous n'avez pas de statut.jsp?! Dans votre question: "Supposons que j'ai un onglet appelé statut sur ma page jsp localhost:8080/Exemple/l'état.jsp"
- oups désolé, c'était mon mauvais. J'ai de l'état.jsp.J'ai changé la forme de l'action, comme indiqué ci-dessus, il indique l'url que http:....Example/status.jsp mais la page est vide. il n'y a pas de réponse à ça
- Merci de m'aider dans la résolution de ce problème.
- Si votre objectif est de montrer à l'utilisateur la sortie de l'util de commande que vous êtes en cours d'exécution sur le serveur?
- Oui, merci de m'aider dans understandin comment faire cela.
Vous devez vous connecter pour publier un commentaire.
Dans votre servlet, plutôt que de l'impression de la sortie de
util
directement à la réponse, il faut le tenir dans la mémoire et la transmettre à la jsp:Dans votre jsp, je suppose que vous avez un div ou quelque chose où vous voulez voir le résultat:
Notez que j'ai ajouté une barre oblique dans l'action du formulaire. Si votre utilisateur soumet le formulaire à partir de
/Example/status.jsp
, puis le chemin d'accès relatif aurait le post va/Example/status
, mais votre servlet ne gère que les demandes de/status
.Votre demande objet,
req
, a une carte d'attributs, et vous pouvez mettre les objets pertinents à l'aide de la méthode setAttribute() sur la demande. La demande répartiteur transmet votre demande et de la réponse des objets sur une autre ressource (jsp) pour le traitement. Les jsp peuvent accéder à ces valeurs par nom, à l'aide de la EL la notation ci-dessus.La
display:none
dans votre style en ligne sera toujours possible de prévenir cette forme d'être vu sur la page si il charge de cette façon. Je pense que le plus apparent moyen d'afficher ce serait avec javascript côté client. Vous aurez besoin de changer la valeur d'affichage lorsque l'onglet est sélectionné. Vous ne mentionnez pas ce que votre onglet éléments, mais disons qu'ils sont divs. Vous pouvez écrire une fonction javascript pour charger le formulaire, ou vous pouvez même le faire en ligne: