一.页面编码过滤器 

1.开发EncodingFilter.java文件,继承自javax.servlet.Filter: 
package bluemoon.crm.systemmanage.struts.Filter; 

import java.io.*; 
import javax.servlet.*; 

public class EncodingFilter implements Filter 
{ 
protected String encoding = null; 
protected FilterConfig config; 

public void init(FilterConfig filterConfig) throws ServletException 
{ 
this.config = filterConfig; 
//从web.xml配置文件中获取编码配置 
this.encoding = filterConfig.getInitParameter("Encoding"); 
} 
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException 
{ 
if(request.getCharacterEncoding() == null) 
{ 
String encode = getEncoding(); 
if(encode != null) 
{ 
//设置request的编码方式 
request.setCharacterEncoding(encode); 
} 
} 
chain.doFilter(request,response); 
} 
public String getEncoding() 
{ 
return encoding; 
} 
public void destroy() 
{ 

} 
} 
2. 在web.xml文件中加入如下配置信息: 
 
 
encodingFilter 
bluemoon.crm.systemmanage.struts.Filter.EncodingFilter 
 
Encoding 
GB2312 
 
 
 
encodingFilter 
 
/* 
 
 

 

二.用户是否登陆过滤器: 
1.首先增加一个Action、ActionForm & JSP: 
login.jsp中为一个登陆表单: 
UserActionForm.java为一个Struts的ActionForm。 
UserAction.java将用户登陆信息添加到session中。 
2. 开发UserLoginedFilter.java: 
package bluemoon.crm.systemmanage.struts.Filter; 

import java.io.IOException; 
import javax.servlet.Filter; 
import javax.servlet.FilterChain; 
import javax.servlet.FilterConfig; 
import javax.servlet.RequestDispatcher; 
import javax.servlet.ServletException; 
import javax.servlet.ServletRequest; 
import javax.servlet.ServletResponse; 
import javax.servlet.http.*; 

import bluemoon.crm.systemmanage.struts.forms.UserActionForm; 

public class UserLoginedFilter extends HttpServlet implements Filter 
{ 
protected FilterConfig config; 

public void init(FilterConfig filterConfig) throws ServletException 
{ 
this.config = filterConfig; 
} 
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException 
{ 
RequestDispatcher dispatcher = request.getRequestDispatcher("userLogin.jsp"); 
HttpServletRequest userRequest = (HttpServletRequest)request; 
UserActionForm userActionForm = (UserActionForm)userRequest.getSession().getAttribute("userActionForm"); 
if(userActionForm == null || userActionForm.getUser_name() == null || userActionForm.getUser_name().trim().length()<1) 
{ 
System.out.println("用户未登录!"); 
dispatcher.forward(request,response); 
return; 
} 
System.out.println("用户已登录!"); 
chain.doFilter(request,response); 
} 
public void destroy() 
{ 

} 
} 
3.在web.xml文件中添加如下配置信息: 
 
 
userLoginedFilter 
bluemoon.crm.systemmanage.struts.Filter.UserLoginedFilter 
 
 
userLoginedFilter 
*.jsp 
 
 

1.首先写一个权限过滤filter类,实现Filter接口 

public class RightFilter implements Filter { 
     public void init(FilterConfig filterConfig) throws ServletException { } 
public void doFilter(ServletRequest request, ServletResponse response, 
FilterChain chain) throws IOException, ServletException { 

HttpServletRequest req = (HttpServletRequest) request; 
HttpServletResponse res = (HttpServletResponse) response; 
HttpSession session = req.getSession(true); 
String path = req.getRequestURI(); 

// 从session里取的用户名信息 
String userid= (String) session.getAttribute("userid"); 
for (int i = 0; i < Constants.NoFilter_Pages.length; i++) { 
if (path.indexOf(Constants.NoFilter_Pages[i]) > -1) { 
   chain.doFilter(req, res); 
   return; 
} 
} 
if (username == null || "".equals(username)) { 
// 跳转到登陆页面 
res.sendRedirect("http://"+req.getHeader("Host")+"/task/login.jsp");; 
} else { 
// 已经登陆,继续此次请求 
chain.doFilter(request, response); 
} 
} 

public void destroy() { } 
} 


public class Constants { 
public Constants() { 
} 

public static String[] NoFilter_Pages = { 
    "/index.jsp", 
    "/login.jsp", 
    
}; 
} 



2.然后在web.xml里配置需要登陆权限验证的JSP文件: 

a.如果是某个具体的JSP文件(如a.jsp)需要登陆验证 

 


... 

 
right 
    com.dayou.util.RightFilter 
 
 
    right 
    /a.jsp 
 
... 

 


b.如果是某一个目录(如pages/目录)整个目录下的文件都需要登陆验证: 

 

... 

 
      right 
com.dayou.util.RightFilter 
       

 
right 
      /pages/* 
 
     ... 
 

----------------------------------------------- 

来自: http://hi.baidu.com/yangjinbo/blog/item/98dd85cb18e840f552664f27.html