Antworten auf Probleme, die in JSP auftreten können
1. Wie mischt man Jsp und SSI #include?
Reines HTML kann wie folgt in JSP eingebunden werden:
< !--#include file="data.inc"-- >
Wenn data.inc jedoch JSP-CODE enthält, können wir Folgendes verwenden:
< <A href=" mailto:%@include">%@include</A > file="data.inc"% > </P>
2. Wie führe ich eine threadsichere JSP aus?
Fügen Sie einfach den folgenden Befehl hinzu
< %@ page isThreadSafe="false" % > </P>
3. Wie verarbeitet JSP Daten in HTML FORM?
Verwenden Sie einfach das integrierte Anforderungsobjekt wie folgt:
<%
String item = request.getParameter("item");
int howMany = new Integer(request.getParameter("units")).intvalue();
% > </P>
4. Wie füge ich eine statische Datei in JSP ein?
Die statische Einbindung sieht wie folgt aus: < %@ include file="copyright.html" % >
Die dynamische Einbindung erfolgt wie folgt: < jsp:include page="copyright.html"lush="true"/ > </P>
5. Wie verwende ich Kommentare in JSP?
Es gibt vier Hauptmethoden:
1. < %-- und --% >
2. //
3. /**Und**/
4. < !--and-- > </P>
6. Wie führe ich eine Browserumleitung in JSP durch?
Verwenden Sie die folgende Methode: Response.sendRedirect(" <A href=" http://ybwen.home.chinaren.com/index.html">http://ybwen.home.chinaren.com/index.html</ A >");
Sie können das HTTP-HEADER-Attribut auch wie folgt physisch ändern:
<%
Response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
String newLocn="/newpath/index.html";
Response.setHeader("Location",newLocn);
% > </P>
7. Wie kann verhindert werden, dass die Ausgabe in JSP oder SERVLET vom BROWSER im CACHE gespeichert wird?
Fügen Sie einfach das folgende Skript am Anfang der JSP-Datei hinzu:
<%
Response.setHeader("Cache-Control","no-store"); //HTTP 1.1
Response.setHeader("Pragma","no-cache"); //HTTP 1.0
Response.setDateHeader ("Expires", 0); //verhindert das Caching auf dem Proxyserver
% > </P>
8. Wie setze ich COOKIE in JSP?
COOKIE wird als Teil des HTTP HEADER gesendet und kann wie folgt gesetzt werden:
<%
Cookie mycookie = neues Cookie("aName","avalue");
Response.addCookie(mycookie);
% > </P>
9. Wie lösche ich ein COOKIE in JSP?
<%
Cookie killMyCookie = neues Cookie("mycookie", null);
killMyCookie.setMaxAge(0);
killMyCookie.setPath("/");
Response.addCookie(killMyCookie);
% > </P>
10. So stoppen Sie die Ausführung von JSP während der Verarbeitung einer JSP-Anfrage:
<%
if (request.getParameter("wen") != null) {
//etwas tun
} anders {
zurückkehren;
}
% > </P>
11. So definieren Sie Methoden in JSP Sie können Methoden definieren, aber Sie können nicht direkt auf die integrierten Objekte von JSP zugreifen, sondern diese über Parametermethoden übergeben. wie folgt:
<%!
öffentlicher String howBadFrom(HttpServletRequest req) {
HttpSession ses = req.getSession();
...
return req.getRemoteHost();
}
%>
<%
out.print("Im Allgemeinen ist Lao Lee kein Bösewicht");
%>
< %= howBadFrom(request) % > </P>
12. Wenn BROWSER COOKIES deaktiviert hat, wie kann ich SESSION in JSP öffnen, um das Umschreiben von URLs wie folgt zu verfolgen und zu verwenden:
hallo1.jsp
< %@ page session="true" % >
<%
Integer num = new Integer(100);
session.putvalue("num",num);
String-URL =response.encodeURL("hello2.jsp");
%>
< a href=< %=url% > >hello2.jsp< /a > </P>
hallo2.jsp
< %@ page session="true" % >
<%
Ganzzahl i= (Integer )session.getvalue("num");
out.println("Num value in session is "+i.intvalue());
% > </P>
13. Können E-Mails in JSP gesendet werden? Sie können das spezielle Paket von SUN verwenden: sun.net.smtp-Paket. Das folgende Skript verwendet die SmtpClient-Klasse zum Senden von E-Mails.
< %@ page import="sun.net.smtp.SmtpClient, java.io.*" % >
<%
String from=" <A href=" mailto:[email protected]">[email protected]</A >";
String to=" <A href=" mailto:[email protected]">[email protected]</A >, <A href=" mailto:[email protected]">[email protected]. cn</A >";
versuchen{
SmtpClient client = new SmtpClient("mail.xxxxx.xxx");
client.from(von);
client.to(to);
PrintStream message = client.startMessage();
message.println("An: " + an);
message.println("Betreff: E-Mail wird von JSP gesendet!");
message.println("Dies wurde von einer JSP-Seite gesendet!");
message.println();
message.println("Cool! :-)");
message.println();
message.println("Guter Junge");
message.println("Ich bin bei genius.com");
message.println();
client.closeServer();
}
Catch (IOException e){
System.out.println("FEHLER BEIM SENDEN DER E-MAIL:"+e);
}
% > </P>
14. Kann ich eine JSP-Fehlerseite in SERVLET aufrufen? Natürlich ist das kein Problem. Im Folgenden wird gezeigt, wie eine JSP-Fehlerseite in einer SERVLET-Steuerlogikeinheit aufgerufen wird.
protected void sendErrorRedirect(HttpServletRequest request,
HttpServletResponse-Antwort, String errorPageURL,
Wurfbar e)
wirft ServletException, IOException {
request.setAttribute ("javax.servlet.jsp.jspException", e);
getServletConfig().getServletContext().
getRequestDispatcher(errorPageURL).forward(request,
Antwort);
} </P>
public void doPost(HttpServletRequest request,HttpServletResponse Antwort) {
versuchen {
//etwas tun
} Catch (Ausnahme ex) {
versuchen {
sendErrorRedirect(request,response,"/jsp/MyErrorPage.jsp",ex);
} Catch (Ausnahme e) {
e.printStackTrace();
}
}
} </P>
15. Wie kommunizieren JSP und APPLET?
Wie JSP mit EJB SessionBean kommuniziert Der folgende Codeausschnitt bietet eine gute Demonstration
< %@ page import="javax.naming.*, javax.rmi.PortableRemoteObject,
foo.AccountHome, foo.Account" % >
<%!
//Definieren Sie eine globale Referenz auf die SessionBeanHome-Schnittstelleninstanz
AccountHome accHome=null </P>
public void jspInit() {
//Home-Schnittstelleninstanz abrufen
InitialContext cntxt = new InitialContext( );
Objekt ref= cntxt.lookup("java:comp/env/ejb/AccountEJB");
accHome = (AccountHome)PortableRemoteObject.narrow(ref,AccountHome.class);
}
%>
<%
//SessionBean instanziieren
Konto acct = accHome.create();
//Remote-Methode aufrufen
acct.doWhatever(...);
// und so weiter
% > </P>
16. Wie verhindere ich, dass Felder mit „Null“-Feldern in meinen HTML-Eingabetextfeldern angezeigt werden, wenn ich eine Ergebnismenge verwende?
Um diesen Zweck zu erreichen, kann eine einfache Funktion wie folgt definiert werden:
<%!
String blanknull(String s) {
return (s == null) ? "" : s;
}
% > </P>
Dann können Sie es im JSP-FORMULAR wie folgt verwenden
< input type="text" name="shoesize" value="< %=blanknull(shoesize)% >" > </P>
17. Wie lade ich eine Datei (z. B. Binärdatei, Textdatei, ausführbare Datei) in SERVLET oder JSP herunter?
Es stehen nun zwei Lösungen zur Verfügung:
A: Verwenden Sie HTTP,
B: In Servlet kann dies durch Festlegen des ContentType und Verwenden des Streams und anderer Klassen des java.io-Pakets erfolgen. Beispiel:
Response.setContentType("application/x-msword");
Dann schreiben Sie einfach etwas in den Ausgabepuffer. </P>
18. Wie akzeptiere ich Initialisierungsparameter, wenn ich BEAN mit dem useBean-Flag initialisiere? Verwenden Sie einfach die folgenden zwei Tags:
< jsp:getProperty name="wenBean" property="someProperty"/ >
< jsp:setProperty name="wenBean" property="someProperty" value="somevalue"/ > </P>
19. Wie erhalte ich mithilfe von JSP Kundenbrowserinformationen?
Verwenden Sie einfach request.getHeader(String)</P>
20. Kann JSP wie eine Unterroutine aufgerufen werden?
Natürlich können Sie < jsp:include page="relativeURL" flush="true"/ > </P> verwenden
21. Warum verwendet die JVM weiterhin meine alte KLASSE, nachdem ich eine von meiner JSP verwendete Klasse neu kompiliere? </P>
Was ist der Unterschied zwischen < <A href=" mailto:%@include">%@include</A > file="abc.jsp"% > und < jsp:include page="abc.jsp"/ >?
Ersteres ist statische Inklusion, letzteres dynamische Inklusion</P>
22. Nachteile von JSP?
1. Es gibt keine guten Dinge beim Debuggen von JAVA-Programmen
2. Weil die meisten Servlet-Engines kein Verbindungspooling unterstützen
3. Es gibt keinen Standard für Servlet-Engines
4. Interaktion zwischen JSP und anderen Skriptsprachen</P>
23. Kann JSP rekursive Aufrufe durchführen?
Natürlich ist das möglich, wenn Sie das Formular an diese Seite senden</P>
34. Wie kann die Internationalisierung von JSP realisiert werden?
Stellen Sie einfach Eigenschaftendateien für Ressourcenpakete für verschiedene Versionen bereit</P>
25. Wie schreibe ich Textdateien in JSP?
Verwenden Sie ein PrintWriter-Objekt, z. B.:
< %@ page import="java.io.*" % >
<%
String str = "drucke mich";
String nameOfTextFile = "/usr/anil/imp.txt";
versuchen {
PrintWriter pw = new PrintWriter(new FileOutputStream(nameOfTextFile));
pw.println(str);
pw.close();
} Catch(IOException e) {
out.println(e.getMessage());
}
% > </P>
26. Wie füge ich absolute Pfaddateien in JSP ein?
Verwenden Sie einfach URLConnection. </P>
27. Können Sitzungsobjekte zwischen Servlets und JSP gemeinsam genutzt werden?
Sicher,
HttpSession session = request.getSession(true);
session.putvalue("variable","value"); </P>
28. Können Javascript-Variablen nach JSP SESSION kopiert werden? </P>
29. Wie kann ich Cookies so einstellen, dass sie nach einer bestimmten Zeit ablaufen?
Verwenden Sie Cookie.setMaxAge(int) </P>
30. Wie erhalte ich die aktuelle Anzahl der Sitzungen?
Sie können HttpSessionBindingListeners zum Verfolgen</P> verwenden
31. Kann ich Code einrichten, der auf allen meinen JSP-Dateien ausgeführt wird? Wenn ja, kann es geteilt werden?
Natürlich können Sie einen Alias für Ihre JSP-Datei definieren: /jsp/=ybwen.genius.myPreprocessingServlet, und Dateien mit dem Präfix /jsp/ können verwendet werden</P>
32. Ist eine Synchronisierung einer JSP-Seite möglich, wenn mehrere Clients sie gleichzeitig anfordern?
Welche Vorteile bietet die Verwendung von beanName in der jsp:useBean-Syntax?
beanName verwendet Beans.instantiate(), um die Bean </P> zu initialisieren
33. Wenn ich < jsp:forward > verwende, ändert sich die Adressleiste des Browsers nicht?
Verwenden Sie Response.sendRedirect("newURL") </P>
34. Wie konvertiert man JSP 0.9-Versionsdateien in JSP1.1?
Verwenden Sie einfach sed/awk</P>
35. Können Sie JSP verwenden, um den Fokus eines Eingabefelds in einem HTML-FORMULAR festzulegen, ohne Javascript zu verwenden?
Auf keinen Fall</P>
36. Was ist der beste Weg, um mithilfe von JSP eine Verbindung zu einem Datenbankverbindungspufferpool herzustellen?
1. Verwenden Sie den Treiber mit diesem Dienst in JDBC2.0
2. Verwenden Sie den Anwendungsserver, der diesen Dienst bereitstellt