Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pembangunan backend Java: Pengurusan keadaan klien API menggunakan Java Servlet Cookies

Pembangunan backend Java: Pengurusan keadaan klien API menggunakan Java Servlet Cookies

WBOY
WBOYasal
2023-06-17 10:27:09788semak imbas

Dengan pembangunan Internet yang berterusan, pembangunan aplikasi rangkaian menjadi semakin penting. Dalam proses ini, pengurusan negeri amat penting untuk permohonan. Sama ada log masuk pengguna, troli beli-belah, sejarah penyemakan imbas atau status lain, mereka perlu diuruskan.

Dengan seni bina pemisahan bahagian hadapan dan belakang, RESTful API telah menjadi kaedah pembangunan bahagian pelayan arus perdana. Dalam klien API, kuki ialah kaedah storan keadaan yang paling biasa. Artikel ini akan memperkenalkan cara menggunakan Java Servlet Cookie untuk pengurusan keadaan klien API.

  1. Apakah itu Kuki

Kuki ialah fail teks kecil yang boleh disimpan pada klien (biasanya penyemak imbas) untuk menyimpan maklumat status berkaitan aplikasi . Apabila pengguna mengakses aplikasi web, aplikasi boleh menghantar kuki ke penyemak imbas pengguna melalui pengepala respons HTTP dan penyemak imbas menyimpan kuki secara setempat. Pada kali seterusnya pengguna melawat aplikasi, penyemak imbas akan menghantar kuki yang dikaitkan dengannya secara automatik dan aplikasi boleh membaca maklumat keadaan daripada kuki.

Kuki mempunyai ciri berikut:

  • Kuki disimpan dalam bentuk pasangan nilai kunci
  • Setiap kuki mempunyai nama dan nilai yang sepadan; >
  • Data yang disimpan dalam kuki akan dihantar ke pelayan bersama dengan permintaan HTTP
  • boleh menetapkan nama domain dan laluan untuk menghantar kuki ke
  • boleh menetapkan masa tamat tempoh dan keselamatan kuki Properties dsb.
Oleh itu, Kuki telah menjadi cara yang sangat mudah untuk mengurus keadaan Aplikasi boleh menggunakan Kuki untuk menyimpan maklumat keadaan seperti ID sesi dan nilai kunci pengguna.

    Penggunaan Kuki dalam Servlet Java
Dalam Servlet Java, objek Kuki digunakan untuk mengendalikan kuki. Menggunakan kuki untuk menyimpan maklumat keadaan memerlukan langkah berikut:

    Mencipta Objek Kuki
Anda boleh menggunakan kod berikut untuk mencipta objek Kuki:

Cookie cookie = new Cookie("cookie_name", "cookie_value");

di mana, "cookie_name" ialah nama kuki dan "cookie_value" ialah nilai kuki.

    Tambahkan Kuki pada pengepala respons HTTP
  1. response.addCookie(cookie);
    Dapatkan Kuki daripada pengepala permintaan HTTP
  1. Cookie[] cookies = request.getCookies();
    Baca data daripada Kuki
  1. for (Cookie cookie : cookies) {
        if (cookie.getName().equals("cookie_name")) {
            String cookieValue = cookie.getValue();
            // Do something with cookieValue
        }
    }
Apabila klien menghantar permintaan HTTP, penyemak imbas menghantar Kuki yang disimpan secara setempat ke pelayan. Gunakan respons.addCookie(kuki) Servlet untuk menambah kuki pada pengepala respons Apabila penyemak imbas menerima respons, ia akan menyimpan kuki secara setempat dan menghantar kuki ke pelayan melalui pengepala pada permintaan seterusnya.

Berikut ialah contoh pelaksanaan khusus.

    Contoh pelaksanaan pengurusan sesi
Berikut ialah contoh pengurusan sesi Java Servlet yang mudah Dalam contoh ini, kami menggunakan Cookie untuk menyimpan ID sesi pengguna , Untuk mencapai kesan pengurusan negeri pelanggan.

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Optional;
import java.util.UUID;

public class SessionServlet extends javax.servlet.http.HttpServlet {
    private static final long serialVersionUID = -3436700273785948283L;
    private static final String SESSION_COOKIE_NAME = "session_id";

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html");
        resp.setCharacterEncoding("UTF-8");

        Optional<Cookie> sessionCookie = getSessionCookie(req);
        sessionCookie.ifPresent(cookie -> {
            resp.getWriter().write(String.format("Found session cookie with value %s
", cookie.getValue()));
        });

        if (!sessionCookie.isPresent()) {
            String sessionId = generateSessionId();
            Cookie newSessionCookie = new Cookie(SESSION_COOKIE_NAME, sessionId);
            resp.addCookie(newSessionCookie);
            resp.getWriter().write(String.format("No session cookie found, created session with id %s
", sessionId));
        }
    }

    private String generateSessionId() {
        return UUID.randomUUID().toString();
    }

    private Optional<Cookie> getSessionCookie(HttpServletRequest req) {
        Cookie[] cookies = req.getCookies();
        if (cookies != null) {
            for (Cookie cookie : cookies) {
                if (cookie.getName().equals(SESSION_COOKIE_NAME)) {
                    return Optional.of(cookie);
                }
            }
        }
        return Optional.empty();
    }
}

Dalam kod di atas, kami mula-mula menyemak sama ada pelanggan sudah mempunyai ID Sesi Jika tidak, jana satu, simpan dalam Kuki dan kembalikan kepada pelanggan. Jika ID Sesi sudah wujud, ia adalah output kepada klien.

Contoh ini menunjukkan cara menggunakan Java Servlet Cookies untuk pengurusan negeri.

    Kesimpulan
Artikel ini memperkenalkan cara menggunakan Java Servlet Cookie untuk mengurus status klien API. Dalam aplikasi web, pengurusan negeri adalah sangat penting, dan kuki ialah cara pengurusan negeri yang sangat biasa. Dalam Java Servlet, menggunakan kuki memerlukan mencipta objek Kuki, menambahkannya pada pengepala respons HTTP, mendapatkan Kuki daripada pengepala permintaan HTTP dan membaca data daripada Kuki. Dengan melaksanakan contoh pengurusan sesi yang mudah, kami menunjukkan cara menggunakan Kuki Servlet untuk pengurusan negeri.

Atas ialah kandungan terperinci Pembangunan backend Java: Pengurusan keadaan klien API menggunakan Java Servlet Cookies. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn