在web.xml配置好filter的参数,然后通过filterconfig来读取init-param的值就可以了 如下面的代码,
package com.gjun.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;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.gjun.student.vo.Admin;
/**
* @author Administrator
* */
public class AuthFilter extends HttpServlet implements Filter {
/* * (non-Javadoc)
* * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest,
* javax.servlet.ServletResponse, javax.servlet.FilterChain)
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest hRequest = (HttpServletRequest) request;
HttpServletResponse hResponse = (HttpServletResponse) response;
HttpSession session = hRequest.getSession();
if (hRequest.getRequestURI().indexOf("login") >= 0)
{ filterChain.doFilter(request, response); return; }
Admin user = (Admin) session.getAttribute("user");
//这段就是控制你的权限的地方,通过就直接派发的下一filter
if (user!=null&&user.username.equals(role)) { filterChain.doFilter(request, response); }
else { hResponse.sendRedirect("login_input.action"); }
}
private FilterConfig filterConfig; private String role; //这段应该
public void init(FilterConfig filterConfig) { this.filterConfig = filterConfig;
//从web.xml文件中读取role的值
this.role = filterConfig.getInitParameter("role"); }
}
// web.xml中的filter的参数的代码段 XML code
<filter>
<filter-name>auth</filter-name>
<filter-class>com.gjun.filter.AuthFilter</filter-class>
<init-param>
<param-name>role</param-name>
<param-value>admin</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>auth</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>