国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

java—過(guò)慮器基礎(chǔ)2(48)

2019-11-14 23:56:20
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
java—過(guò)慮器基礎(chǔ)2(48)過(guò)慮器鏈FilterChain

當(dāng)一個(gè)web項(xiàng)目中有多個(gè)連接器,且這些過(guò)慮器對(duì)同個(gè)url進(jìn)行過(guò)慮。這時(shí)就形成了過(guò)慮器鏈/。

在filter的配置當(dāng)中,有兩個(gè)配置:filter,filter-mapping.

Filter-mapping在前,則先執(zhí)行,在后則后執(zhí)行。

<filter>

<filter-name>first</filter-name>

<filter-class>cn.itcast.filter.FirstFilter</filter-class>

</filter>

<filter>

<filter-name>second</filter-name>

<filter-class>cn.itcast.filter.SecondFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>second</filter-name>

<url-pattern>/four</url-pattern>

</filter-mapping>

<filter-mapping>

<filter-name>first</filter-name>

<url-pattern>/four</url-pattern>

</filter-mapping>

過(guò)慮器應(yīng)用之1-設(shè)置request編碼

寫一個(gè)過(guò)慮器,對(duì)所有url全部過(guò)慮,/*.在doFilter方法中,設(shè)置request的編碼為utf-8。

一般情況下,這個(gè)過(guò)慮器永遠(yuǎn)是第一個(gè)要執(zhí)行的過(guò)慮器。

最好是通過(guò)配置設(shè)置編碼。<filter><init-param>&hellip;

第一步:實(shí)現(xiàn)Filter接口,在doFIlter中接收初始化參數(shù),設(shè)置編碼

package cn.hongxin.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 CharFilter implements Filter {

//聲明編碼的成員變量

PRivate String encoding;

public void init(FilterConfig config) throws ServletException {

encoding = config.getInitParameter("bm");

}

public void doFilter(ServletRequest request, ServletResponse response,

FilterChain chain) throws IOException, ServletException {

request.setCharacterEncoding(encoding);

//放行,必須要放行。

chain.doFilter(request, response);

}

public void destroy() {

}

}

第二步:將上面的類配置到web.xml

<filter>

<filter-name>char</filter-name>

<filter-class>cn.itcast.filter.CharFilter</filter-class>

<init-param>

<!-- 為了便于配置,在配置文件中設(shè)置編碼 -->

<param-name>bm</param-name>

<param-value>UTF-8</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>char</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>


對(duì)get可以處理中文

在CharFilter中對(duì)reuqest進(jìn)行包裝。

目的:修改增強(qiáng)getParameter方法,如果是get轉(zhuǎn)碼。

第一步:聲明包裝類:

//聲明包裝類

class MyRequest extends HttpServletRequestWrapper{

public MyRequest(HttpServletRequest request) {

super(request);

}

//增強(qiáng)getParamter

@Override

public String getParameter(String name) {

String val = super.getParameter(name);

if(super.getMethod().equals("GET")){

try {

val = new String(val.getBytes("ISO-8859-1"),super.getCharacterEncoding());

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

}

return val;

}

}

第二步:在doFilter方法中,聲明包裝類的實(shí)例

package cn.hongxin.filter;

import java.io.IOException;

import java.io.UnsupportedEncodingException;

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.HttpServletRequestWrapper;

public class CharFilter implements Filter {

// 聲明編碼的成員變量

private String encoding;

public void init(FilterConfig config) throws ServletException {

encoding = config.getInitParameter("bm");

}

public void doFilter(ServletRequest request, ServletResponse response,

FilterChain chain) throws IOException, ServletException {

request.setCharacterEncoding(encoding);

response.setContentType("text/html;charset=" + encoding);

// 判斷是否需要包裝

HttpServletRequest req = (HttpServletRequest) request;

if (req.getMethod().equals("GET")) {

request = new MyRequest(req);

}

// 聲明包裝類的實(shí)例

// 放行

chain.doFilter(request, response);

}

public void destroy() {

}

}

// 聲明包裝類

class MyRequest extends HttpServletRequestWrapper {

public MyRequest(HttpServletRequest request) {

super(request);

}

// 增強(qiáng)getParamter

@Override

public String getParameter(String name) {

String val = super.getParameter(name);

try {

val = new String(val.getBytes("ISO-8859-1"),

super.getCharacterEncoding());

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

return val;

}

}



發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 晋州市| 潜山县| 固镇县| 德保县| 平阳县| 黔江区| 台山市| 岗巴县| 石门县| 财经| 额尔古纳市| 八宿县| 平武县| 永城市| 舒兰市| 新疆| 乐安县| 沽源县| 浏阳市| 苏州市| 昌吉市| 莒南县| 镇沅| 教育| 金门县| 黎川县| 甘南县| 淮北市| 建湖县| 马公市| 石家庄市| 湟中县| 金堂县| 合山市| 岱山县| 盖州市| 巫溪县| 徐闻县| 忻城县| 淮滨县| 富阳市|