过滤器
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;public class MyFilter extends HttpServlet implements Filter {
private FilterConfig filterConfig;
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
} public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain ){
HttpServletRequest httpreq = (HttpServletRequest) request;
HttpServletResponse httpres = (HttpServletResponse) response;
try {
System.out.print("经过过滤器..");
HttpSession session=httpreq.getSession();
if(session.getAttribute("userinfo")==null){
System.out.println(session.getAttribute("userinfo"));
String noLogin=filterConfig.getInitParameter("noLogin");
httpres.sendRedirect(noLogin);
System.out.println("经过了");
}else{
chain.doFilter(httpreq, httpres);
}
} catch (ServletException sx) {
filterConfig.getServletContext().log(sx.getMessage());
} catch (IOException iox) {
filterConfig.getServletContext().log(iox.getMessage());
}
} public void destroy() {
}
}
web.xml
<filter>
<filter-name>myfilter</filter-name>
<filter-class>filter.MyFilter</filter-class>
<init-param>
<param-name>noLogin</param-name>
<param-value>./login.jsp</param-value> <!--没有登录跳转的页面-->
</init-param>
</filter>
<filter-mapping>
<filter-name>myfilter</filter-name>
<url-pattern>/form/*</url-pattern>
</filter-mapping>当我经过登陆页面时,过滤器就不停的过滤,
不晓得是怎么回事情,请哪位高手给我看哈
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;public class MyFilter extends HttpServlet implements Filter {
private FilterConfig filterConfig;
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
} public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain ){
HttpServletRequest httpreq = (HttpServletRequest) request;
HttpServletResponse httpres = (HttpServletResponse) response;
try {
System.out.print("经过过滤器..");
HttpSession session=httpreq.getSession();
if(session.getAttribute("userinfo")==null){
System.out.println(session.getAttribute("userinfo"));
String noLogin=filterConfig.getInitParameter("noLogin");
httpres.sendRedirect(noLogin);
System.out.println("经过了");
}else{
chain.doFilter(httpreq, httpres);
}
} catch (ServletException sx) {
filterConfig.getServletContext().log(sx.getMessage());
} catch (IOException iox) {
filterConfig.getServletContext().log(iox.getMessage());
}
} public void destroy() {
}
}
web.xml
<filter>
<filter-name>myfilter</filter-name>
<filter-class>filter.MyFilter</filter-class>
<init-param>
<param-name>noLogin</param-name>
<param-value>./login.jsp</param-value> <!--没有登录跳转的页面-->
</init-param>
</filter>
<filter-mapping>
<filter-name>myfilter</filter-name>
<url-pattern>/form/*</url-pattern>
</filter-mapping>当我经过登陆页面时,过滤器就不停的过滤,
不晓得是怎么回事情,请哪位高手给我看哈
<init-param>
<param-name>noLogin </param-name>
<param-value>./login.jsp </param-value> <!--没有登录跳转的页面-->
</init-param>
这句初始化过滤页面,不需要写了吧?
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import org.apache.struts.action.RequestProcessor;public class FilterUser {
public class CustomRequestProcessor extends RequestProcessor { //自定义的processPreprocess()方法,检查用户是否已经登录 protected boolean processPreprocess ( HttpServletRequest request, HttpServletResponse response) { HttpSession session = request.getSession(false); //如果用户请求的是登录页面则不需要检查 if(request.getServletPath().indexOf("CompanyUser.do?fun=add")>0||request.getServletPath().indexOf("user.do?fun=addUserInfo")>0||request.getServletPath().indexOf("user.do?fun=login")>0)
return true; //检查session中是否存在userName属性,如果存在则表示拥护已经登录 if( session != null && session.getAttribute("userinfo") != null) return true; else{ try{ //用户未登录则重定向到登录页面
response.sendRedirect("./login.jsp"); }catch(Exception ex){ } } return false; }
}
}这个才是过滤.do的请求,并不是所有的都过滤,而且不过滤注册,还有登陆的.do
我只过滤后台的,所以我是这样写的
<controller processorClass="filter.FilterUser">
</controller>