一个简单的Filter例子.
/**
* Description: Filter.
*
* Created on:2007-9-25 上午8:41:23
*
* @author Lzs
*
* @version 1.0
*/
public class LzsFilter implements Filter {
private FilterConfig fConfig;
private String reidrect;
private String enable;
private String ignore;
private String[] ign;
public void destroy() {
fConfig = null;
reidrect = null;
enable = null;
ignore = null;
}
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) arg0;
User user = (User) request.getSession()
.getAttribute(Constants.USER_KEY);
boolean ttt=false;
// 配置过滤器的有效性
if ("true".equalsIgnoreCase(enable)) {
if (user == null) {
for (int i = 0; i < ign.length; i++) {
if (ign[i].equalsIgnoreCase(request.getServletPath())) {
arg2.doFilter(arg0, arg1);
ttt=true;
break;
}
}
if(!ttt){
RequestDispatcher rd=null;
rd=request.getRequestDispatcher(reidrect);
rd.forward(arg0, arg1);
}else{
arg2.doFilter(arg0, arg1);
}
} else {
arg2.doFilter(arg0, arg1);
}
} else {
arg2.doFilter(arg0, arg1);
}
}
public void init(FilterConfig arg0) throws ServletException {
fConfig = arg0;
reidrect = fConfig.getInitParameter("redirect");
enable = fConfig.getInitParameter("enable");
ignore = fConfig.getInitParameter("ignore");
StringTokenizer token = new StringTokenizer(ignore, ",");
ign = new String[token.countTokens()];
int i = 0;
while (token.hasMoreElements()) {
ign[i++] = (String)token.nextElement();
}
}
}
web.xml配置信息如下:
<filter>
<filter-name>LzsFilter</filter-name>
<filter-class>com.nokia.smp.acms.web.filter.LzsFilter</filter-class>
<init-param>
<param-name>redirect</param-name>
<param-value>/logon.jsp</param-value>
</init-param>
<init-param>
<param-name>ignore</param-name>
<param-value>/logon.jsp,/logon.do</param-value>
</init-param>
<init-param>
<param-name>enable</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>LzsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

被折叠的 条评论
为什么被折叠?



