中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

學習學習servlet過濾器(javax.servlet.Filter)

發布時間:2020-08-03 01:29:09 來源:網絡 閱讀:1965 作者:Qiu_CJ 欄目:開發技術

學習學習servlet過濾器(javax.servlet.Filter)

一、過濾器

    Servlet過濾器Fileter是一個小型的web組件,它們通過攔截請求和響應,以便查看、提取或以某種方式操作客戶端和服務器之間交換的數據,實現“過濾”的功能。Filter通常封裝了一些功能的web組件,過濾器提供了一種面向對象的模塊化機制,將任務封裝到一個可插入的組件中, Filter組件通過配置文件來聲明,并動態的代理。

二、servlet過濾方法

    過濾器是一個實現了 javax.servlet.Filter 接口的 Java 類。javax.servlet.Filter 接口定義了三個方法:

序號 方法 描述
1 public void init(FilterConfig filterConfig) web 應用程序啟動時,web 服務器將創建Filter 的實例對象,并調用其init方法,讀取web.xml配置,完成對象的初始化功能,從而為后續的用戶請求作好攔截的準備工作(filter對象只會創建一次,init方法也只會執行一次)。開發人員通過init方法的參數,可獲得代表當前filter配置信息的FilterConfig對象。
2 public void doFilter (ServletRequest, ServletResponse, FilterChain) 該方法完成實際的過濾操作,當客戶端請求方法與過濾器設置匹配的URL時,Servlet容器將先調用過濾器的doFilter方法。FilterChain用戶訪問后續過濾器。
3 public void destroy() Servlet容器在銷毀過濾器實例前調用該方法,在該方法中釋放Servlet過濾器占用的資源。

三、寫servlet過濾器

    寫一個servlet屏蔽負面評論。

1、在web.xml中配置好servlet和filter

<?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">
    <filter>
        <filter-name>hello</filter-name>
        <filter-class>filter.CommentFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>hello</filter-name>
        <url-pattern>/comment</url-pattern>
    </filter-mapping>
    <servlet>
        <servlet-name>h</servlet-name>
        <servlet-class>web.CommentServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>h</servlet-name>
        <url-pattern>/comment</url-pattern>
    </servlet-mapping>
</web-app>

2、在src/main/java下新建一個包,名為web;并且在web包下面新建一個類,名為CommentServlet;

package web;

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

public class CommentServlet extends HttpServlet {
    public void service(HttpServletRequest request, HttpServletResponse response) throws IOException {
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=utf8");
        PrintWriter out = response.getWriter();
        String str = request.getParameter("comment");
        out.println("<h2>您發表的評論內容為:" + str + "</h2>");
        out.close();
    }
}

3、在src/main/java下新建一個包,名為filter;并且在filter包下面新建一個類,名為CommentFilter

package filter;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CommentFilter implements Filter {

private String illegalWord;

public void init(FilterConfig filterConfig) throws ServletException {
    illegalWord = filterConfig.getInitParameter("illegalWord");
    System.out.println("過濾器Filter已經開始運行......" + illegalWord);
}

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
        throws IOException, ServletException {
    HttpServletRequest req = (HttpServletRequest) request;
    HttpServletResponse resp = (HttpServletResponse) response;
    req.setCharacterEncoding("UTF-8");
    resp.setContentType("text/html;charset=UTF-8");
    PrintWriter out = resp.getWriter();
    String comment = req.getParameter("comment");
    System.out.println(comment);
    if (comment.indexOf("dam") == -1) {
        out.println("<h2>以隱藏該評論</h2>");
    } else {
        chain.doFilter(req, resp);
    }

}

    public void destroy() {
            System.out.println();
    }
}

4、在src/main/webapp下面新建一個JSP文件,名為comment.jsp;

<%@ page language="java" contentType="text/html; charset=utf8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">;
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf8">
        <title>Insert title here</title>
    </head>
    <body>
        <form action="comment" method="post">
            <fieldset>
            <legend>評論</legend>
            請輸入評論:<textarea name="comment" 
            ></textarea><br>
            <input type="submit" value="發表評論"> 
            </fieldset>
        </form>
    </body>
</html>

四、測試

1、在瀏覽器中輸入http://localhost:8089/servlet-test55-filter/comment.jsp ,界面如下:

學習學習servlet過濾器(javax.servlet.Filter)

學習學習servlet過濾器(javax.servlet.Filter)

學習學習servlet過濾器(javax.servlet.Filter)

2、在評論框中輸入不含有“dam”的字符串,

學習學習servlet過濾器(javax.servlet.Filter)

點擊“發表評論”時,返回結果為

學習學習servlet過濾器(javax.servlet.Filter)

3、在評論框中輸入含有“dam”的字符串,

學習學習servlet過濾器(javax.servlet.Filter)

點擊“發表評論”,返回的結果為:

學習學習servlet過濾器(javax.servlet.Filter)

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

江永县| 航空| 罗田县| 汤阴县| 南康市| 徐汇区| 正镶白旗| 天水市| 沙田区| 安吉县| 重庆市| 青阳县| 鲁山县| 夏津县| 华容县| 于都县| 星子县| 临泽县| 柞水县| 庆阳市| 衡山县| 龙南县| 曲阳县| 磴口县| 新闻| 通道| 贵州省| 会昌县| 酒泉市| 桦南县| 景洪市| 苍山县| 张掖市| 文成县| 惠水县| 防城港市| 上虞市| 凭祥市| 台湾省| 三河市| 长沙市|