Les cookies, les sessions et les filtres sont généralement utilisés dans les applications Web. Les cookies et les sessions sont utilisés pour enregistrer certaines données. Les filtres du filtre entrent en vigueur après que le navigateur a fait une demande et avant que l'arrière-plan exécute une demande spécifique. La raison pour laquelle ces trois sont assemblés est qu'ils sont souvent combinés, comme certains programmes de connexion .
Les cookies sont le mécanisme du navigateur, et la session est le mécanisme du serveur, mais en fait, les cookies sont également générés par le serveur et sont ensuite retournés au navigateur, non générés par le navigateur lui-même. Lorsqu'un navigateur envoie une demande, il rassemblera le cookie s'il a un cookie valide.
Tous les cookies sont utilisés car le protocole HTTP est à l'origine un protocole sans état, ce qui signifie que via le protocole HTTP lui-même, le serveur ne peut pas déterminer si le navigateur l'a accédé auparavant.
Les méthodes d'écriture de filtre et de servlet sont similaires. Lorsque vous écrivez du code connexe, vous devez implémenter l'interface de filtre et réécrire les méthodes connexes. Habituellement, la méthode Dofilter est modifiée plus souvent. Si le code filtre doit être efficace après l'écriture, il est nécessaire de configurer une certaine configuration dans web.xml comme la configuration des servlets.
Voici un exemple de code de connexion simple combinant des cookies, des sessions, des servlets et des filtres:
Définissez une classe d'entité utilisateur pour agir comme des données de base de données. Le modèle singleton est utilisé ici pour s'assurer qu'un seul objet d'instance existe:
modèles de package; / ** * Classe d'entité d'information utilisateur * * @author Tuzongxun123 * * / public class userModel {private String username; mot de passe de chaîne privé; // mode singleton, assurez-vous qu'il n'y a qu'une seule instance d'objet utilisateur public static userModel getInstance () {userModel user = new UserModel ("Zhangsan", "123456"); RETOUR UTILISATEUR; } Private UserModel (String Username, String Motword) {this.Username = username; this.password = mot de passe; } public String getUserName () {return username; } public String getPassword () {return mot de passe; }} Connexion de l'utilisateur à l'interface index.jsp et utilisez la fonction JSP dans l'action de formulaire pour obtenir le chemin du projet:
<% @ Page Language = "Java" Import = "Java.util. *" ContentType = "Text / Html; charSet = UTF-8" Pageencoding = "UTF-8"%> <! Doctype HTML Public "- // W3C // DTD HTML 4.01 Transitional // En" "http://www.w3.org/tr/html4/loose.dtd"> <html> <adread> <meta http-equiv = "content-type" content = "Text / html; charset = utf-8"> <itle> cookieandfilterTest </taptin action = "<% = request.getContextPath ()%> / loginServlet" metheth = "post"> nom d'utilisateur: <input type = "text" name = "username" /> </br> mot de passe: <input type = "mot de passe" name = "mot de passe" /> </br> <entrée type = "soumis" value = "Login" /> </1 / body> </html>
Servlet de fond correspondant:
Package ServLetTest; Importer java.io.ioException; Importer javax.servlet.servletException; Importer javax.servlet.http.cookie; import javax.servlet.http.httpservlet; Importer javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse; Importer javax.servlet.http.httpSession; importer des modèles.UserModel; La classe publique LoginServlet étend HttpServlet {@Override Protected void doGet (httpServletRequest req, httpServletResponse res) lève Servlexception, ioException {this.dopost (req, resp); } @Override Protected void doPost (httpServletRequest req, httpServletResponse resp) lève Servlexception, ioException {String username = req.getParameter ("username"); String mot de passe = req.getParamètre ("mot de passe"); // Simuler les données de la base de données UserModel User = userModel.getInstance (); String dbusername = user.getUserName (); String dbpassword = user.getPassword (); if (dbusername.equals (nom d'utilisateur) && dbpassword.equals (mot de passe)) {// Le nom d'utilisateur et le mot de passe correspondent, prouvent que la connexion est réussie, définit la session et le cookie httpSession session = req.getSession (); session.setAttribute ("nom d'utilisateur", nom d'utilisateur); session.setAttribute ("mot de passe", mot de passe); Cookie cookie = nouveau cookie ("nom d'utilisateur", nom d'utilisateur); Cookie cookie2 = nouveau cookie ("mot de passe", mot de passe); // Réglez le temps de stockage des cookies cookie.setMaxage (60); Cookie2.SetMaxage (60); // Envoyez des cookies au navigateur resp.addcookie (cookie); resp.addcookie (Cookie2); // Faire la demande à la liste d'utilisateurs req.getRequestDispatcher ("/ userList"). Forward (req, resp); } else {// Faire la demande à la page de connexion req.getRequestDispatcher ("index.jsp"). Forward (req, resp); }; }} Demande de sauter après la connexion:
Package ServLetTest; Importer java.io.ioException; Importer javax.servlet.servletException; import javax.servlet.http.httpservlet; Importer javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse; importer des modèles.UserModel; La classe publique UserlistServlet étend HttpServlet {@Override Protected void doGet (httpServletRequest req, httpservletResponse res) lève ServletException, ioException {this.dopost (req, resp); } @Override Protected void doPost (httpServletRequest req, httpServletResponse resp) lève ServletException, ioException {userModel user = userModel.getInstance (); // Imprimez les données du livre de la liste d'utilisateurs dans le navigateur resp.getwriter (). Write ("username:" + user.getUserName () + "," + "mot de passe:" + user.getPassword ()); }} Configuration du projet Web.xml:
<? 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" 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 "> <! - Nom du projet lors de l'accès -> <ffichage-Name> CookieandFilterTest </ Display-Name> <! - Servlet Configuration -> <Serplet> <Serplet-Name> LOGING </ Servlet-Name> <Serplet-Class> ServLetTest.LogInservlet </ Servlet-Class> </ Servlet> <Serplet-Mapping> <Serplet-Mapping> <Serplet-Name> Login </ Servlet-Name> <Url-Pattern> / LoginServlet </ Url-Pattern> </ Servlet-Mapping> <Serplet> <Servlet-Name> UserList </Servlet-Name> <servlet-class> servletTest.UserListServlet </ servlet-Class> </ Servlet> <Servlet-Mapping> <Servlet-Name> UserList </ Servlet-Name> <Url-Dattern> / UserList </url-Dattern> </Servlet-Mapping> <! - Filter Paramètres, après la demande de la demande, vous irez ici First-> <filter> <filter-name> LoginFilter </ Filter-Name> <Filter-Class> FilterTest.FilterTest </ Filter-Class> </filter> <filter-Mapping> <Filter-Name> LoginFilter </filter-name> <Url-Pattern> / * </url-Pattern> </filter-mapping> <! <Lelcome-File> index.jsp </ Welcome-File> </ Welcome-File-list> </ web -pp>
Code de filtre Java:
FilterTest de package; Importer java.io.ioException; import javax.servlet.filter; Importer javax.servlet.filterchain; Importer javax.servlet.filterconfig; Importer javax.servlet.servletException; Importer javax.servlet.servletRequest; import javax.servlet.servletResponse; Importer javax.servlet.http.cookie; Importer javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse; importer des modèles.UserModel; classe publique FilterTest implémente Filter {@Override public void destrement () {} @Override public void dofilter (ServletRequest, réponse servletResponse, filterchain chaîne) lance ioexception, servlexception {// release directement httpservleRequest pour la demande de Login et la demande initiale httpleTrequest req = (httpServer); HttpServletResponse resp = (httpservletResponse) Réponse; String uri = req.getRequeSturi (); if ("/cookieandfiltertest/loginservlet".equals(uri) ||" /cookieandfilterTest/".equals(uri)) {// release chain.dofilter (demande, réponse); retour; } // S'il ne s'agit pas d'une demande de connexion, déterminez s'il y a des cookies cookies [] cookies = req.getcookies (); if (cookies! = null && cookies.length> 0) {String username = null; Chaîne mot de passe = null; // Déterminez si le nom d'utilisateur et le mot de passe dans le cookie sont cohérents avec la base de données. S'il est cohérent, relâchez-le, sinon transmettez la demande à la page de connexion pour (cookie cookie: cookies) {if ("username" .equals (cookie.getName ())) {username = cookie.getValue (); } if ("mot de passe" .equals (cookie.getName ())) {mot de passe = cookie.getValue (); }} UserModel user = userModel.getInstance (); if (user.getUserName (). equals (username) && user.getPassword (). equals (mot de passe)) {chain.dofilter (request, réponse); retour; } else {// rediriger vers l'interface de connexion req.getRequestDispatcher ("/ index.jsp"). Forward (req, resp); retour; }} else {req.getRequestDispatcher ("/ index.jsp"). Forward (req, resp); retour; }} @Override public void init (filterconfig arg0) lève ServletException {}}Ce qui précède concerne cet article, j'espère qu'il sera utile pour tout le monde d'apprendre la programmation Java.