2016-01-14 1 views
0

J'appelle le method1 de servlet1 de service() de servlet2. Je veux lancer sendError(5xx) de servlet1. Mais il faut l'objet de réponse de servlet2 que je ne passe pas. Toute autre méthode pour lancer les codes d'état HTTP?Obtention de l'objet de réponse d'une servlet dans sa superclasse

public class servlet2 extends servlet1{ 

     public void service(HttpServletRequest request, HttpServletResponse response){ 

     } 
     } 

     public abstract class servlet1 extends HTTPServlet{ 

     public void init(ServletConfig config) throws ServletException { 
     } 
public boolean method1() 
{ 
return true; 
} 
     } 
+0

Comment appelez-vous l'une servlet de l'autre? Et pourquoi ne passez-vous pas les objets dont vous avez besoin? – Thilo

+0

'servlet2' étend 'servlet1'. 'method1()' dans 'servlet1' sera appelé depuis 'servlet2'. 'sendError()' doit être appelé dans 'method1()'. L'objet 'response' de la requête 'method1()' ne peut pas être passé. – Programmer

Répondre

1

Si vous invoquez une coutume method1 de servlet1, de servlet2, le servlet1 ne jouent pas un vrai Servlet, mais comme un objet normal. Dans ce cas, le servlet1 n'a aucune HttpServletResponse à envoyer une erreur.

La méthode normale d'envoi du contrôle d'une servlet à une autre est l'utilisation d'un RequestDispatcher. Par exemple, exécuter cette phrase de servlet2:

getServletContext().getNamedDispatcher("servlet1").forward(request, response); 

En servlet1, vous recevez la demande dans la méthode service, avec recevoir comme paramètre un HttpServletResponse, que vous pouvez utiliser pour envoyer l'erreur.

+0

Oui, cette approche fonctionne correctement lorsque nous avons un objet de réponse. Je n'obtiens pas l'objet de réponse dans servlet1. Y at-il une autre méthode que nous pouvons gérer cela? – Programmer

+0

Pourquoi vous n'avez pas l'objet HttpServletResponse dans servlet1? Si vous utilisez le répartiteur, comme l'exemple que j'ai écrit, le répartiteur appelle la méthode 'service' dans le servlet1, avec les paramètres' HttpServletRequest' et 'HttpServletResponse'. L'appel direct d'une servlet à partir d'une autre servlet, sans utiliser de dispathcer, est incorrect. Et il y a ** NO ** façon d'envoyer une erreur sans un 'HttpServletResponse' –

+0

Oui avec Dispacher cela fonctionne bien ... – Programmer