一、 新建com.wu.filter中加入过滤器类
public class CharFilter implements Filter {
private String encoding="";
public void destroy() {
// TODO Auto-generated method stub
}
二、 在com.wu.filter包中加入过滤器类,需要加入Filter接口,实现doFilter()、init()、destory()等方法。
public class CharFilter implements Filter {
private String encoding="";
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
System.out.println("=========进入过滤器!!!!!");
//给request设置编码格式(本过滤器的作用)
request.setCharacterEncoding(encoding);
//执行后续操作,如果后面还有过滤器,则进入下一个过滤器;如果后面没有过滤器,则进入请求url相应的Servlet
chain.doFilter(request, response);
response.setCharacterEncoding(encoding);
}
public void init(FilterConfig conf) throws ServletException {
//给connection设置编码格式
encoding=conf.getInitParameter("encoding");
}
}
二、在web.xml配置文件中加入过滤器配置
charFilter
com.news.filter.CharFilter
encoding
utf-8
charFilter
/*
/一个检测用户是否登录的过滤器实现
public class CheckUserFilter implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
//ServletRequest是HttpServletRequest的子类,方法没有HttpServletRequest丰富。HttpServletResponse同理。
HttpServletRequest hsRequest=(HttpServletRequest)request;
HttpServletResponse hsResponse=(HttpServletResponse)response;
//获取session中的登录用户属性值
String currUser=(String)hsRequest.getSession().getAttribute("loginuser");
//获取是否管理员属性值
String isAdmin=hsRequest.getSession().getAttribute("isadmin").toString();
if(currUser==null||currUser.equals("")){
//如果没有登录,就返回首页。 hsResponse.sendRedirect(hsRequest.getContextPath()+"/index.jsp");
}else{
//如果是管理员,就执行下一个过滤器或目标Servlet
if(isAdmin.equals("1")){
chain.doFilter(request, response);
}else{
//不是管理员的用户,也不允许访问网站管理页面 hsResponse.sendRedirect(hsRequest.getContextPath()+"/index.jsp");
}
}
}
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
//web.xml配置
<filter>
<filter-name>checkUserFilter</filter-name>
<filter-class>cn.news.filter.CheckUserFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>checkUserFilter</filter-name>
<url-pattern>/newspages/*</url-pattern>
</filter-mapping>