Cookie, sesi, dan filter biasanya digunakan dalam aplikasi web. Cookie dan sesi digunakan untuk menyimpan data tertentu. Filter filter mulai berlaku setelah browser membuat permintaan dan sebelum latar belakang mengeksekusi permintaan tertentu. Alasan mengapa ketiganya disatukan adalah karena mereka sering digabungkan, seperti beberapa program login .
Cookie adalah mekanisme browser, dan sesi adalah mekanisme server, tetapi pada kenyataannya, cookie juga dihasilkan oleh server dan kemudian dikembalikan ke browser, tidak dihasilkan oleh browser itu sendiri. Ketika browser mengirimkan permintaan, itu akan menyatukan cookie jika memiliki cookie yang valid.
Semua cookie digunakan karena protokol HTTP pada awalnya merupakan protokol tanpa kewarganegaraan, yang berarti bahwa melalui protokol HTTP itu sendiri, server tidak dapat menentukan apakah browser telah mengaksesnya sebelumnya.
Metode penulisan filter dan servlet serupa. Saat menulis kode terkait, Anda perlu mengimplementasikan antarmuka filter dan menulis ulang metode terkait. Biasanya, metode dofilter lebih sering diubah. Jika kode filter harus efektif setelah menulis, perlu untuk mengkonfigurasi konfigurasi tertentu di web.xml seperti mengkonfigurasi servlets.
Berikut adalah kode sampel login sederhana yang menggabungkan cookie, sesi, servlet, dan filter:
Tentukan kelas entitas pengguna untuk bertindak sebagai data basis data. Pola singleton digunakan di sini untuk memastikan bahwa hanya satu objek contoh:
model paket; / ** * Kelas Entitas Informasi Pengguna * * @Author tuzongxun123 * */ kelas publik userModel {private string username; kata sandi string pribadi; // mode singleton, pastikan bahwa hanya ada satu instance objek pengguna public static usermodel getInstance () {userModel user = new usermodel ("zhangsan", "123456"); Pengguna Kembali; } private usermodel (string username, string password) {this.userName = userName; this.password = kata sandi; } string publik getUserName () {return username; } public string getPassword () {return kata sandi; }} Login pengguna ke antarmuka index.jsp dan gunakan fitur JSP dalam tindakan formulir untuk mendapatkan jalur proyek:
<%@ page language = "java" import = "java.util.*" contentType = "text/html; charset = utf-8" pageEncoding = "utf-8"%> <! Doctype html public "-// w3c // dtd html 4.01 transisi // en" "http://www.w3.org/tr/html4/loose.dtd"> <html> <head> <meta http-equiv = "konten-tipe" konten = "teks/html; charset = utf-8"> <iteme> cookeeandfiltertest </title </title </head> </title> <itement> cookeeandfiltertest </title </title </head> </head> <itement> cookeeandfiltertes </title </title </head> </head> <form cookeieDfiltertes </title> </head> </head> </head> <itement> cookeeanDfilterTest </title> </head> </head> </Body> </Body> <nite> CookeeanDfilterTest action = "< %= request.getContextPath () %>/logInservlet" Method = "Post"> nama pengguna: <input type = "text" name = "username"/> </br> Kata sandi: <input type = "kata sandi" name = "kata sandi"/> </br> <input type = "submit" value = "lOGIN"/</FIGMAS
Servlet latar belakang yang sesuai:
paket servlettest; impor java.io.ioException; impor javax.servlet.servletException; impor javax.servlet.http.cookie; impor javax.servlet.http.httpservlet; impor javax.servlet.http.httpservletRequest; impor javax.servlet.http.httpservletResponse; impor javax.servlet.http.httpsession; Model Impor.usermodel; LogInservlet kelas publik memperluas httpservlet {@override void doGet (httpservletRequest req, httpservletResponse resp) melempar servletException, ioException {this.dopost (req, resp); } @Override void dopost (httpservletRequest req, httpservletResponse resp) melempar servletException, ioException {string username = req.getParameter ("nama pengguna"); Kata sandi string = req.getParameter ("kata sandi"); // Simulasikan data database userModel user = usermodel.getInstance (); String dbusername = user.getUserName (); String dbpassword = user.getPassword (); if (dbuserName.equals (username) && dbpassword.equals (kata sandi)) {// Baik nama pengguna dan kata sandi, buktikan bahwa login berhasil, set sesi dan cookie httpsession session = req.getSession (); session.setAttribute ("nama pengguna", nama pengguna); session.setAttribute ("kata sandi", kata sandi); Cookie cookie = cookie baru ("nama pengguna", nama pengguna); Cookie cookie2 = cookie baru ("kata sandi", kata sandi); // atur waktu penyimpanan cookie cookie.setmaxage (60); cookie2.setmaxage (60); // Kirim cookie ke browser resp.addcookie (cookie); resp.addcookie (cookie2); // Maju permintaan ke daftar pengguna req.getRequestDispatcher ("/userList"). Forward (req, resp); } else {// Maju permintaan ke halaman login req.getRequestDispatcher ("index.jsp"). Forward (req, resp); }; }} Permintaan untuk melompat setelah masuk:
paket servlettest; impor java.io.ioException; impor javax.servlet.servletException; impor javax.servlet.http.httpservlet; impor javax.servlet.http.httpservletRequest; impor javax.servlet.http.httpservletResponse; Model Impor.usermodel; Public Class UserListServlet memperluas httpservlet {@Override void doGet (httpservletRequest req, httpservletResponse resp) melempar servletException, ioException {this.dopost (req, resp); } @Override Protected void dopost (httpservletrequest req, httpservletresponse resp) melempar servletException, ioException {userModel user = userModel.getInstance (); // Cetak data buku daftar pengguna di browser resp.getWriter (). Tulis ("Nama pengguna:" + user.getusername () + "," + "kata sandi:" + user.getPassword ()); }} Konfigurasi Web.xml Proyek:
<? Xml Version = "1.0" encoding = "utf-8"?> <web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://java.sun.com/xmlns =" http://java.com/xmlns = "http://java.com/xmlns = xmlns: web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi: schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd "id =" webapp_id "version =" 2.5 "> <!-nama proyek saat mengakses-> <play-name> cookieandfiltertest </display-name> <!-servlet-n-servlet> </servlet> </levlin> </display-name> <!-servlet-n-servlet> </servlet> </levlin> </scill-name> <!-servlet configuration-> <play-name> </servlet> </swapte-name> <! <servlet-class> servlettest.logInservlet </servlet-class> </servlet> <servlet-mapping> <servlet-mapping> <servlet-name> Login </servlet-name> <rerst-pola>/loginServlet </url-pola> <servlet-name> <servlet> <servlet> </url-pattern> <servlet-name> <servlet> <servlet> </Url-Pattern> <servlet> <servlet> <servlet> <Servlet> </url-Pattern> <servlet> <servlet-class> servlettest.userListServlet </servlet-class> </servlet> <servlet-mapping> <servlet-name> UserList </servlet-name> <ratter-pola>/UserList </rerl-pola> </servlet-Mapping> <! <filter-class> filtertest.filtertest </filter-class> </tilter> <nilter-mapping> <nilter-name> LoginFilter </tiler-name> <rerl-pattern>/*</rull-pattern> </filter-mapping> <!-halaman default untuk mengakses dengan memasukkan nama proyek-> </welcome-file-file> <-list> <-list-
Kode Filter Java:
Paket filtertest; impor java.io.ioException; impor javax.servlet.filter; impor javax.servlet.filterchain; impor javax.servlet.filterconfig; impor javax.servlet.servletException; impor javax.servlet.servletrequest; impor javax.servlet.servletresponse; impor javax.servlet.http.cookie; impor javax.servlet.http.httpservletRequest; impor javax.servlet.http.httpservletResponse; Model Impor.usermodel; Public Class FilterTest mengimplementasikan filter {@Override public void dashing () {} @Override public void dofilter (permintaan servletRequest, respons servletResponse, rantai filterchain) lemparan ioException, servletexception {// langsung rilis httpservletRequest untuk permintaan Login, httpsvexcervexcervet (Langsung httpservletRequest untuk Login, httpsvexception {// langsung httpservletRequest untuk LOIGLEXCEVION {// LECRACTREVER (HTTPREQREQRECTION {// langsung HttpservletResponse resp = (httpservletResponse); String uri = req.getRequesturi (); if ("/cookieandfiltertest/loginservlet". kembali; } // Jika ini bukan permintaan login, tentukan apakah ada cookie cookie [] cookies = req.getCookies (); if (cookies! = null && cookies.length> 0) {string username = null; String password = null; // Tentukan apakah nama pengguna dan kata sandi dalam cookie konsisten dengan database. Jika konsisten, lepaskan, sebaliknya meneruskan permintaan ke halaman login untuk (cookie cookie: cookie) {if ("username" .equals (cookie.getname ())) {username = cookie.getValue (); } if ("password" .Equals (cookie.getName ())) {password = cookie.getValue (); }} UserModel user = usermodel.getInstance (); if (user.getUserName (). Equals (username) && user.getPassword (). Equals (kata sandi)) {rantai.dofilter (permintaan, respons); kembali; } else {// Redirect ke antarmuka login req.getRequestDispatcher ("/index.jsp"). Forward (req, resp); kembali; }} else {req.getRequestDispatcher ("/index.jsp"). Forward (req, resp); kembali; }} @Override public void init (filterconfig arg0) melempar servletException {}}Di atas adalah semua tentang artikel ini, saya harap akan sangat membantu bagi semua orang untuk belajar pemrograman Java.