Heim >Java >JavaInterview Fragen >Häufige Java Web-Interviewfragen
Was ist der Unterschied zwischen JSP und Servlet? (Empfohlenes Lernen: Häufige Java-Testfragen )
JSP wird zum Dienst (JSPs Essenz ist Dienst, JVM kann nur Java-Kategorien erkennen, nicht. Erkennen Sie JSP-Code und das Web Der Container kompiliert den JSP-Code in eine Java-Klasse, die von der JVM erkannt werden kann) JSP eignet sich besser für die Seitenanzeige und Servlet eignet sich besser für die Logiksteuerung. Es gibt keine integrierten Objekte in Servlet. Die integrierten Objekte in Jsp müssen über das HttpServletRequest-Objekt, das HttpServletResponse-Objekt und das HttpServlet-Objekt abgerufen werden. Jsp ist eine Vereinfachung von Servlet. Der Jsp-Container muss nur den Inhalt vervollständigen, den der Programmierer an den Client ausgeben muss. Servlet ist eine vollständige Java-Klasse und die Service-Methode dieser Klasse wird verwendet, um eine Antwort an den Client zu generieren.Was sind die integrierten Objekte von JSP? Was sind die Funktionen?
JSP verfügt über 9 integrierte Objekte:
Anfrage: kapselt die Anfrage des Clients, die Parameter aus der GET- oder POST-Anfrage enthält; response: kapselt die Antwort des Servers an den Client; pageContext: andere Objekte können über dieses Objekt abgerufen werden; session: ein Objekt, das die Benutzersitzung kapselt; >application: kapselt das Objekt der laufenden Umgebung; out: das Ausgabestream-Objekt der Ausgabeserverantwort;Seite: die JSP-Seite selbst (entspricht Java this im Programm); Ausnahme: ein Objekt, das eine von der Seite ausgelöste Ausnahme kapselt.
Erzählen Sie mir etwas über die vier Bereiche von JSP?
Die vier Bereiche in JSP umfassen Seite, Anfrage, Sitzung und Anwendung. Konkret:
Seite stellt Objekte dar, die sich auf eine Seite und eine Eigenschaft beziehen.Anfrage stellt Objekte und Eigenschaften dar, die sich auf eine vom Web-Client ausgegebene Anfrage beziehen. Eine Anfrage kann sich über mehrere Seiten erstrecken und mehrere Webkomponenten umfassen, die auf der Seite angezeigt werden müssen. In diesem Bereich können platziert werden.
Sitzung stellt die Objekte und Attribute dar, die sich auf eine Sitzung beziehen, die ein Benutzer mit dem Server eingerichtet hat. Auf einen Benutzer bezogene Daten sollten in der eigenen Sitzung des Benutzers platziert werden. Anwendung stellt Objekte und Eigenschaften dar, die sich auf die gesamte Webanwendung beziehen. Es handelt sich im Wesentlichen um einen globalen Bereich, der die gesamte Webanwendung umfasst, einschließlich mehrerer Seiten, Anforderungen und Sitzungen.Was ist der Unterschied zwischen Sitzung und Cookie?
Da das HTTP-Protokoll ein zustandsloses Protokoll ist, muss der Server einen Mechanismus verwenden, um den spezifischen Benutzer zu identifizieren. Typische Szenarien wie Einkaufen Wenn Sie auf die Bestellschaltfläche klicken, weiß das HTTP-Protokoll nicht, welcher Benutzer es bedient hat. Daher muss der Server eine bestimmte Sitzung für den bestimmten Benutzer erstellen, um den Benutzer zu identifizieren und zu verfolgen Sie wissen, wie viele Bücher sich im Warenkorb befinden.Diese Sitzung wird auf dem Server gespeichert und hat eine eindeutige Kennung. Es gibt viele Möglichkeiten, Sitzungen auf der Serverseite zu speichern, einschließlich Speicher, Datenbank und Dateien.
Beim Clustering sollte auch die Sitzungsübertragung in Betracht gezogen werden. Zu diesem Zeitpunkt werden Sitzungsinformationen im Speicher abgelegt und einige Caches verwendet als Memcached werden zum Speichern von Sitzungen verwendet.Denken Sie darüber nach, wie der Server einen bestimmten Kunden identifiziert?
Zu diesem Zeitpunkt erscheint Cookie. Bei jeder HTTP-Anfrage sendet der Client entsprechende Cookie-Informationen an den Server. Tatsächlich verwenden die meisten Anwendungen Cookies, um die Sitzungsverfolgung zu implementieren. Wenn eine Sitzung zum ersten Mal erstellt wird, teilt der Server dem Client im HTTP-Protokoll mit, dass eine Sitzungs-ID im Cookie aufgezeichnet werden muss Anschließend wird die Sitzungs-ID an den Server gesendet und ich weiß, wer Sie sind.Jemand hat gefragt, was passiert, wenn der Browser des Kunden Cookies deaktiviert?
Im Allgemeinen wird in diesem Fall eine Technologie namens URL-Rewriting zur Sitzungsverfolgung verwendet, d. h. für jede HTTP-Interaktion wird ein Parameter wie sid=xxxxx an die URL, den Server, angehängt verwendet dies zur Identifizierung des Benutzers.Cookies können tatsächlich in einigen benutzerfreundlichen Szenarien verwendet werden. Stellen Sie sich vor, Sie haben sich einmal auf einer Website angemeldet und möchten Ihr Konto beim nächsten Anmelden nicht erneut eingeben. Was sollten Sie tun? Tun?
Diese Informationen können in das Cookie geschrieben werden. Beim Besuch der Website kann das Skript der Website-Seite diese Informationen lesen und den Benutzernamen automatisch für Sie ausfüllen, was dem Benutzer die Arbeit erleichtern kann. Dies ist auch der Ursprung des Cookie-Namens, der den Benutzern ein wenig Süße verleiht.Also, um es zusammenzufassen:
Sitzung ist eine auf dem Server gespeicherte Datenstruktur, um den Status des Benutzers zu verfolgen. Diese Daten können im Cluster, in der Datenbank usw. gespeichert werden die Datei;Cookie ist ein Mechanismus, mit dem der Client Benutzerinformationen speichert. Es wird zum Aufzeichnen einiger Benutzerinformationen verwendet und ist auch eine Möglichkeit, eine Sitzung zu implementieren.
Sagen Sie mir, wie die Sitzung funktioniert?
Tatsächlich handelt es sich bei der Sitzung um eine Datei, die einer Hash-Tabelle ähnelt, die auf dem Server vorhanden ist. Darin sind die Informationen gespeichert, die wir benötigen, und wir können sie bei Bedarf herausnehmen.
Es ähnelt einer großen Karte. Der darin enthaltene Schlüssel speichert die Sitzungs-ID des Benutzers, wenn er eine Anfrage an den Server sendet. Zu diesem Zeitpunkt kann der entsprechende Wert daraus extrahiert werden.
Kann die Sitzung weiterhin verwendet werden, wenn der Client Cookies deaktiviert?
Cookie und Session werden im Allgemeinen als zwei unabhängige Dinge betrachtet. Session verwendet eine Lösung, die den Status auf der Serverseite verwaltet, während Cookie eine Lösung verwendet, die den Status auf der Clientseite verwaltet.
Aber warum kann ich keine Sitzung erhalten, wenn ich Cookies deaktiviere?
Da die Sitzung die Sitzungs-ID verwendet, um die Serversitzung zu bestimmen, die der aktuellen Konversation entspricht, und die Sitzungs-ID über Cookie weitergeleitet wird, ist das Deaktivieren von Cookies gleichbedeutend damit, dass die Sitzungs-ID verloren geht und daher nicht abgerufen wird die Sitzung.
Gehen Sie davon aus, dass der Benutzer Session verwendet, wenn Cookies deaktiviert sind. Es gibt mehrere Möglichkeiten, dies zu erreichen:
Setzen Sie „session.use_trans_sid = 1“ in der php.ini Konfigurationsdatei“ oder aktivieren Sie beim Kompilieren die Option „--enable-trans-sid“, damit PHP die Sitzungs-ID automatisch seitenübergreifend weitergibt.
Übergeben Sie den Wert manuell über die URL und die Sitzungs-ID über das versteckte Formular.
Speichern Sie die Sitzungs-ID in einer Datei, Datenbank usw. und rufen Sie sie während des seitenübergreifenden Prozesses manuell auf.
Was ist der Unterschied zwischen Feder-MVC und Federbeinen?
Unterschiede in den Abfangmechanismen
Struts2 ist ein Abfangen auf Klassenebene. Bei der Integration mit Spring, Struts2 ActionBean Der Injektionsbereich ist der Prototyp im Prototypmodus. Anschließend werden die Anforderungsdaten über Setter und Getter in das Attribut injiziert.
In Struts2 entspricht eine Aktion einem Anforderungs- und Antwortkontext. Beim Empfang von Parametern kann sie über Attribute empfangen werden. Dies zeigt, dass Attributparameter von mehreren Methoden gemeinsam genutzt werden.
Eine Aktionsmethode in Struts2 kann einer URL entsprechen, ihre Klassenattribute werden jedoch von allen Methoden gemeinsam genutzt. Dies macht es unmöglich, Annotationen oder andere Methoden zur Identifizierung ihrer Methode zu verwenden, und kann nur als Mehrfachmethode konzipiert werden Instanzen.
SpringMVC ist ein Abfangen auf Methodenebene. Eine Methode entspricht einem Anforderungskontext, sodass die Methode grundsätzlich unabhängig ist und exklusiven Zugriff auf Anforderungs- und Antwortdaten hat. Jede Methode entspricht gleichzeitig einer URL. Die Parameterübergabe wird direkt in die Methode eingefügt, was für die Methode einzigartig ist. Die Verarbeitungsergebnisse werden über ModeMap an das Framework zurückgegeben.
Während der Spring-Integration verwendet SpringMVCs Controller-Bean standardmäßig den Singleton-Modus, sodass standardmäßig nur ein Controller für alle Anforderungen erstellt wird. Es sollten keine gemeinsamen Attribute vorhanden sein, sodass es threadsicher ist Im Standardbereich müssen Sie die @Scope-Annotation ändern.
Struts2 verfügt über einen eigenen Interceptor-Mechanismus. SpringMVC verwendet eine unabhängige Aop-Methode, wodurch die Anzahl der Konfigurationsdateien von Struts2 größer ist als die von SpringMVC.
Unterschiede in den zugrunde liegenden Frameworks
Struts2 wird mit Filter (StrutsPrepareAndExecuteFilter) implementiert, während SpringMVC (DispatcherServlet) mit Servlet implementiert wird. Der Filter wird initialisiert, nachdem der Container gestartet wurde; er stürzt ab, nachdem der Dienst gestoppt wurde, später als Servlet. Das Servlet wird beim Aufruf initialisiert, bevor Filter aufgerufen wird, und wird zerstört, nachdem der Dienst beendet wurde.
In Bezug auf die Leistung
Struts2 ist ein Abfangen auf Klassenebene. Jede Anfrage entspricht einer neuen Aktion der Instanz, und die gesamte Attributwertinjektion muss geladen werden .SpringMVC implementiert eine Nullkonfiguration. Aufgrund des methodenbasierten Abfangens von SpringMVC wird die Bean-Injektion im Singleton-Modus einmal geladen. Daher sind die Entwicklungseffizienz und Leistung von SpringMVC höher als bei Struts2.
In Bezug auf die Konfiguration
spring MVC und Spring sind nahtlos. Das Management und die Sicherheit dieses Projekts sind ebenfalls höher als bei Struts2.
Wie vermeide ich SQL-Injection?
PreparedStatement (einfache und effektive Methode)
Verwenden Sie reguläre Ausdrücke, um eingehende Parameter zu filtern
String-Filterung
Aufruf in JSP Diese Funktion prüft, ob es enthält illegale Zeichen
JSP-Seitenbeurteilungscode
Was ist ein XSS-Angriff und wie kann man ihn vermeiden?
XSS-Angriff wird auch CSS genannt, der vollständige Name ist Cross-Site-Script (Cross-Site-Scripting-Angriff). Das Prinzip besteht darin, dass der Angreifer bösartigen HTML-Code in eine Website mit XSS-Schwachstellen eingibt Wenn der Benutzer die Website durchsucht, wird dieser HTML-Code automatisch ausgeführt, um den Angriffszweck zu erreichen.
XSS-Angriffe ähneln SQL-Injection-Angriffen. Bei XSS-Angriffen werden SQL-Anweisungen als Benutzereingabe verwendet, um die Browsersteuerung zu steuern Erhalten Sie einige Benutzerinformationen. XSS ist eine häufige Schwachstelle in Webprogrammen. XSS ist eine passive Angriffsmethode, die auf der Clientseite eingesetzt wird.
Die allgemeine Idee der XSS-Prävention besteht darin, die Eingabe (und URL-Parameter) zu filtern und die Ausgabe zu kodieren.
Was ist ein CSRF-Angriff und wie kann man ihn vermeiden?
CSRF (Cross-Site-Request-Forgery) wird auch als One-Click-Angriff oder Session-Riding bezeichnet. Der vollständige chinesische Name lautet Cross-Site-Request-Forgery. Im Allgemeinen fälscht der Angreifer die Browseranfrage des Benutzers und sendet sie an eine Website, für deren Besuch sich der Benutzer authentifiziert hat, sodass die Zielwebsite den Befehl empfängt, fälschlicherweise annimmt, dass es sich um den tatsächlichen Vorgang des Benutzers handelt, und den Befehl ausführt.
Wird häufig verwendet, um Konten zu stehlen, Geld zu überweisen, falsche Nachrichten zu senden usw. Der Angreifer nutzt die Sicherheitslücke der Website zur Anforderungsüberprüfung aus, um einen solchen Angriff durchzuführen. Die Website kann bestätigen, dass die Anforderung vom Browser des Benutzers stammt, kann jedoch nicht überprüfen, ob die Anforderung von der wahren Absicht des Benutzers stammt.
So vermeiden Sie:
1. Überprüfen Sie das HTTP-Referer-Feld
Das Referer-Feld im HTTP-Header zeichnet die auf Quelladresse der HTTP-Anfrage. Unter normalen Umständen kommt die Anfrage zum Zugriff auf eine sichere, eingeschränkte Seite von derselben Website, und wenn ein Hacker einen CSRF
-Angriff durchführen möchte, kann er die Anfrage im Allgemeinen nur auf seiner eigenen Website erstellen. Daher können CSRF-Angriffe durch die Überprüfung des Referrer-Werts abgewehrt werden.
2. Bestätigungscode verwenden
Nach Erhalt der Anfrage kann der Hintergrund den Bestätigungscode beurteilen, um CSRF zu verhindern. Diese Methode ist jedoch nicht sehr benutzerfreundlich.
3. Token zur Anforderungsadresse hinzufügen und überprüfen
Der Grund, warum der CSRF-Angriff erfolgreich ist, besteht darin, dass der Hacker die Anforderung des Benutzers vollständig fälschen kann Informationen zur Benutzerüberprüfung sind in Cookies enthalten, sodass Hacker die eigenen Cookies des Benutzers direkt verwenden können, um die Sicherheitsüberprüfung zu bestehen, ohne die Überprüfungsinformationen zu kennen. Der Schlüssel zum Widerstand gegen CSRF besteht darin, Informationen in die Anfrage einzufügen, die Hacker nicht fälschen können und die in Cookies nicht vorhanden sind.
Sie können ein zufällig generiertes Token als Parameter in der HTTP-Anfrage hinzufügen und auf der Serverseite einen Interceptor erstellen, um das Token zu überprüfen, wenn in der Anfrage kein Token vorhanden ist oder der Token-Inhalt falsch ist Es wird davon ausgegangen, dass die Anforderung möglicherweise aufgrund eines CSRF-Angriffs abgelehnt wurde.
Diese Methode ist sicherer als die Überprüfung des Referrs. Das Token kann nach der Anmeldung des Benutzers generiert und in der Sitzung platziert werden. Anschließend kann das Token bei jeder Anfrage aus der Sitzung entnommen und mit dem eingetroffenen Token abgeglichen werden Vergleichen Sie die Anforderung. Die Schwierigkeit dieser Methode besteht jedoch darin, wie das Token in Form von Parametern zur Anforderung hinzugefügt wird.
Bei GET-Anfragen wird das Token an die Anfrageadresse angehängt, sodass die URL zu http://url?csrftoken=tokenvalue wird.
Fügen Sie für POST-Anfragen am Ende des Formulars hinzu, sodass das Token die Form eines Parameters hat Zum Beitritt aufgefordert.
4. Passen Sie die Attribute im HTTP-Header an und überprüfen Sie sie.
Diese Methode verwendet auch Token zur Überprüfung Als Parameter in der HTTP-Anfrage fügen Sie ihn in ein benutzerdefiniertes Attribut im HTTP-Header ein.
Über die XMLHttpRequest-Klasse können Sie das HTTP-Header-Attribut csrftoken allen Anforderungen dieses Typs gleichzeitig hinzufügen und den Token-Wert darin einfügen.
Dies beseitigt die Unannehmlichkeiten beim Hinzufügen eines Tokens zur Anforderung in der vorherigen Methode. Gleichzeitig wird die über XMLHttpRequest angeforderte Adresse nicht in der Adressleiste des Browsers aufgezeichnet, und es besteht kein Grund zur Sorge Token wird über den Referrer an andere Websites weitergegeben.
Das obige ist der detaillierte Inhalt vonHäufige Java Web-Interviewfragen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!