一、通過(guò)過(guò)濾器可以做什么 ?
1 對(duì)請(qǐng)求進(jìn)行統(tǒng)一編碼 ?
2 對(duì)請(qǐng)求進(jìn)行認(rèn)證
包 javax.servlet.Filter
1作用:把某些信息過(guò)濾掉
2實(shí)現(xiàn) Filter 接口.
1public void doFilter (ServletRequest, ServletResponse, FilterChain)該方法完成實(shí)際的過(guò)濾操作蜓耻,當(dāng)客戶(hù)端請(qǐng)求方法與過(guò)濾器設(shè)置匹配的URL時(shí)茫舶,Servlet容器將先調(diào)用過(guò)濾器的doFilter方法。FilterChain用戶(hù)訪問(wèn)后續(xù)過(guò)濾器刹淌。
2public void init(FilterConfig filterConfig)
3public void destroy()
4web.xml中配置
<filter>
<filter-name>qq</filter-name>
<filter-class>con.hw.controller.EncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>qq</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
亂碼處理
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
HttpServletRequest request=(HttpServletRequest) arg0;
HttpServletResponse response=(HttpServletResponse) arg1;
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
response.setCharacterEncoding("utf-8");
arg2.doFilter(request, response);//通過(guò)驗(yàn)證
}
非法字段
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
HttpServletRequest request=(HttpServletRequest) arg0;
HttpServletResponse response=(HttpServletResponse) arg1;
String jl = request.getParameter("jl");
if(jl!=null&&jl.indexOf("小狗")!=-1){
response.sendRedirect("filter.jsp");
}else{
arg2.doFilter(request, response);//放行
}
}
驗(yàn)證登錄
public void doFilter(ServletRequest request1, ServletResponse response1,FilterChain chain) throws IOException, ServletException {HttpServletRequest request=(HttpServletRequest) request1;HttpServletResponse response=(HttpServletResponse) response1;? HttpSession session = request.getSession();? if(session.getAttribute("user")!=null){? ? chain.doFilter(request, response);//放行? }else{? response.sendRedirect(request.getContextPath()+"/login.jsp");? }}f3com.filter.LoginFilterf3/PersonListServlet