public class userfiter implements Filter{
String noFilterURL="";
public void destroy() { }
public void init(FilterConfig arg0) throws ServletException
{
noFilterURL=arg0.getInitParameter("noFilter");
}
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chai) throws IOException, ServletException {
HttpServletRequest request=(HttpServletRequest)req;
String tmpstr=request.getRequestURI().substring(request.getRequestURI().indexOf("/")+1);
String uri=tmpstr.substring(tmpstr.indexOf("/"));
if(noFilterURL.indexOf(uri)<0)
{ HttpSession session=null;
session=request.getSession();
if((session.getAttribute("login"))==null)
{
request.setAttribute("error","请先登录");
RequestDispatcher dis=req.getRequestDispatcher("/login.jsp");
dis.forward(req, res);
return;
}
}
chai.doFilter( req, res);
}
}
UserFilter
com.web.userfiter
noFilter
/login.jsp,/login.do,/images/login_background.gif,
/images/login.jpg,/images/login.bmp-
</init-param>
</filter>
<filter-mapping>
<filter-name>UserFilter</filter-name>
<url-pattern>/*</url-pattern>
这是我写的过滤器,和web.xml的配置文件。但是这没达到我想要的效果,例如我在IE里面http://localhost:8089/OA/login.do,可以提交,但如果把login.do也过滤掉,那就不能登录了!但又不想让直接在IE里面输入http://localhost:8089/OA/login.do提交!还有如果是http://localhost:8089/OA/massge/index.jsp,它是不能登录,可以跳转到http://localhost:8089/OA/login.jsp,但是图片又不显示出来,如果.do提交,返回到http://localhost:8089/OA/login.jsp页面,图片又可能显示出来!
我想的效果是无论从什么方式提交,只要没登录,都要返回到login.jsp页面!当然图片也要显示出来!就是权限问题,没登录,无论你什么方式提交也不能访问其它页面,在怎么做呢?如果用Action做,那.jsp页面就不能过滤掉了,能访问到静态的页面!
要怎么做呢?请帮忙看看!谢谢!给我点意见咯!谢谢...感激不尽!