2010-09-07 4 views
0

Je suis novice aux servlets et aux JSP. J'essaye d'appeler le servlet de logger de jsp. L'exigence est telle que la servlet renvoie le contrôle à jsp (après la journalisation des événements). La servlet doit être transparente, c'est-à-dire en fonction des performances, la fonctionnalité de journalisation peut être désactivée.Appel des servlets à partir de JSP

Est-ce que JSP: INCLURE la seule façon d'y aller? Y a-t-il d'autres approches?

Merci,

Winston.

+0

Que ferait cette servlet de logger? – skaffman

Répondre

0

Vous ne pouvez pas appeler une servlet directement à partir d'une JSP. Toutefois, vous pouvez envoyer un redirect. Cela indiquera au navigateur qu'il doit rechercher la ressource dans un autre emplacement.

De JSP

<% 
String destination ="/jsp/destination.jsp";   
response.sendRedirect(response.encodeRedirectURL(destination)); 
%> 

De Serlet

protected void doGet(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException { 

String destination ="/jsp/destination.jsp";   
response.sendRedirect(response.encodeRedirectURL(destination)); 

} 
} 

Si votre but est "l'exploitation", vous devez utiliser un Filter. Un filtre est comme un servlet léger qui ne génère pas son propre contenu, mais qui se connecte au processus de gestion des requêtes et s'exécute en plus du traitement de page normal.

Une recommandation forte est d'utiliser Servlet/JSP dans un chemin de type MVC. Il sépare les données de l'application, l'interface utilisateur et la logique de contrôle en trois entités distinctes. La requête est gérée par une servlet (le contrôleur) qui initialise tout JavaBeans (le modèle) nécessaire pour répondre à la demande de l'utilisateur. La servlet (le contrôleur) transmet alors la requête, qui contient les JavaBeans (le modèle), à ​​une page JSP (la vue) qui ne contient que la syntaxe HTML et JSTL.

+0

-1 pour "ne peut pas" et l'approche scriptlet, +1 pour le filtre, c'est la bonne façon. – BalusC

+0

:(Je voulais juste souligner que l'appel d'une servlet à partir d'un jsp n'est pas la bonne façon de penser.Tout, pour les -1 + 1 = 0: D –

+1

L'un des moyens est «» comme déjà mentionné par le Une autre méthode (plus front-controller-pattern-ish) consiste à appeler d'abord le servlet au lieu de JSP, puis à faire appel à RequestDispatcher # forward() 'à la méthode JSP dans' doGet() 'comme indiqué plus haut. tout, l'OP a vraiment besoin d'un 'Filter' ici :) – BalusC

Questions connexes