Réponses aux problèmes que vous pouvez rencontrer dans JSP
1. Comment mélanger Jsp et SSI #include ?
Le HTML pur peut être inclus dans JSP comme suit :
< !--#include file="data.inc"-- >
Mais si data.inc contient du CODE JSP, nous pouvons utiliser :
< <A href=" mailto:%@include">%@include</A > file="data.inc"% > </P>
2. Comment exécuter un JSP thread-safe ?
Ajoutez simplement la commande suivante
< %@ page isThreadSafe="false" % > </P>
3. Comment JSP traite-t-il les données dans HTML FORM ?
Utilisez simplement l'objet de requête intégré, comme suit :
<%
Élément de chaîne = request.getParameter("item");
int howMany = new Integer(request.getParameter("units")).intvalue();
% > </P>
4. Comment inclure un fichier statique dans JSP ?
L'inclusion statique est la suivante : < %@ include file="copyright.html" % >
L'inclusion dynamique est la suivante : < jsp:include page="copyright.html" flush="true"/ > </P>
5. Comment utiliser les commentaires dans JSP ?
Il existe quatre méthodes principales :
1. < %-- et --% >
2. //
3. /**et**/
4. < !--et-- > </P>
6. Comment effectuer une redirection de navigation dans JSP ?
Utilisez la méthode suivante : response.sendRedirect(" <A href=" http://ybwen.home.chinaren.com/index.html">http://ybwen.home.chinaren.com/index.html</ A >");
Vous pouvez également modifier physiquement l'attribut HTTP HEADER, comme suit :
<%
réponse.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
String newLocn="/newpath/index.html";
réponse.setHeader("Emplacement",newLocn);
% > </P>
7. Comment empêcher la sortie dans JSP ou SERVLET d'être enregistrée dans CACHE par le NAVIGATEUR ?
Ajoutez simplement le script suivant au début du fichier JSP :
<%
réponse.setHeader("Cache-Control","no-store"); //HTTP 1.1
réponse.setHeader("Pragma", "pas de cache"); //HTTP 1.0
réponse.setDateHeader ("Expires", 0); //empêche la mise en cache sur le serveur proxy
% > </P>
8. Comment paramétrer COOKIE dans JSP ?
Le COOKIE est envoyé dans le cadre du HTTP HEADER et peut être défini comme suit :
<%
Cookie moncookie = new Cookie("aName","avalue");
réponse.addCookie(moncookie);
% > </P>
9. Comment supprimer un COOKIE dans JSP ?
<%
Cookie killMyCookie = new Cookie("moncookie", null);
killMyCookie.setMaxAge(0);
killMyCookie.setPath("/");
réponse.addCookie(killMyCookie);
% > </P>
10. Comment arrêter l'exécution de JSP pendant le traitement d'une requête JSP est la suivante :
<%
if (request.getParameter("wen") != null) {
//faire quelque chose
} autre {
retour;
}
% > </P>
11. Comment définir des méthodes dans JSP Vous pouvez définir des méthodes, mais vous ne pouvez pas accéder directement aux objets intégrés de JSP, mais les transmettre via des méthodes paramètres. comme suit:
<% !
public String howBadFrom (HttpServletRequest req) {
HttpSession ses = req.getSession();
...
return req.getRemoteHost();
}
%>
<%
out.print("en général, lao lee n'est pas un méchant ");
%>
< %= howBadFrom(request) % > </P>
12. Si le NAVIGATEUR a désactivé les COOKIES, comment puis-je ouvrir SESSION dans JSP pour suivre et utiliser la réécriture d'URL, comme suit :
bonjour1.jsp
< %@ page session="true" % >
<%
Nombre entier = nouvel entier (100) ;
session.putvalue("num",num);
URL de chaîne =response.encodeURL("hello2.jsp");
%>
< a href=< %=url% > >hello2.jsp< /a > </P>
bonjour2.jsp
< %@ page session="true" % >
<%
Entier i= (Integer )session.getvalue("num");
out.println("La valeur numérique dans la session est "+i.intvalue());
% > </P>
13. EMAIL peut-il être envoyé en JSP ? Vous pouvez utiliser le package spécial de SUN : le package sun.net.smtp. Le script suivant utilise la classe SmtpClient pour envoyer EMAIL.
< %@ page import="sun.net.smtp.SmtpClient, java.io.*" % >
<%
Chaîne from=" <A href=" mailto:[email protected]">[email protected]</A >";
Chaîne à=" <A href=" mailto:[email protected]">[email protected]</A >, <A href=" mailto:[email protected]">[email protected]. cn</A >";
essayer{
Client SmtpClient = new SmtpClient("mail.xxxxx.xxx");
client.from(from);
client.to(to);
Message PrintStream = client.startMessage();
message.println("À : " + à);
message.println("Sujet : Envoi d'e-mail depuis JSP!");
message.println("Ceci a été envoyé depuis une page JSP !");
message.println();
message.println("Cool ! :-)");
message.println();
message.println("Bon garçon");
message.println("Je suis sur Genius.com");
message.println();
client.closeServer();
}
attraper (IOException e){
System.out.println("ERREUR D'ENVOI D'EMAIL :"+e);
}
% > </P>
14. Puis-je appeler une page d'erreur JSP dans SERVLET ? Bien sûr, il n'y a aucun problème. Ce qui suit montre comment appeler une page d'erreur JSP dans une unité logique de contrôle SERVLET.
protected void sendErrorRedirect (demande HttpServletRequest,
Réponse HttpServletResponse, chaîne errorPageURL,
Jetable e)
lance ServletException, IOException {
request.setAttribute ("javax.servlet.jsp.jspException", e);
getServletConfig().getServletContext().
getRequestDispatcher(errorPageURL).forward(demande,
réponse);
} </P>
public void doPost (demande HttpServletRequest, réponse HttpServletResponse) {
essayer {
//faire quelque chose
} catch (Exception ex) {
essayer {
sendErrorRedirect(request,response,"/jsp/MyErrorPage.jsp",ex);
} attraper (Exception e) {
e.printStackTrace();
}
}
} </P>
15. Comment JSP et APPLET communiquent-ils ?
Comment JSP communique avec EJB SessionBean L'extrait de code suivant fournit une bonne démonstration
< %@ page import="javax.naming.*, javax.rmi.PortableRemoteObject,
foo.AccountHome, foo.Account" % >
<% !
//Définir une référence globale à l'instance d'interface SessionBeanHome
CompteAccueil accHome=null; </P>
public void jspInit() {
//Obtenir l'instance de l'interface d'accueil
InitialContext cntxt = new InitialContext( );
Objet ref= cntxt.lookup("java:comp/env/ejb/AccountEJB");
accHome = (AccountHome)PortableRemoteObject.narrow(ref,AccountHome.class);
}
%>
<%
//Instanciation du SessionBean
Compte compte = accHome.create();
//Appelle la méthode distante
acct.doWhatever(...);
// et ainsi de suite
% > </P>
16. Comment puis-je empêcher l'affichage des champs contenant des champs « nuls » dans mes champs de texte de saisie HTML lorsque j'utilise un jeu de résultats ?
Une fonction simple peut être définie pour atteindre cet objectif, comme suit :
<% !
Chaîne videnull(Chaîne s) {
return (s == nul) ? "" : s;
}
% > </P>
Ensuite, dans le FORMULAIRE JSP, vous pouvez l'utiliser comme ceci
< input type="text" name="pointure" value="< %=blanknull(pointure)% >" > </P>
17. Comment télécharger un fichier (tel que : binaire, texte, exécutable) en SERVLET ou JSP ?
Deux solutions sont désormais proposées :
R : utilisez HTTP,
B : Dans Servlet, cela peut être fait en définissant le ContentType et en utilisant le Stream et d'autres classes du package java.io. Par exemple :
réponse.setContentType("application/x-msword");
Ensuite, écrivez simplement quelque chose dans le tampon de sortie. </P>
18. Comment accepter les paramètres d'initialisation lors de l'initialisation de BEAN à l'aide du flag useBean ? Utilisez simplement les deux balises suivantes :
< jsp:getProperty name="wenBean" property="someProperty"/ >
< jsp:setProperty name="wenBean" property="someProperty" value="somevalue"/ > </P>
19. Comment obtenir des informations sur le navigateur client à l'aide de JSP ?
Utilisez simplement request.getHeader(String)</P>
20. JSP peut-il être appelé comme un sous-programme ?
Bien sûr que vous pouvez, utilisez< jsp:include page="relativeURL" flush="true"/ > </P>
21. Après avoir recompilé une classe utilisée par ma JSP, pourquoi la JVM continue-t-elle à utiliser mon ancienne CLASS ? </P>
Quelle est la différence entre < <A href=" mailto:%@include">%@include</A > file="abc.jsp"% > et < jsp:include page="abc.jsp"/ > ?
La première est une inclusion statique, tandis que la seconde est une inclusion dynamique</P>
22. Inconvénients de JSP ?
1. Il n'y a rien de bon dans le débogage des programmes JAVA
2. Parce que la plupart des moteurs de servlets ne prennent pas en charge le regroupement de connexions
3. Il n'y a pas de norme pour les moteurs Servlet
4. Interaction entre JSP et d'autres langages de script</P>
23. JSP peut-il effectuer des appels récursifs ?
Bien sûr, vous pouvez, si vous soumettez le formulaire sur cette page</P>
34. Comment réaliser l'internationalisation de JSP ?
Fournissez simplement les fichiers de propriétés des groupes de ressources pour différentes versions</P>
25. Comment écrire des fichiers texte en JSP ?
Utilisez l'objet PrintWriter, tel que :
< %@ page import="java.io.*" % >
<%
String str = "imprime-moi" ;
String nameOfTextFile = "/usr/anil/imp.txt";
essayer {
PrintWriter pw = new PrintWriter(new FileOutputStream(nameOfTextFile));
pw.println(str);
pw.close();
} catch(IOException e) {
out.println(e.getMessage());
}
% > </P>
26. Comment inclure des fichiers de chemin absolu dans JSP ?
Utilisez simplement URLConnection. </P>
27. Les objets de session peuvent-ils être partagés entre les servlets et JSP ?
bien sûr,
Session HttpSession = request.getSession(true);
session.putvalue("variable","valeur"); </P>
28. Les variables Javascript peuvent-elles être copiées dans JSP SESSION ? </P>
29. Comment faire expirer les cookies après un certain temps ?
Utilisez Cookie.setMaxAge(int) </P>
30. Comment obtenir le nombre actuel de séances ?
Vous pouvez utiliser HttpSessionBindingListeners pour suivre</P>
31. Puis-je configurer du code à exécuter sur tous mes fichiers JSP ? Si oui, peut-il être partagé ?
Bien sûr, vous pouvez définir un alias pour votre fichier JSP : /jsp/=ybwen.genius.myPreprocessingServlet, et les fichiers préfixés par /jsp/ peuvent être utilisés</P>
32. Pour une page JSP, si plusieurs clients la demandent en même temps, la synchronisation est-elle possible ?
Quels sont les avantages de l’utilisation de beanName dans la syntaxe jsp:useBean ?
beanName utilise Beans.instantiate() pour initialiser le Bean </P>
33. Lorsque j'utilise < jsp:forward >, la barre d'adresse du navigateur ne change pas ?
Utilisez réponse.sendRedirect("newURL") </P>
34. Comment convertir les fichiers de la version JSP 0.9 en JSP1.1 ?
Utilisez simplement sed/awk</P>
35. Pouvez-vous utiliser JSP pour définir le focus d'un champ de saisie dans un FORMULAIRE HTML sans utiliser Javascript ?
Pas question</P>
36. Quelle est la meilleure façon de se connecter à un pool de mémoire tampon de connexion à une base de données à l'aide de JSP ?
1. Utilisez le pilote avec ce service dans JDBC2.0
2. Utilisez le serveur d'applications qui fournit ce service