puis-je accéder à l'objet de session de l'intérieur d'une fonction où la demande d'objet n'est pas présente?
Je sais en Java Nous accédons à une session comme celle-ci: p>
public class ABC extends HttpServlet { public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException { .......... ........... myFun1(x,y,z); } private void myFun1(int x, int y,long z) { ......... myFun2(a,b); } private void myFun2(int a,String b) { ......... // Need Session here } }
5 Réponses :
Cela dépend de ce que vous entendez par "lorsque la demande d'objet n'est pas présent". Vous pourrait em> avoir une variable de fil-thread-local qui définit la "demande de courant de ce fil" tôt dans le servlet ou quoi que ce soit à l'exécution (vous n'avez pas fait clairement). Ensuite, vous pourriez obtenir sur "la demande actuelle dans ce fil" de n'importe où et obtenez la session de cette façon. (Ou le long des mêmes lignes, vous pouvez définir la session actuelle em> au lieu de la requête actuelle em> dans la variable de thread-local.) P>
Ce n'est pas terriblement joli cependant, et vous avez des problèmes si vous voulez faire quelque chose sur un fil différent. Passer la demande ou la session sous forme de dépendance est généralement plus propre. P>
L'objet de demande de passage est la solution,
public class ABC extends HttpServlet { public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException { .......... ........... myFun1(x,y,z,req); } private void myFun1(int x, int y,long z,HttpServletRequest req) { ......... myFun2(a,b,req); } private void myFun2(int a,String b,HttpServletRequest req) { ......... // Need Session here } }
En règle générale, si vous souhaitez accéder à la session HTTP à partir d'un endroit où l'objet de la demande n'est pas disponible, vous pouvez avoir des problèmes de conception dans votre application et vous devez repenser les préoccupations, la superposition, etc. P>
Si vous implémentez Technologie JSF dans votre application, vous pouvez tout accéder en appelant; car il s'agit d'une instance Singleton récupérée, vous pouvez y accéder n'importe où dans votre couche de présentation. P> Toutefois, la mise en œuvre de la JSF est probablement légèrement excédant à cet effet que vous Il suffira probablement de faire beaucoup de changements dans vos couches de configuration et de présentation à l'adapter à celle-ci. P> Cela dit, si vous décidez de descendre cette route, vous pouvez également penser à utiliser MyFaces , qui est une API fantastique pour ceux utilisant JSF dans leurs applications. P> P>
Cela ne renvoie pas un singleton. Il renvoie une référence de lignes filtrantes.
Merci Balus, j'essayais de garder cela simple mais vous avez totalement raison.
Nous devons configurer un auditeur de type httpsandlistener code> Sa méthode sera appelée au temps de création de session et au temps de distraction. Si vous utilisez cela en préparant l'objet de cette classe, vous pouvez obtenir l'objet de session simplement ... P>
Je reçois un gigle de «temps de distraction».
Si vous n'avez pas la demande particulière, comment sauriez-vous quelle session pour obtenir? Il pourrait y avoir plusieurs sessions en direct dans le processus.
Merci, je vais passer l'objet de la demande aux fonctions de paramètre supplémentaire.