Enfin la dernière fois
login.jsp → LoginServlet.java → mypage.jsp
Vous pouvez maintenant effectuer des transitions.
À propos, l'URL au moment de la transition mypage est
http://localhost:8080/ServletApp/mypage.jsp
Cependant, si vous êtes préoccupé par la dernière extension, accédez à 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>
Si vous ajoutez, l'URL au moment de la transition sera
http://localhost:8080/ServletApp/mypage
Sera.
En fait, il existe d'autres méthodes appelées "cookies" et "sessions" pour passer des données entre servlets, en plus de la méthode utilisant la méthode request.getParameter ()
qui a été effectuée la dernière fois.
Un cookie est une information stockée côté client lorsqu'une réponse est renvoyée par le serveur. (Si vous naviguez souvent sur le site, vous pouvez voir une fenêtre contextuelle telle que "Ce site utilise des cookies") Comme avantage de la sauvegarde des données côté client
--Site d'adhésion → Omettre l'entrée du nom d'utilisateur de la prochaine fois --Site d'achat → Souvenez-vous des articles que vous avez mis dans votre panier
Etc.
Faisons des cookies. Tout d'abord, modifiez la méthode doPost ()
de 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 ()
・ ・ ・ Récupère les cookies que le client a dans un tableau (5ème ligne)
--cookie.getName ()
・ ・ ・ Obtenez le nom du cookie (8ème ligne)
--new Cookie (String name, String value)
・ ・ ・ Créer un cookie avec une paire de
nom: valeur (ligne 13) --
res.addCookie (cookie cookie) `・ ・ ・ Définir le cookie comme réponse (ligne 14)
Cela vous permet de sauvegarder le nom d'utilisateur que vous avez entré lorsque vous vous êtes connecté en tant que cookie_user
.
De plus, bien que cela n'apparaisse pas ici,
--cookie.setMaxAge (int secondes)
・ ・ ・ Spécifiez la date d'expiration du cookie en secondes (le cookie sera détruit à l'expiration de la date d'expiration)
--cookie.setValue (valeur de chaîne)
・ ・ ・ Réinitialiser la valeur du cookie
Etc. Ensuite, modifiez l'intérieur de la balise «
» de «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>
Si le nom de cookie cookie_user
existe déjà lorsque l'écran de connexion est affiché, la valeur est saisie dans le champ de texte.
Accédez maintenant à login.jsp
.
Entrez «hato» dans «nom» pour vous connecter.
À première vue, il semble que rien n'a changé, mais accédons à nouveau à login.jsp
.
Vous pouvez voir que le "hato" qui était déjà entré est déjà entré dans "nom".
J'ai dit "informations stockées côté client" dans [Faisons un cookie](# Créons un cookie), mais il existe un moyen de vérifier le cookie stocké dans Google Chrome
.
Avec login.jsp
ouvert, appuyez sur la touche F12
pour ouvrir" Developer Tools ".
Cliquez sur l'onglet ʻApplication` dans le menu.
Cliquez sur «Cookies».
Cliquez sur «http: // localhost: 8080».
accompli.
Dans Name
, cookie_user
, qui est le nom du cookie créé précédemment, est affiché, et "Hato", qui est le nom d'utilisateur entré dans Value
, est affiché. Vous pouvez également réécrire ou supprimer la valeur sur cet écran.
Une session est une série de processus allant du début à la fin (ou rejet) d'une connexion, tels que "de la connexion à la déconnexion" ou "après la connexion à la sortie et à l'expiration". Cependant, comme une page Web normale n'a pas de fonction pour passer «l'état connecté», elle sera traitée comme une connexion différente chaque fois que vous accédez au serveur comme indiqué ci-dessous.
Faisons la connexion A à la connexion C une série de processus (sessions).
Ajoutez le code suivant à LoginServlet.java.
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 qui enregistre l'heure de début de la session sous le nom lastLoginDate
.
--req.getSession ()
・ ・ ・ Accéder à la session
--session.getCreationTime ()
・ ・ ・ Obtenez la date et l'heure de création de la session en tant que type long
--session.setAttribute (nom de la chaîne, valeur de l'objet)
・ ・ ・ nom: valeur
paire pour stocker les paramètres
--session.setMaxInactiveInterval (int s)
・ ・ ・ Spécifiez la date d'expiration de la session avec secondes
(la valeur par défaut doit être de 1800 secondes)
Modifiez également mypage.jsp.
mypage.jsp
<body>
<%
String name=request.getParameter("name");
String session_date=session.getAttribute("lastLoginDate").toString();
%>
<%=name%>Date et heure de connexion<%=session_date%>est.
</body>
--session.getAttribute (String name)
・ ・ ・ Récupère la valeur correspondant au nom spécifié dans l'argument depuis la session avec ʻObject type`
De plus, je ne l'utiliserai pas cette fois
--session.getAttributeNames ()
・ ・ ・ Récupère les noms de paramètres stockés dans la session sous forme de tableau de type chaîne
--session.lastAccessedTime ()
・ ・ ・ Obtenez la dernière connexion de la session
Etc.
Accédez à nouveau à login.jsp
.
Entrez "Hato" pour vous connecter.
Je pense que l'heure actuelle est approximativement affichée.
Ensuite, actualisez la page avec la touche F5
sans interruption (ne le faites pas sur le formulaire de saisie réel ou la page produit)
L'heure ne change pas. Les 20 secondes dont vous avez défini la date d'expiration plus tôt sont considérées comme «même connexion».
Puis rechargez après un certain temps.
Puisqu'une session est également un type de cookie, vous pouvez vérifier la session de la même manière que [Vérifions les cookies](# Vérifions les cookies). Cependant, il s'agit d'une chaîne de caractères difficile afin qu'elle ne puisse pas être modifiée autant que possible.
C'est tout pour cette fois. Je me demande si je peux le mettre dans le cadre bientôt ...
Recommended Posts