Filter-回聲對暗號

code.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>暗號提交頁</title>
</head>
<body>
    <form action="ServletDemo1" method="POST">
    <h3>請輸入暗號</h3>
    暗號1 : <input type="text" name="code1"/>
        <input type="submit" value="提交暗號"/>
    </form>
</body>
</html>

err_msg.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="Refresh" content="3; url=code.html"/>
<title>error</title>
<script>
 window.onload=function(){
     var jump=document.getElementById("jump");
     var time=2;
     setInterval(function(){
         jump.innerHTML=time;
         time--;
     }, 1000);
 }
</script>
</head>
<body>
    <h1>暗號輸入有誤,請重新輸入</h1>
    <br/>
    <a href="code.html">回到暗號輸入界面...</a>
    <span id="jump">3</span>后跳轉
</body>
</html>
package filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class FilterDemo1 implements Filter {

    /**
     * 在Filter實例創建之后立即執行,進行初始化的操作(里面不寫代碼也沒關系)
     */
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("FilterDemo1實例創建成功");
    }
    /**
     * 對過濾器所攔截的請求,進行處理的核心方法
     */
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        //ServletRequest->HttpServletRequest->xxxRequest
//      HttpServletRequest req=(HttpServletRequest) request;
//      HttpServletResponse res=(HttpServletResponse) response;
//      req.getMethod();
//      res.getContentType();
        //處理...
        System.out.println("FilterDemo1.doFilter()。。。。。");
        //處理請求參數亂碼
        request.setCharacterEncoding("utf-8");
        //1.獲取用戶提交的暗號
        String code1=request.getParameter("code1");
        //2.判斷暗號是否正確
        if(!"芝麻開門".equals(code1))
        {
            //3.如果暗號不正確,則跳轉到錯誤提示頁面
            request.getRequestDispatcher("/err_msg.html").forward(request, response);
            return;
        }else{
            //4.如果暗號正確,則放行過濾器訪問ServletDemo1
            //如果處理OK,要放行過濾器,接著執行后面的資源
            chain.doFilter(request, response);
        }
    }

    /**
     * 在Filter實例銷毀之前執行,進行善后的處理(里面不寫代碼也沒關系)
     */
    @Override
    public void destroy() {
        System.out.println("FilterDemo1實例將要被銷毀");
    }

}
package filter;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ServletDemo1 extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        System.out.println("ServletDemo1.doGet()");
        response.getWriter().write("This is ServletDemo1 !");
        response.getWriter().write("code right!");
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }

}
<?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" 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">
  <welcome-file-list>
    <welcome-file>code.html</welcome-file>
  </welcome-file-list>
  <!--配置監聽器(完成注冊)  -->
   <listener>
    <listener-class>listener.MyServletContextListener</listener-class>
    </listener>
  <!--配置過濾器鎖攔截的路徑  -->
  <filter>
    <filter-name>FilterDemo1</filter-name>
    <filter-class>filter.FilterDemo1</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>FilterDemo1</filter-name>
    <url-pattern>/ServletDemo1</url-pattern>
  </filter-mapping>
  <servlet>
    <servlet-name>ServletDemo1</servlet-name>
    <servlet-class>filter.ServletDemo1</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>ServletDemo1</servlet-name>
    <url-pattern>/ServletDemo1</url-pattern>
  </servlet-mapping>
</web-app>
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容