<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # Java 驗證過濾器 原文:http://zetcode.com/java/validationfilter/ 在本教程中,我們將展示如何驗證用戶在 Web 應用中輸入的數據。 驗證是一項常見的任務,并包含在 Java Web 框架(如 Stripes,Ninja 框架或 Play 框架)中。 在本教程中,我們將使用簡單的自定義驗證過濾器來驗證數據。 來源可從作者的 [Github 倉庫](https://github.com/janbodnar/ValidationFilter)中獲得。 過濾器是一個對象,它對對資源的請求或對資源的響應(或兩者)執行過濾任務。 過濾器以`doFilter()`方法執行過濾。 過濾器可用于各種任務,例如認證,日志記錄,數據壓縮,圖像轉換或加密。 在我們的示例中,我們使用過濾器來驗證輸入數據。 在我們的應用中,我們有一個 HTML 表單,該表單接受用戶的輸入。 該表單具有兩個輸入標簽:用戶名和電子郵件。 輸入正在使用過濾器進行驗證。 為了驗證電子郵件格式,我們使用 Apache Commons Validator。 該項目是使用 NetBeans IDE 中的 Maven 構建的。 我們將應用部署在 Tomcat 上。 ![Project structure](https://img.kancloud.cn/33/f7/33f72c39ef7f4e0bbd9bea9f2e229760_244x307.jpg) 圖:結構 該圖顯示了 NetBeans 中的項目結構。 我們有三個 JSP 頁面,兩個 J??ava 類和兩個 XML 配置文件。 `pom.xml` ```java <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.zetcode</groupId> <artifactId>Validation</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <name>Validation</name> <dependencies> <dependency> <groupId>javax</groupId> <artifactId>javaee-web-api</artifactId> <version>7.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>commons-validator</groupId> <artifactId>commons-validator</artifactId> <version>1.5.1</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.8</source> <target>1.8</target> <compilerArguments> <endorseddirs>${endorsed.dir}</endorseddirs> </compilerArguments> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.3</version> <configuration> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> </plugins> </build> </project> ``` 這是`pom.xml`構建文件。 它包含 JSTL 和 Apache Commons Validator 依賴關系的依賴關系。 `context.xml` ```java <?xml version="1.0" encoding="UTF-8"?> <Context path="/Validation"/> ``` 在`context.xml`文件中,我們指定應用的上下文路徑。 它用于唯一標識應用。 `index.jsp` ```java <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Validation</title> </head> <body> <p> Enter your name and email: </p> <form method="post" action="Greet"> Name: <input type="text" name="username"> <br> Email: <input type="text" name="email"> <br> <input type="submit" value="Submit"> </form> </body> </html> ``` `index.jsp`是應用的入口點。 它具有帶有兩個字段的 HTML 表單。 在這些字段中輸入的值將由應用驗證。 ```java <form method="post" action="Greet"> ... </form> ``` 提交表單后,將調用`Greet` Servlet。 在到達 Servlet 之前,過濾器將處理請求。 `hello.jsp` ```java <%@page contentType="text/html" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Greeting</title> </head> <body> Hello <c:out value="${param.username}"/>! <br> Your email is <c:out value="${param.email}"/>. </body> </html> ``` 當輸入數據通過驗證測試時,將顯示`hello.jsp`頁面。 顯示輸入的數據。 `valError.jsp` ```java <%@page contentType="text/html" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Error</title> </head> <body> <p> <c:out value="${errMsg}"/> </p> </body> </html> ``` 如果驗證失敗,則顯示`valError.jsp`。 它顯示了存儲在`errMsg`屬性中的錯誤消息。 該屬性在驗證過濾器中設置。 `ValidationFilter.java` ```java package com.zetcode.web; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.annotation.WebFilter; import org.apache.commons.validator.routines.EmailValidator; @WebFilter(filterName = "ValidationFilter", urlPatterns = {"/Greet"}) public class ValidationFilter implements Filter { public ValidationFilter() { } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { String erpg = "valError.jsp"; String userName = request.getParameter("username"); String email = request.getParameter("email"); boolean valid = EmailValidator.getInstance().isValid(email); if (userName == null || "".equals(userName) || email == null || "".equals(email)) { request.setAttribute("errMsg", "One or both fields are empty"); RequestDispatcher rd = request.getRequestDispatcher(erpg); rd.include(request, response); } else if (!valid) { request.setAttribute("errMsg", "Email format not valid"); RequestDispatcher rd = request.getRequestDispatcher(erpg); rd.include(request, response); } else { chain.doFilter(request, response); } } @Override public void destroy() { } @Override public void init(FilterConfig filterConfig) { } } ``` 數據驗證在`ValidationFilter`類中執行。 ```java @WebFilter(filterName = "ValidationFilter", urlPatterns = {"/Greet"}) ``` `@WebFilter`注解聲明一個 servlet 過濾器。 過濾器將應用于指定的 URL 模式。 在我們的例子中,它在`Greet` servlet 調用之前被調用。 ```java public class ValidationFilter implements Filter { ``` 過濾器實現`Filter`接口。 ```java @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { ... } ``` 實際工作以`doFilter()`方法完成。 ```java String userName = request.getParameter("username"); String email = request.getParameter("email"); ``` 通過`getParameter()`方法,我們獲得了 HTML 表單發送的數據。 ```java boolean valid = EmailValidator.getInstance().isValid(email); ``` 使用 Apache Commons Validator 的`EmailValidator`,我們檢查電子郵件格式的有效性。 ```java if (userName == null || "".equals(userName) || email == null || "".equals(email)) { request.setAttribute("errMsg", "One or both fields are empty"); RequestDispatcher rd = request.getRequestDispatcher(erpg); rd.include(request, response); } else if (!valid) { request.setAttribute("errMsg", "Email format not valid"); RequestDispatcher rd = request.getRequestDispatcher(erpg); rd.include(request, response); } else { chain.doFilter(request, response); } ``` 如果數據未能通過驗證,則使用`RequestDispatcher`將處理分派到錯誤頁面。 否則,請求將繼續其行進到目的地 servlet。 `Greeting.java` ```java package com.zetcode.web; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet(name = "Greeting", urlPatterns = {"/Greet"}) public class Greeting extends HttpServlet { @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); String page = "/hello.jsp"; RequestDispatcher disp = getServletContext().getRequestDispatcher(page); disp.forward(request, response); } } ``` `Greeting` servlet 僅將請求與`RequestDispatcher`一起調度到`hello.jsp`頁面。 ![Error message](https://img.kancloud.cn/88/8f/888fa25cb7ca94e50175d0ad4234c38c_545x336.jpg) 圖:錯誤消息 如果電子郵件格式不正確,則應用將以錯誤消息響應。 這是驗證過濾器教程。 我們已經使用 JSTL,JSP,Apache Commons Validator,Tomcat 和 Maven 構建了一個 Web 應用。 您可能還需要查看一些相關的教程: [SQL 查詢標記教程](/java/sqlquerytag/), [Java 教程](/lang/java/),[讀取 WAR 中的 CSV 文件](/articles/warcsv/)和 [Stripes 教程](/java/stripes/)。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看