Java Çerezleri: Çerezleri kullanarak Java Servlet Oturum Yönetimi nasıl yapılır
Yayınlanan: 2020-08-19
Web Sayfalarının hafızası yoktur. Sayfadan sayfaya giden bir kullanıcı, web sitesi tarafından tamamen yeni bir ziyaretçi olarak kabul edilecektir. Oturum çerezleri, ziyaret ettiğiniz web sitesinin sayfadan sayfaya hareketinizi takip etmesini sağlar, böylece siteye vermiş olduğunuz bilgilerin aynısı sizden istenmez.
Çerezler, ziyaret ettiğiniz her yeni alanın kimliğini doğrulamak veya yeniden işlemek zorunda kalmadan bir sitenin birçok sayfasında hızlı ve kolay bir şekilde ilerlemenize olanak tanır.
Ancak bazen Java web uygulamalarında istemcinin kim olduğunu bilmeli ve talebi buna göre işlemeliyiz.
Örneğin, bir alışveriş sepeti uygulaması, bir öğe ekleme talebini kimin gönderdiğini ve öğenin hangi sepete eklenmesi gerektiğini veya ödeme talebini kimin gönderdiğini bilmelidir, böylece müşteriyi düzeltmek için tutarı tahsil edebilir.
Oturum, istemci ve sunucu arasındaki bir konuşma durumudur ve istemci ile sunucu arasında birden çok istek ve yanıttan oluşabilir. HTTP ve Web Sunucusu durumsuz olduğundan, bir oturumu sürdürmenin tek yolu, her istek ve yanıtta sunucu ve istemci arasında oturum hakkında bazı benzersiz bilgilerin (oturum kimliği) iletilmesidir.

Şimdi Eclipse'de Çerezler kullanarak Java Servlet Oturum Yönetimini açıklayan Basit Dinamik Web Projesi oluşturalım.
İşte adımlar:
- Dinamik Web Projesi Oluşturun:
CrunchifySessionManagementByCookie
-
crunchify-login.html
: Bir uygulamanın karşılama sayfası oluşturun -
CrunchifyLoginServlet.java
– Bu, Oturum açma isteğiyle ilgilenir -
CrunchifyLogoutServlet.java
– Bu, Çıkış isteğiyle ilgilenir -
web.xml
– Dağıtım Tanımlayıcı Dosyası (web.xml'i görmüyor musunuz? Bu öğreticiyi izleyin) -
CrunchifyLoginSuccessful.jsp
– Başarı TalebiLoginSuccess.jsp
yönlendiriliyor, bu tanımlama bilgisi orada oturumu izlemek için kullanılacak. Ayrıca çerez zaman aşımının 60 dakikaya ayarlandığına dikkat edin.

Bir diğeri okumalı:
- Spring MVC Örneği/Öğreticisi: Merhaba Dünya – Spring MVC 3.2.1
- Spring MVC'de Her 3 Saniyede Bir Sparkline Grafiği Nasıl Güncellenir (Gerçek Zamanlı Güncelleme)
1. crunchify-login.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
< ! DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" > < html > < head > < meta http - equiv = "Content-Type" content = "text/html; charset=US-ASCII" > < title > Crunchify Login Form - Session Management by Cookies < / title > <style type ="text/css"> body { background-image : url ( 'https://cdn.crunchify.com/bg.png' ) ; } </style> < / head > < body > < div align = "center" > < br > < br > < form action = "CrunchifyLoginServlet" method = "post" > Enter Your Username : < input type = "text" name = "crunchifyUser" > < br > Enter Your Password : < input type = "password" name = "crunchifyPassword" > < br > < br > < br > < input type = "submit" value = "Login" > < / form > < / div > < / body > < / html > |
2. CrunchifyLoginServlet.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
package com . crunchify . tutorials ; import java . io . IOException ; import java . io . PrintWriter ; import javax . servlet . RequestDispatcher ; import javax . servlet . ServletException ; import javax . servlet . annotation . WebServlet ; import javax . servlet . http . Cookie ; import javax . servlet . http . HttpServlet ; import javax . servlet . http . HttpServletRequest ; import javax . servlet . http . HttpServletResponse ; /* * Author: Crunchify.com * */ /** * Servlet implementation class LoginServlet */ @WebServlet ( "/CrunchifyLoginServlet" ) public class CrunchifyLoginServlet extends HttpServlet { private static final long serialVersionUID = 1L ; private final String userID = "CrunchifyUser" ; private final String password = "CrunchifyPassword" ; protected void doPost ( HttpServletRequest request , HttpServletResponse response ) throws ServletException , IOException { // get request parameters for userID and password String crunchifyUser = request . getParameter ( "crunchifyUser" ) ; String pwd = request . getParameter ( "crunchifyPassword" ) ; if ( userID . equals ( crunchifyUser ) && password.equals(pwd)) { Cookie crunchifyCookie = new Cookie("crunchifyUser", crunchifyUser); // setting cookie to expiry in 60 mins crunchifyCookie . setMaxAge ( 60 * 60 ) ; response . addCookie ( crunchifyCookie ) ; response . sendRedirect ( "CrunchifyLoginSuccess.jsp" ) ; } else { RequestDispatcher rd = getServletContext ( ) . getRequestDispatcher ( "/crunchify-login.html" ) ; PrintWriter out = response . getWriter ( ) ; out . println ( "<font color=red>Please make sure you enter UserID/Pass as \"CrunchifyUser : CrunchifyPassword\".</font>\n" ) ; rd . include ( request , response ) ; } } } |
3. CrunchifyLogoutServlet.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
package com . crunchify . tutorials ; import java . io . IOException ; import javax . servlet . ServletException ; import javax . servlet . annotation . WebServlet ; import javax . servlet . http . Cookie ; import javax . servlet . http . HttpServlet ; import javax . servlet . http . HttpServletRequest ; import javax . servlet . http . HttpServletResponse ; /* * Author: Crunchify.com * */ /** * Servlet implementation class LogoutServlet */ @WebServlet ( "/CrunchifyLogoutServlet" ) public class CrunchifyLogoutServlet extends HttpServlet { private static final long serialVersionUID = 1L ; protected void doPost ( HttpServletRequest request , HttpServletResponse response ) throws ServletException , IOException { response . setContentType ( "text/html" ) ; Cookie loginCookie = null ; Cookie [ ] cookies = request . getCookies ( ) ; if ( cookies ! = null ) { for ( Cookie cookie : cookies ) { if ( cookie . getName ( ) . equals ( "crunchifyUser" ) ) { loginCookie = cookie ; break ; } } } if ( loginCookie ! = null ) { loginCookie . setMaxAge ( 0 ) ; response . addCookie ( loginCookie ) ; } response . sendRedirect ( "crunchify-login.html" ) ; } } |
4. web.xml
1 2 3 4 5 6 7 8 9 10 |
<? xml version = "1.0" encoding = "UTF-8" ?> < web - app xmlns : xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns = "http://java.sun.com/xml/ns/javaee" xsi : schemaLocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id = "WebApp_ID" version = "3.0" > < display - name > CrunchifySessionManagementByCookie < / display - name > < welcome - file - list > < welcome - file > crunchify - login . html < / welcome - file > < / welcome - file - list > < / web - app > |
5. CrunchifyLoginSuccessful.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
<% @ page language = "java" contentType = "text/html; charset=US-ASCII" pageEncoding = "US-ASCII" %> < ! DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" > < html > < head > < meta http - equiv = "Content-Type" content = "text/html; charset=US-ASCII" > < title > Crunchify - Login Successful - Session management by Cookies < / title > <style type ="text/css"> body { background-image : url ( 'https://cdn.crunchify.com/bg.png' ) ; } </style> < / head > < body > < div align = "center" > < br > < br > <% String userName = null ; Cookie [ ] cookies = request . getCookies ( ) ; if ( cookies ! = null ) { for ( Cookie cookie : cookies ) { if ( cookie . getName ( ) . equals ( "crunchifyUser" ) ) userName = cookie . getValue ( ) ; } } if ( userName == null ) response . sendRedirect ( "crunchify-login.html" ) ; %> < h3 > Hi <%= userName %> , Login successful . < / h3 > < br > < form action = "CrunchifyLogoutServlet" method = "post" > < input type = "submit" value = "Logout" > < / form > < / div > < / body > < / html > |
Şimdi bu örneği çalıştıralım:
-
CrunchifySessionManagementByCookie
Project'i Tomcat'e Dağıtın ve Tomcat'i Çalıştırın.

- Tarayıcı URL'nizi http://localhost:8080/CrunchifySessionManagementByCookie/crunchify-login.html adresine yönlendirin

- Başarı Sayfası

- Başarısız Giriş Sayfası

Şimdi Nasıl Kontrol Edilir Çerezin doğru ayarlanıp ayarlanmadığını.

Herhangi bir Cookie Manager Extension
indirmeyi deneyin ve tarayıcınızda aşağıda görüldüğü gibi Cookie
görmelisiniz.

Servlet Cookie Management kodunun üzerinde çalışan herhangi bir sorunla karşılaşırsanız bana bildirin.