2009-12-01 5 views

Répondre

2

Comme ce qui a probablement:

<jsp:include page="/path/to/servlet" /> 

Plus ici: jsp docs

+0

C'est exactement le contraire de ce que demande OP. – schlingel

+0

Impossible de voir comment cela est vrai ... – inkredibl

+0

Problème: Vous êtes dans une servlet et vous voulez rendre un JSP spécifique. Solution: Inclure le résultat du servlet dans la JSP. (Quoi?) Mais ce n'est pas ce que je veux. Je veux envoyer l'utilisateur après une action spécifique à un JSP spécifique. Cela peut être le même ou ils peuvent différer en ce qui concerne les paramètres (page d'erreur, page de succès, etc.) – schlingel

0

Pour transmettre une demande/réponse de d'un servlet à quelque chose d'autre (par exemple JSP), vous voulez regarder la classe RequestDispatcher . La classe ServletContext a une méthode pour obtenir un répartiteur, qui peut être appelée depuis une servlet.

Par exemple (au sein de la méthode doPost/doGet d'un servlet):

RequestDispatcher rd = getServletConfig().getServletContext() 
    .getRequestDispatcher("/jsp/myfile.jsp").forward(request,response); 
23

Normalement, vous ne pas utiliser un servlet pour générer une sortie HTML. Vous utilisez normalement JSP/EL pour cela. L'utilisation de out.write et de consorts pour diffuser du contenu HTML est considérée comme une mauvaise pratique. Mieux utiliser les attributions de requête.

Par exemple:

protected void doGet(HttpServletRequest request, HttpServletResponse response) { 
    Object data = "Some data, can be a String or a Javabean"; 
    request.setAttribute("data", data); 
    request.getRequestDispatcher("/WEB-INF/page.jsp").forward(request, response); 
} 

Plan dans web.xml sur un <url-pattern> de par exemple /page. Placez le JSP au /WEB-INF pour empêcher l'accès direct. Ensuite, dans le JSP, vous pouvez utiliser EL (Expression Language) pour accéder aux attributs scope:

<p>The data from servlet: ${data}</p> 

Appelez le servlet par http://example.com/context/page. Aussi simple que cela. De cette façon, vous contrôlez la sortie et la présentation à un endroit, le JSP.

+0

Que Q.it fonctionne – pavan

0
getServletConfig().getServletContext() 
    .getRequestDispatcher("/jsp/myfile.jsp").forward(request,response); 

est le type VOID, il ne peut pas revenir RequestDispatcher e.

+0

Répondez-vous à une autre question? – SiKing

+0

@SiKing Ceci est un commentaire pour répondre http://stackoverflow.com/a/1824967/188107 ci-dessus. FWIW c'est même un commentaire marginalement utile bien qu'une modification serait plus appropriée. J'ai essayé de le signaler mais ça a été contesté ... – musiKk