成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Tomcat中怎么設置編碼Filter

本篇文章給大家分享的是有關Tomcat中怎么設置編碼Filter,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

專業(yè)從事網(wǎng)站建設、成都網(wǎng)站設計,高端網(wǎng)站制作設計,小程序制作,網(wǎng)站推廣的成都做網(wǎng)站的公司。優(yōu)秀技術團隊竭力真誠服務,采用H5建站+CSS3前端渲染技術,成都響應式網(wǎng)站建設公司,讓網(wǎng)站在手機、平板、PC、微信下都能呈現(xiàn)。建站過程建立專項小組,與您實時在線互動,隨時提供解決方案,暢聊想法和感受。

1. SetCharacterEncodingFilter

    public void doFilter(ServletRequest request, ServletResponse response,

                         FilterChain chain) {

        // Conditionally select and set the character encoding to be used

        if (ignore|| (request.getCharacterEncoding()== null)) {

            String characterEncoding = selectEncoding(request);

            if (characterEncoding != null) {

                request.setCharacterEncoding(characterEncoding);

            }

        }

        chain.doFilter(request, response);

    }

Filter的doFilter方法如上所示,在這個類中,除了encoding這個參數(shù)外,還提供了一個ignore參數(shù)。該參數(shù)是一個開關,主要用于決定是否要忽略客戶端請求中指定的encoding,如果為true,我們看到流程會直接進行selectEncoding操作。在有特定的需要時,可以繼承該Filter并重寫其selectEncoding方法實現(xiàn),例如根據(jù)請求頭中的Accept-Language項進行對應的encoding設置,或者根據(jù)session中特定的標識進行設置。

Tomcat中怎么設置編碼Filter

附加參數(shù)的處理

我們知道,對于Filter或Servlet等,我們都可以在web.xml中為其指定初始化參數(shù),我們稱之為initParameter。對于我們自己的應用,可能已經(jīng)定義好了要傳入的參數(shù),直接在應用內(nèi)解析傳入的值即可。

而Tomcat內(nèi)部為了在多個Filter中支持多種形式的自定義initParameter,特意定義了一個工具類用于解析傳入的參數(shù)。

我們上面提到的Filter,其繼承自FilterBase這樣一個基類,而基類中主要用于進行初始化參數(shù)的設置

public void init(FilterConfig filterConfig) throws ServletException {

        Enumeration<String> paramNames = filterConfig.getInitParameterNames();

        while (paramNames.hasMoreElements()) {

            String paramName = paramNames.nextElement();

            if (!IntrospectionUtils.setProperty(this, paramName,

                    filterConfig.getInitParameter(paramName))) {

                String msg = sm.getString("filterbase.noSuchProperty",

                        paramName, this.getClass().getName());

                if (isConfigProblemFatal()) {

                    throw new ServletException(msg);

                } else {

                    getLogger().warn(msg); }} }

這個工具類即為上面標紅的IntrospectionUtils。

Utils中主要使用反射進行參數(shù)值的設置,即反射調(diào)用對應參數(shù)的setter進行賦值。我提到這個工具類,主要目的并不是想說反射,而是其實現(xiàn)的方式可以進行參考,以及對于邊界條件的考慮很周全。

例如,拿到class對應的Method之后,會判斷其參數(shù)的個數(shù),類型等。

       // First, the ideal case - a setFoo( String ) method

            for (int i = 0; i < methods.length; i++) {

                Class<?> paramT[] = methods[i].getParameterTypes();

                if (setter.equals(methods[i].getName()) && paramT.length == 1

                        && "java.lang.String".equals(paramT[0].getName())) {

                    methods[i].invoke(o, new Object[] { value });

                    return true;

                }

            }

在考慮其它類型時,除基礎類型外,還考慮到了包裝類

if (setter.equals(methods[i].getName())

                        && methods[i].getParameterTypes().length == 1) {

                    // match - find the type and invoke it

                    Class<?> paramType = methods[i].getParameterTypes()[0];

                    Object params[] = new Object[1];

                    // Try a setFoo ( int )

                    if ("java.lang.Integer".equals(paramType.getName())

                            || "int".equals(paramType.getName())) {

                        try {

                            params[0] = new Integer(value);

                        } catch (NumberFormatException ex) {

                            ok = false;

                        }

                    // Try a setFoo ( long )

                    }else if ("java.lang.Long".equals(paramType.getName())

                                || "long".equals(paramType.getName())) {

                            try {

                                params[0] = new Long(value);

                            } catch (NumberFormatException ex) {

                                ok = false;

                            }

                        // Try a setFoo ( boolean )

                    } else if ("java.lang.Boolean".equals(paramType.getName())

                            || "boolean".equals(paramType.getName())) {

                        params[0] = Boolean.valueOf(value);

}

對于參數(shù)的getter,除了getXXX,還想到了isXXX。

public static Object getProperty(Object o, String name) {

        String getter = "get" + capitalize(name);

        String isGetter = "is" + capitalize(name);

以上就是Tomcat中怎么設置編碼Filter,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學到更多知識。更多詳情敬請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)站標題:Tomcat中怎么設置編碼Filter
瀏覽地址:http://jinyejixie.com/article24/pppoce.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、營銷型網(wǎng)站建設建站公司、網(wǎng)站策劃、App開發(fā)、品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站
麻江县| 尚志市| 九龙城区| 黄山市| 奈曼旗| 万载县| 永登县| 建瓯市| 汝城县| 腾冲县| 五指山市| 堆龙德庆县| 瑞金市| 克山县| 石楼县| 台北县| 博爱县| 香港 | 平远县| 宜宾市| 光泽县| 太仆寺旗| 呼伦贝尔市| 甘德县| 广元市| 武清区| 石首市| 三台县| 昌平区| 霍邱县| 赤峰市| 政和县| 确山县| 湖口县| 金溪县| 德兴市| 奉贤区| 青冈县| 南投市| 大宁县| 镇沅|