Evästeet JSP:ssä esimerkin avulla

⚡ Älykäs yhteenveto

JSP-evästeet ovat pieniä tekstitiedostoja, jotka tallennetaan asiakasselaimeen ja jotka auttavat JSP-sovelluksia track-istuntoja, muistaa käyttäjän asetukset ja mukauttaa vastauksia useissa HTTP-pyynnöissä käyttämällä javax.servlet.http.Cookie-rajapintaa ja vakiovastausotsikoita.

  • 🍪 Määritelmä: JSP-evästeet ovat avainarvotekstitiedostoja, jotka tallennetaan asiakaslaitteeseen ja jotka luetaan pyyntöobjektin läpi jokaisella myöhemmällä HTTP-kutsulla.
  • 🔐 Turvallisuusliput: Secure-, HttpOnly- ja modernin SameSite-attribuutin asettaminen suojaa JSP-evästeitä sieppauksilta, komentosarjojen käytöltä ja sivustojen välisiltä pyyntöväärennöksiltä.
  • ⏱️ Elinikäinen hallinta: setMaxAge-metodi päättää, onko JSP-eväste pysyvä levyllä vai poistetaanko se automaattisesti selainistunnon päättyessä.
  • Standard-API: javax.servlet.http.Cookie-luokka yhdessä response.addCookie- ja request.getCookies-metodien kanssa kattaa luomisen, lähettämisen, haun ja poistamisen Servlet 4.x- ja 5.x-versioissa.
  • 🧪 Toimiva esimerkki: Kaksisivuinen käyttäjätunnus- ja sähköpostiosoite-demo näyttää, miten JSP-evästeet luodaan, lähetetään, säilytetään kymmenen tuntia ja luetaan takaisin seuraavan pyynnön yhteydessä.

Evästeet JSP:ssä esimerkin avulla

Mitä JSP-evästeet ovat?

JSP-evästeet ovat pieniä tekstitiedostoja, jotka JSP-pohjainen verkkopalvelin pyytää asiakasselainta tallentamaan käyttäjän laitteelle. Koska HTTP on tilaton protokolla, JSP-evästeet tarjoavat yksinkertaisen, standardeihin perustuvan tavan muistaa tietoja pyyntöjen välillä, kuten kirjautumistilan, kielivalinnan, teeman tai kaupan.ping ostoskorin tunnisteet.

  • JSP-evästeet ovat tekstitiedostoja, jotka selain tallentaa asiakaskoneelle.
  • He ovat tottuneet track-tiedot istunnonhallintaa, personointia ja analytiikkaa varten.
  • JSP tukee HTTP-evästeitä pohjana olevan Servlet-teknologian ja javax.servlet.http.Cookie-luokan kautta.
  • JSP-evästeet ovat transmitted HTTP-pyyntöjen ja -vastausten otsikoissa jokaisessa vastaavassa pyynnössä.
  • Kun selain on määritetty hyväksymään evästeet, se tallentaa ne levylle setMaxAge-määrityksen asettamaan viimeiseen käyttöpäivään asti.

Miksi käyttää JSP-evästeitä?

JSP-kehittäjät käyttävät evästeitä, koska HTTP-pyynnöt ovat toisistaan ​​riippumattomia. Ilman JSP-evästeitä palvelin ei tietäisi, että kaksi pyyntöä kuuluu samalle kävijälle. JSP:n evästeet ratkaisevat tämän ongelman minimoimalla palvelinpuolen tilan tarpeen.

  • istunto trackuningas: JSESSIONID-eväste yhdistää useita sivukatseluja yhteen loogiseen istuntoon.
  • personointi: JSP-evästeet voivat tallentaa kieli-, teema- tai asetteluasetuksia.
  • Todennusapuohjelmat: Muista minut -tokenit ja kirjautumistiedot sijaitsevat usein evästeissä, joissa on käytössä HttpOnly- ja Secure-liput.
  • Analytics: JSP-evästeet tallentavat palaavat kävijät, viittaavat sivustot ja konversioreitit.

JSP-evästeiden tyypit

  1. Pysyvä eväste: Pysyvä JSP-eväste pysyy tallennettuna laitteelle setMaxAge-määrityksellä asetetun ajan. Se auttaa sovellusta muistamaan asetukset ja kirjautumistiedot selaimen uudelleenkäynnistyksen jälkeen.
  2. Ei-pysyvä eväste: Ei-pysyvä JSP-eväste, jota kutsutaan myös istuntoevästeeksi, sijaitsee vain selaimen muistissa ja poistetaan, kun käyttäjä sulkee selaimen. Sitä käytetään enimmäkseen lyhytaikaisiin istuntoevästeisiin. trackuningas.

JSP-evästeiden menetelmät

javax.servlet.http.Cookie-luokka paljastaa seuraavat metodit, joita käytetään useimmiten JSP-evästeiden kanssa työskenneltäessä.

  • public void setDomain(String-toimialue)

    Tämä JSP set cookie -metodi asettaa verkkotunnuksen, johon JSP-eväste liittyy.

  • julkinen merkkijono getDomain()

    Tämä JSP:n get cookie -metodi palauttaa verkkotunnuksen, johon JSP-eväste liittyy.

  • public void setMaxIkä(int vanhenemispäivä)

    Se asettaa enimmäisajan sekunteina ennen JSP-evästeen vanhenemista. Nolla-arvo poistaa evästeen ja negatiivinen arvo tekee siitä istuntoevästeen.

  • public int getMaxIkä()

    Se palauttaa JSP-evästeen enimmäisiän sekunteina.

  • julkinen merkkijono getNimi()

    Se palauttaa JSP-evästeen nimen.

  • public void setValue(String-arvo)

    Asettaa JSP-evästeeseen liittyvän arvon.

  • julkinen merkkijono haeArvo()

    Palauttaa JSP-evästeeseen liittyvän arvon.

  • public void setPath(String polku)

    Tämä JSP-metodin evästeasetus asettaa URL polku, johon evästettä sovelletaan.

  • julkinen merkkijono getPath()

    Se palauttaa URL polku, johon JSP-eväste liittyy.

  • public void setSecure(boolean-lippu)

    Se merkitsee JSP-evästeen niin, että se lähetetään vain salattujen HTTPS-yhteyksien kautta.

  • public void setKommentti(String cmt)

    Se kuvaa JSP-evästeen tarkoituksen.

  • julkinen merkkijono getComment()

    Se palauttaa JSP-evästettä kuvaavan kommentin.

JSP-evästeiden käsittely

JSP-evästeiden kanssa työskentelyyn kuuluu kolme toistettavaa vaihetta. Samaa mallia käytetään kirjautumistilan, teeman vaihtamisen ja kaupan osalta.ping kärryt.

  1. Luo JSP Cookie -objekti Cookie-konstruktoria käyttäen.
  2. Määritä evästeen ominaisuudet, erityisesti enimmäisikä, polku ja suojausliput.
  3. Lähetä eväste selaimelle HTTP-vastausotsikoiden kautta käyttämällä response.addCookie-metodia.

JSP-evästeen luominen

Uusi JSP-eväste luodaan luomalla javax.servlet.http.Cookie-instanssi nimellä ja arvolla. Eväste liitetään sitten vastausobjektiin, jotta selain tallentaa sen.

JSP-evästeiden lukeminen

Jokaisella seuraavalla pyynnöllä selain lähettää vastaavat JSP-evästeet takaisin palvelimelle. Sivu lukee ne kutsumalla request.getCookies-funktiota, joka palauttaa taulukon evästeobjekteja. Sovellus käy sitten iteroiden läpi taulukon, etsii jokaisen evästeen nimen perusteella ja käyttää sen arvoa.

JSP-evästeen poistaminen

JSP-evästeen poistamiseksi palvelin luo uuden evästeen samalla nimellä, asettaa sen arvoksi tyhjän merkkijonon, kutsuu setMaxAge-funktiota nollalla ja lisää sen vastaukseen. Selain poistaa sitten tallennetun evästeen seuraavassa vastauksessa.

Esimerkki evästeistä JSP:ssä

Tässä JSP-eväste-esimerkissä sovellus luo kaksi evästettä käyttäjätunnukselle ja sähköpostiosoitteelle, pitää niitä voimassa kymmenen tuntia ja lukee sitten arvot takaisin toiselle sivulle nimeltä action_cookie_main.jsp.

Action_cookie.jsp

<%-- Action_cookie.jsp: input form for JSP Cookies demo --%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!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=ISO-8859-1">
<title>Guru Cookie</title>
</head>
<body>
<form action="action_cookie_main.jsp" method="GET">
Username: <input type="text" name="username">
<br />
Email: <input type="text" name="email" />
<input type="submit" value="Submit" />
</form>
</body>
</html>

Action_cookie_main.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%

   Cookie username = new Cookie("username",
 			  request.getParameter("username"));
   Cookie email = new Cookie("email",
			  request.getParameter("email"));


   username.setMaxAge(60*60*10);
   email.setMaxAge(60*60*10);

   // Add both the JSP Cookies in the response header.
   response.addCookie( username );
   response.addCookie( email );
%>


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru Cookie JSP</title>
</head>
<body>

<b>Username:</b>
   <%= request.getParameter("username")%>
<b>Email:</b>
   <%= request.getParameter("email")%>

</body>
</html>

Selitys Code

Action_cookie.jsp

Code Rivi 10–15: Sivulla esitellään lomake, joka lähetetään action_cookie_main.jsp-tiedostoon. Kaksi syöttökenttää, käyttäjätunnus ja sähköpostiosoite, keräävät tietoja käyttäjältä sekä lähetyspainike.

Action_cookie_main.jsp

Code Rivi 6–9: Kaksi evästeobjektia, käyttäjätunnus ja sähköpostiosoite, luodaan käyttämällä request.getParameter-metodia lomakkeen lähettämien arvojen lukemiseen.

Code Rivi 12–13: setMaxAge-metodia kutsutaan luvulla 60 kerrottuna 60 kerrottuna 10, mikä asettaa kunkin JSP-evästeen elinkaaren kymmeneen tuntiin.

Code Rivi 16–17: Nämä kaksi evästettä liitetään vastaukseen response.addCookie-metodilla. Selain lähettää ne sitten takaisin seuraavissa pyynnöissä, ja palvelin lukee ne käyttämällä request.getCookies- tai request.getParameter-metodia nykyiselle pyynnölle.

ulostulo

Kun suoritat yllä olevan koodin, saat seuraavan tulosteen.

JSP-evästeiden menetelmät

JSP-evästeiden menetelmät

Kun action_cookie.jsp suoritetaan, selain näyttää kaksi kenttää, käyttäjätunnuksen ja sähköpostiosoitteen. Kun käyttäjä täyttää ne ja napsauttaa Lähetä-painiketta, action_cookie_main.jsp luo vastaavat JSP-evästeet palvelimelle, tallentaa ne asiakasohjelmaan ja näyttää arvot vahvistaen, että evästeet luotiin onnistuneesti.

JSP-evästeiden parhaat käytännöt

Nykyaikaisten verkkosovellusten tulisi käsitellä JSP-evästeitä arkaluonteisina tietoina. Seuraavat käytännöt ovat yhdenmukaisia ​​nykyisten Servlet 4.x- ja Servlet 5.x -käyttöönottojen kanssa.

  • Käytä vain Http:tä: Merkitse todennusevästeet HttpOnly-tilaan, jotta asiakaspuolen komentosarjat eivät voi lukea niitä.
  • Käytä suojattua: Lähetä evästeet vain HTTPS:n kautta kutsumalla setSecure(true).
  • Käytä SameSite-sivustoa: Määritä SameSite-attribuutti (Lax tai Strict) säilön tai vastausotsikoiden kautta sivustojen välisten pyyntöjen väärentämisen estämiseksi.
  • Pidä arvot pieninä: Tallenna tunniste evästeeseen ja säilytä tiedot palvelimen puolella olevassa tallennustilassa.
  • Aseta tarkka voimassaoloaika: Käytä setMaxAge-funktiota ennustettavan toiminnan saavuttamiseksi eri selaimissa.

UKK

JSP-evästeet ovat pieniä tekstitiedostoja, jotka tallentavat tietoja asiakasselaimeen. JSP-sivut käyttävät niitä istuntokohtaisesti. trackuningas, käyttäjän asetusten muistaminen, kirjautumistilan tukeminen ja analytiikan mahdollistaminen useissa HTTP-pyynnöissä samaan verkkosovellukseen.

Merkitse evästeet HttpOnly-asetuksilla, jotta komentosarjat eivät voi lukea niitä, kutsu setSecure(true)-funktiota, jotta ne kulkevat vain HTTPS:n kautta, ja määritä SameSite-attribuutin arvoksi Lax tai Strict vähentääksesi sivustojen välisten pyyntöjen väärentämisriskiä nykyaikaisissa selaimissa.

Luo uusi eväste samalla nimellä ja polulla, aseta sen arvoksi tyhjä merkkijono, kutsu setMaxAge(0)-funktiota ja lisää se vastaukseen funktiolla response.addCookie. Selain poistaa sitten vastaavan tallennetun evästeen välittömästi.

Pysyvällä JSP-evästeellä on positiivinen enimmäisikä ja se tallennetaan levylle, kunnes kyseinen aika umpeutuu. Istuntoevästeellä on negatiivinen enimmäisikä, se sijaitsee vain selaimen muistissa ja poistetaan, kun selainikkuna suljetaan.

Tekoälypohjainen analytiikka voi pisteyttää evästeliikennettä reaaliajassa, merkitä varastettuja istuntotunnisteita, havaita epätavallisia geolokaatiohyppyjä ja käynnistää tehostetun todennuksen. Koneoppimismallit auttavat myös virittämään SameSite-, HttpOnly- ja Secure-käytäntöjä havaittujen hyökkäysmallien perusteella.

Kyllä. Tekoälyavustajat voivat skannata vanhaa JSP- ja Servlet-koodia, kirjoittaa uudelleen jakarta.servlet.http.Cookie-kutsuja Servlet 5.x:ssä, lisätä SameSite- ja HttpOnly-lippuja sekä ehdottaa istuntotunnisteiden turvallisempaa tallennusta rikkomatta olemassa olevaa sovelluslogiikkaa.

Tiivistä tämä viesti seuraavasti: