package com.filter;
import java.io.*;
import javax.servlet.*;
public class FistFilter implements Filter
{
public void init(FilterConfig filterConfig) throws ServletException
{
System.out.println("过虑器初始化...");
}
public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain)
throws java.io.IOException,ServletException
{
System.out.println("过虑器doFilter...");
}
public void destroy()
{
System.out.println("过虑器销毁...");
}
}
/*
<filter>
<filter-name>first</filter-name>
<filter-class>com.filter.FistFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>first</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
*/
1、过虑非法文字
package com.filter;
import java.io.*;
import javax.servlet.*;
public class CharFilter implements Filter
{
public void init(FilterConfig filterConfig) throws ServletException
{
//System.out.println("过虑器初始化...");
}
public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain)
throws java.io.IOException,ServletException
{
String content = request.getParameter("content");
//如果indexOf返回-1,则没有查到所要的
if(content != null)
{
if(content.indexOf("AAA") == -1)
{
chain.doFilter(request,response);
}
else
{
System.out.println("有非法文字");
//如果需要,可以RequestDispacher进行跳转
}
}
else
{
chain.doFilter(request,response);
}
}
public void destroy()
{
//System.out.println("过虑器销毁...");
}
}
/*
<filter>
<filter-name>char</filter-name>
<filter-class>com.filter.CharFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>char</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
*/
2、过虑字符编码
package com.filter;
import java.io.*;
import javax.servlet.*;
public class EncodingFilter implements Filter
{
public void init(FilterConfig filterConfig) throws ServletException
{
//System.out.println("过虑器初始化...");
}
public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain)
throws java.io.IOException,ServletException
{
try
{
request.setCharacterEncoding("GB2312");
}
catch(Exception e)
{
}
chain.doFilter(request,response);
}
public void destroy()
{
//System.out.println("过虑器销毁...");
}
}
/*
<filter>
<filter-name>encoding</filter-name>
<filter-class>com.filter.EncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
*/
3、登陆验证
package com.filter;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class LoginFilter implements Filter
{
public void init(FilterConfig filterConfig) throws ServletException
{
//System.out.println("过虑器初始化...");
}
public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain)
throws java.io.IOException,ServletException
{
//Session属于HTTP范围,所以ServletRequest对象需要先转换为HpptServletRequest对象
HttpServletRequest req = (HttpServletRequest)request;
HttpSession session = req.getSession();
//如果Session不为空,则可以浏览其它页面
if(session.getAttribute("uname") != null)
{
chain.doFilter(request,response);
}
else
{
//通过requestDispatcher跳转到登陆页
request.getRequestDispatcher("login.jsp").forward(request,response);
}
}
public void destroy()
{
//System.out.println("过虑器销毁...");
}
}
/*
<filter>
<filter-name>login</filter-name>
<filter-class>com.filter.LoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>login</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
*/