java filter简单使用.doc
文本预览下载声明
Java filter
过滤器Filter也具有生命周期:init()-doFilter()-destroy(),由部署文件中的filter元素驱动。在 servlet2.4中,过滤器同样可以用于请求分派器,但须在web.xml中声明,dispatcherINCLUDE或 FORWARD或REQUEST或ERROR/dispatcher该元素位于filter-mapping中。
一、批量设置请求编码
public class EncodingFilter implements Filter {
private String encoding = null;
public void destroy() {
encoding = null;
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
String encoding = getEncoding();
if (encoding == null){
encoding = gb2312;
}
request.setCharacterEncoding(encoding);// 在请求里设置上指定的编码
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException {
this.encoding = filterConfig.getInitParameter(encoding);
}
private String getEncoding() {
return this.encoding;
}
}
Xml代码
filter
filter-nameEncodingFilter/filter-name
filter-classcom.logcd.filter.EncodingFilter/filter-class
init-param
param-nameencoding/param-name
param-valuegb2312/param-value
/init-param
/filter
filter-mapping
filter-nameEncodingFilter/filter-name
url-pattern/*/url-pattern
/filter-mapping
二、用filter控制用户访问权限
public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain)
throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
HttpSession session = req.getSession();
if (session.getAttribute(username) != null) {//登录后才能访问
chain.doFilter(request, response);
} else {
res.sendRedirect(../failure.jsp);
}
}
Xml代码
filter
filter-nameSecurityFilter/filter-name
filter-classcom.logcd.filter.SecurityFilter/filter-class
/filter
filter-mapping
filter-nameSecurityFilter/filter-name
url-pattern/admin/*/url-pattern
/filter-mapping
三、过滤链
两个过滤器,EncodingFilter负责设置编码,SecurityFilter负责控制权限,服务器会按照web.xml中过滤器定义的先后循序 组装成一条链,然后一次执行
显示全部