Endlich letztes Mal
login.jsp → LoginServlet.java → mypage.jsp
Sie können jetzt Übergänge vornehmen.
Übrigens lautet die URL zum Zeitpunkt des Übergangs der Mypage
http://localhost:8080/ServletApp/mypage.jsp
Wenn Sie jedoch über die letzte Erweiterung besorgt sind, gehen Sie zu web.xml
web.xml
<servlet>
<servlet-name>mypage</servlet-name>
<jsp-file>/mypage.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>mypage</servlet-name>
<url-pattern>/ServletApp/mypage</url-pattern>
</servlet-mapping>
Wenn Sie hinzufügen, lautet die URL zum Zeitpunkt des Übergangs
http://localhost:8080/ServletApp/mypage
Wird sein.
Tatsächlich gibt es neben der Methode, die die zuletzt durchgeführte Methode "request.getParameter ()" verwendet, andere Methoden, die als "Cookies" und "Sitzungen" bezeichnet werden, um Daten zwischen Servlets zu übertragen.
Ein Cookie ist eine Information, die auf der Clientseite gespeichert wird, wenn eine Antwort vom Server zurückgegeben wird. (Wenn Sie häufig auf der Website surfen, wird möglicherweise ein Popup-Fenster wie "Diese Website verwendet Cookies" angezeigt.) Als Vorteil des Speicherns von Daten auf der Client-Seite
--Mitgliedschaftssite → Benutzername-Eingabe beim nächsten Mal weglassen --Shopping-Site → Merken Sie sich die Artikel, die Sie in Ihren Warenkorb gelegt haben
Und so weiter. Lass uns Kekse machen. Ändern Sie zunächst die Methode "doPost ()" von "LoginServlet.java".
LoginServlet.java
protected void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
String name=req.getParameter("name");
Cookie c[]=req.getCookies();
boolean CreatedCookie=false;
for(Cookie cookie:c) {
if(cookie.getName().equals("cookie_user")) {
CreatedCookie=true;
}
}
if(CreatedCookie==false) {
Cookie cookie=new Cookie("cookie_user",name);
res.addCookie(cookie);
}
// if(Arrays.stream(c)
// .filter(e->!e.getName().equals("cookie_user"))
// .count()==c.length) {
// Cookie cookie=new Cookie("cookie_user",name);
// res.addCookie(cookie);
// }
req.setAttribute("name",name);
req.getRequestDispatcher("/mypage.jsp").forward(req,res);
}
--req.getCookies ()
・ ・ ・ Ruft die Cookies ab, die der Client in einem Array hat (5. Zeile)
--cookie.getName ()
・ ・ ・ Den Namen des Cookies abrufen (8. Zeile)
--new Cookie (String name, String value)
・ ・ ・ Erstelle ein Cookie mit einem Paar von
name: value (Zeile 13) --
res.addCookie (Cookie-Cookie) `・ ・ ・ Cookie als Antwort festlegen (Zeile 14)
Auf diese Weise können Sie den Benutzernamen speichern, den Sie eingegeben haben, als Sie sich als "cookie_user" angemeldet haben. Auch, obwohl es hier nicht erscheint,
--cookie.setMaxAge (int Sekunden)
・ ・ ・ Geben Sie das Ablaufdatum des Cookies in Sekunden an (das Cookie wird zerstört, wenn das Ablaufdatum abläuft).
--cookie.setValue (String value)
・ ・ ・ Setzt den Wert auf das Cookie zurück
Und so weiter. Ändern Sie als Nächstes das Innere des Tags
von login.jsp.login.jsp
<body>
<%
Cookie cookies[]=request.getCookies();
String username="";
for(Cookie c:cookies){
if(c.getName().equals("cookie_user"))username=c.getValue();
}
%>
<form action="/ServletApp/mypage" method="post">
name:<input type="text" name="name" value=<%=username%>><br>
password:<input type="text" name="password"><br>
<input type="submit" value="login">
</form>
</body>
Wenn der Cookie-Name "cookie_user" bereits vorhanden ist, wenn der Anmeldebildschirm angezeigt wird, wird dieser Wert in das Textfeld eingegeben.
Greifen Sie jetzt auf "login.jsp" zu.
Geben Sie "hato" in "name" ein, um sich anzumelden.
Auf den ersten Blick sieht es so aus, als hätte sich nichts geändert, aber lassen Sie uns erneut auf login.jsp
zugreifen.
Sie können sehen, dass das bereits eingegebene "Hato" bereits in "Name" eingegeben wurde.
Ich sagte "Informationen, die auf der Clientseite gespeichert sind" in [Lassen Sie uns ein Cookie erstellen](# Lassen Sie uns ein Cookie erstellen), aber es gibt eine Möglichkeit, das in "Google Chrome" gespeicherte Cookie zu überprüfen.
Drücken Sie bei geöffnetem login.jsp
die Taste F12
, um" Developer Tools "zu öffnen.
Klicken Sie im Menü auf die Registerkarte "Anwendung".
Klicken Sie auf "Cookies".
Klicken Sie auf "http: // localhost: 8080". erreicht. In "Name" wird "cookie_user" angezeigt, der Name des zuvor erstellten Cookies, und "Hato", der in "Value" eingegebene Benutzername, wird angezeigt. Sie können den Wert auf diesem Bildschirm auch neu schreiben oder löschen.
Eine Sitzung besteht aus einer Reihe von Prozessen vom Anfang bis zum Ende (oder dem Verwerfen) einer Verbindung, z. B. "Von Anmelden zu Abmelden" oder "Nach dem Anmelden zum Verlassen und Zeitüberschreitung". Da eine normale Webseite jedoch keine Funktion zum Übergeben des "Verbindungsstatus" hat, wird sie bei jedem Zugriff auf den Server wie unten gezeigt als andere Verbindung behandelt.
Lassen Sie uns Verbindung A zu Verbindung C zu einer Reihe von Prozessen (Sitzungen) machen.
Fügen Sie LoginServlet.java den folgenden Code hinzu.
LoginServlet.java
HttpSession session=req.getSession();
Date date=new Date(session.getCreationTime());
SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
session.setAttribute("lastLoginDate", sdf.format(date));
session.setMaxInactiveInterval(20);
Code, der die Startzeit der Sitzung mit dem Namen "lastLoginDate" speichert.
--req.getSession ()
・ ・ ・ Sitzung abrufen
--session.getCreationTime ()
・ ・ ・ Ruft das Datum und die Uhrzeit ab, zu der die Sitzung zum ersten Mal als langer Typ erstellt wurde
--session.setAttribute (Stringname, Objektwert)
・ ・ ・ Name: Wert
Paar zum Speichern von Parametern
--session.setMaxInactiveInterval (int s)
・ ・ ・ Geben Sie das Ablaufdatum der Sitzung mit Sekunden
an (Standard sollte 1800 Sekunden sein).
Ich werde auch mypage.jsp ändern.
mypage.jsp
<body>
<%
String name=request.getParameter("name");
String session_date=session.getAttribute("lastLoginDate").toString();
%>
<%=name%>Datum und Uhrzeit der Anmeldung<%=session_date%>ist.
</body>
--session.getAttribute (String name)
・ ・ ・ Ruft den Wert, der dem im Argument angegebenen Namen entspricht, aus der Sitzung mit Object type
ab
Auch werde ich es diesmal nicht benutzen
--session.getAttributeNames ()
・ ・ ・ Ruft die in der Sitzung gespeicherten Parameternamen als String-Typ-Array
ab
--session.lastAccessedTime ()
・ ・ ・ Ruft die letzte verbundene Zeit in der Sitzung ab
Und so weiter.
Greifen Sie jetzt erneut auf "login.jsp" zu. Geben Sie "Hato" ein, um sich anzumelden. Ich denke, dass die aktuelle Zeit grob angezeigt wird. Aktualisieren Sie dann die Seite mit der Taste "F5" ohne Unterbrechung (nicht auf dem realen Eingabeformular oder der Produktseite). Die Zeit ändert sich nicht. Die 20 Sekunden, in denen Sie das Ablaufdatum früher festgelegt haben, gelten als "gleiche Verbindung". Dann nach einer Weile neu laden.
Da eine Sitzung auch eine Art Cookie ist, können Sie die Sitzung auf die gleiche Weise überprüfen wie [Cookies überprüfen](# Cookies überprüfen). Es ist jedoch eine schwierige Zeichenfolge, so dass sie nicht so weit wie möglich geändert werden kann.
Das ist alles für diese Zeit. Ich frage mich, ob ich es bald in den Rahmen stellen kann ...
Recommended Posts