Login otomatis adalah membantu pengguna masuk tanpa memasukkan nama pengguna dan kata sandi mereka lagi saat menggunakan halaman web ini berkali -kali.
Login otomatis berarti bahwa pengguna menyimpan informasi login pengguna dan orang ke cookie file lokal.
Nama, nilai - cookie baru (kunci, nilai);
Nilai Path-Default adalah jalur di mana Serlvet yang saat ini menghemat cookie berada.
Jika cookie berada di jalur seperti itu: http: // loclhost: 8080/Project/ABC/Aservlet
Maka jalur cookie adalah: http: // loclhost/proyek/abc
Maka itu artinya:
Hanya servlet yang terletak di http: // direktori loclhost/proyek/abc yang dapat membaca nilai cookie ini.
jika:
Simpan kelas cookie: http: // loclhost: 8080/proyek/a/b/aservlet
Kemudian jalur default cookie adalah: http: // loclhost/proyek/a/b
Langkah 1: Kembangkan halaman login
<c: pilih> <c: when test = "$ {Sesi kosong Sesionscope.name}"> <form name = "x" Method = "POST" ACTION = "<C: URL Value = '/LOGINSERVLET'/>"> Nama: <Input Type = "Text" Name = "Name"/> <br/> Auto: <Input Type = "NOOT" NOOT "-NOOT"-NOOT "-NOOT"-AUTO "AUTO"-AUTO "NOOT" AUTO "AUTO" NOOT " type = "Radio" name = "Auto" value = "1"> 1 hari <br/> <input type = "Radio" name = "auto" value = "7"> 1 minggu <br/> <input type = "kirim"/> </form> </c: when> <c: jika tidak ada yang sudah masuk: $ {name} <br/> <c = " value = '/LOGINSERVLET' //> "> LOGINSERVLET '/LOGINSERVLET' //"> LOGINSERVLET </a> </c: sebaliknya> </c: pilih>Langkah 2: Simpan cookie dengan sukses
public void dopost (permintaan httpservletRequest, respons httpservletResponse) melempar servletException, ioException {// menerima nama pengguna string name = request.getParameter ("name"); String auto = request.getParameter ("Auto"); // Masukkan informasi pengguna di Sesi request.getSession (). SetAttribute ("Name", Name); // pertahankan apakah otomatis -1 if (! Auto.equals (" -1")) {int day = integer.parseint (auto); // 1 | 7 int detik = 60*60*24*hari; // Deklarasikan cookie cookie c = cookie baru ("autologin", name); c.setmaxage (detik); C.SetPath (request.getContextPath ()); // Simpan Cookie Response.addcookie (C); }}Langkah 3: Login otomatis harus dicapai jika Anda memerlukan akses ke halaman apa pun di situs web ini.
Tulis Pengawas untuk mempertimbangkan semua url =/*. Baca semua cookie di Dofilter. Apakah ada cookie nama dengan nama autologin?
Selalu lepaskan.
public void dofilter (permintaan servletRequest, respons servletResponse, rantai filterchain) melempar ioException, servletException {// baca cookie di sini permintaan httpservletrequest req = (httpservletrequest); // Dapatkan semua cookie cookie [] cs = req.getCookies (); if (cs! = null) {for (cookie c: cs) {if (c.getname (). Equals ("AutoGin")) {// Jika ada cookie yang secara otomatis dicatat dalam nilai string = c.getValue (); // nama pengguna // Login berhasil merujuk ke req.getSession (). merusak; }}} // terlepas dari apakah itu secara otomatis masuk ke rantai.dofilter (permintaan, respons); }Keempat melibatkan: Konfigurasikan semua urls =/* di web.xml
<filter> <nilter-name> auto </tilter-name> <nilter-class> cn.itcast.filter.autofilter </filter-class> </tiler> <nilter-Mapping> <nilter-name> Auto </tilter-name> <RURL-PATH>/*</RURL-POLATH> </TERFERTER-MAPPING>
Langkah 5: Keluar pengembangan
System.err.println ("User Exit"); // hapus seluruh sesi request.getSession (). Invalidate (); Cookie c = cookie baru ("autologin", "ddd"); c.setmaxage (0); C.SetPath (request.getContextPath ()); response.addcookie (c); // request.getSession (). RemoveAttribute ("Name"); response.sendredirect (request.getContextPath ()+"/index.jsp");Langkah 6: Mengoptimalkan kode
Karena pengguna juga akan memasukkan metode autofiilter dofilter saat masuk secara manual, dan membaca semua cookie untuk melintasi sekali. Dan traversal ini berlebihan untuk pengguna.
Oleh karena itu, URL LogInservet harus digunakan dalam Dofiler.
Dan Anda tidak dapat masuk secara otomatis saat keluar.
Poin Pengetahuan Tambahan:
Pastikan pengguna masuk
Paket cn.hongxin.filter; import java.io.ioException; impor javax.servlet.filter; import javax.servlet.filterchain; import javax.servlet.filterconfig; import javax.servletexception; impor javax.servlet. javax.servlet.servletResponse; impor javax.servlet.http.httpservletrequest; impor javax.servlet.http.httpservletResponse; impor javax.servlet.http.httppsession; public class LoginFilter implements Filter{ public void init(FilterConfig filterConfig) throws ServletException { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { //Forcing request to http... HttpServletRequest req = (HttpServletRequest) request; // Dapatkan sesi httpsession ss = req.getSession (); // Dapatkan pengguna dari sesi if (ss.getAttribute ("user") == null) {system.err.println ("Anda belum masuk belum"); req.getSession (). setattribute ("msg", "silakan masuk pertama"); // redirect ke login httpservletResponse resp = (httpservletresponse) respons; resp.sendredirect (req.getContextPath ()+"/index.jsp"); [W2]} else {// rilis rantai.dofilter (permintaan, respons); }} public void dashar () {}}Konfigurasikan ke web.xml dan pertimbangkan JSPS/*:
<filter> <nilter-name> Login </tiler-name> <nift-class> cn.itcast.filter.loginfilter </filter-class> </filter> <nilter-Mapping> <nilter-name> Login </tiler-name> <roull-pattern>/jsps/*</url-Pattern> <ruRl-Pattern>/Views/JSPS/*</Url-Pattern> <rerl-Pattern>/Views/JSPS/*</Url-Pattern> <rerl-Pattern>
Di atas adalah semua tentang artikel ini, saya harap ini akan membantu untuk pembelajaran semua orang.