


Quelles sont les fonctions, les types et les scénarios d'application de Filter en Java ?
Comment utiliser Filter
Dans les applications Web Java, utiliser Filter est très simple, il suffit d'écrire une classe pour implémenter javax .servlet.Filter, puis configurez Filter dans le fichier de configuration web.xml pour utiliser Filter. Voici un exemple de code de filtre :
public class MyFilter implements Filter { public void init(FilterConfig filterConfig) throws ServletException { // 初始化操作 } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // 过滤器逻辑处理 chain.doFilter(request, response); } public void destroy() { // 销毁操作 } }
Configurez le filtre dans le fichier de configuration web.xml :
<filter> <filter-name>MyFilter</filter-name> <filter-class>com.example.MyFilter</filter-class> </filter> <filter-mapping> <filter-name>MyFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
La balise
Le cycle de vie du filtre
Le cycle de vie du filtre comporte trois méthodes : init(), doFilter() et destroy().
Méthode init() : appelée lors de la création du Filtre, utilisée pour initialiser le Filtre. Cette méthode ne sera appelée qu'une seule fois.
Lorsque l'intercepteur capture chaque requête, la méthode doFilter() est appelée pour traiter la requête et la réponse. Si vous devez continuer à exécuter le filtre suivant, vous devez appeler la méthode chain.doFilter(request, réponse), sinon vous n'avez pas besoin d'appeler cette méthode.
destroy() méthode : appelée lorsque le Filtre est détruit, utilisée pour libérer des ressources.
Ordre d'exécution des filtres
Dans le fichier de configuration web.xml, vous pouvez configurer plusieurs filtres, et leur ordre d'exécution est exécuté en séquence dans l'ordre défini dans le fichier de configuration. Par exemple :
<filter> <filter-name>FilterA</filter-name> <filter-class>com.example.FilterA</filter-class> </filter> <filter-mapping> <filter-name>FilterA</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>FilterB</filter-name> <filter-class>com.example.FilterB</filter-class> </filter> <filter-mapping> <filter-name>FilterB</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
Dans la configuration ci-dessus, FilterA sera exécuté en premier, puis FilterB sera exécuté.
Détails du filtre
Connexion automatique
Dans les applications Web, il est généralement nécessaire d'implémenter la fonction de connexion automatique, c'est-à-dire une fois que l'utilisateur a réussi se connecte, la prochaine fois Il n'est pas nécessaire de saisir à nouveau le nom d'utilisateur et le mot de passe lors de l'accès, il suffit d'accéder directement. Ce qui suit est une idée simple de connexion automatique :
Lorsque l'utilisateur se connecte, le nom d'utilisateur et le mot de passe sont enregistrés dans Cookie.
Déterminez si l'utilisateur s'est connecté dans le filtre. Sinon, déterminez s'il y a un cookie. Si un cookie existe, renseignez automatiquement le nom d'utilisateur et le mot de passe. le cookie. Dans le formulaire de connexion, effectuez à nouveau la vérification de la connexion.
Ce qui suit est un exemple de code simple pour se connecter à Servlet :
public class LoginServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取用户名和密码 String username = request.getParameter("username"); String password = request.getParameter("password"); // 验证用户名和密码 if ("admin".equals(username) && "123456".equals(password)) { // 登录成功,保存用户信息到Session中 HttpSession session = request.getSession(); session.setAttribute("username", username); // 保存自动登录信息到Cookie中 Cookie cookie = new Cookie("autologin", username + ":" + password); cookie.setMaxAge(7 * 24 * 60 * 60); // 设置Cookie过期时间为一周 response.addCookie(cookie); // 跳转到首页 response.sendRedirect(request.getContextPath() + "/index.jsp"); } else { // 登录失败,返回登录页面 response.sendRedirect(request.getContextPath() + "/login.jsp"); } } }
Ce qui suit est un exemple de code simple pour le filtre de connexion automatique : # 🎜 🎜#
public class AutoLoginFilter implements Filter { public void init(FilterConfig filterConfig) throws ServletException { // 初始化操作 } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // 判断用户是否已经登录 HttpSession session = ((HttpServletRequest) request).getSession(); String username = (String) session.getAttribute("username"); if (username == null) { // 判断是否存在Cookie Cookie[] cookies = ((HttpServletRequest) request).getCookies(); if (cookies != null) { for (Cookie cookie : cookies) { if ("autologin".equals(cookie.getName())) { // 自动填充用户名和密码 String[] values = cookie.getValue().split(":"); String autologinUsername = values[0]; String autologinPassword = values[1]; request.setAttribute("autologinUsername", autologinUsername); request.setAttribute("autologinPassword", autologinPassword); } } } } chain.doFilter(request, response); } public void destroy() { // 销毁操作 } }
public class UserServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取表单数据 String username = request.getParameter("username"); String password = request.getParameter("password"); int age = Integer.parseInt(request.getParameter("age")); // 将数据封装成User对象 User user = new User(); try { BeanUtils.setProperty(user, "username", username); BeanUtils.setProperty(user, "password", password); BeanUtils.setProperty(user, "age", age); } catch (Exception e) { e.printStackTrace(); } // 保存用户信息 UserService userService = new UserService(); userService.saveUser(user); // 跳转到用户列表页面 response.sendRedirect(request.getContextPath() + "/user/list.jsp"); } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Guide de la racine carrée en Java. Nous discutons ici du fonctionnement de Square Root en Java avec un exemple et son implémentation de code respectivement.

Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Guide du générateur de nombres aléatoires en Java. Nous discutons ici des fonctions en Java avec des exemples et de deux générateurs différents avec d'autres exemples.

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Guide du numéro Armstrong en Java. Nous discutons ici d'une introduction au numéro d'Armstrong en Java ainsi que d'une partie du code.

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est
