package filter;
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.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import bean.Manager;
public class FilterCode implements Filter{
//所有的请求,包括servlet的url和jsp文件进行拦截(过滤)
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req=(HttpServletRequest)arg0;
//强转,将servletrequuest转换成http...
HttpServletResponse resp=(HttpServletResponse)arg1;
//强转,将servletresponse转换成http...
req.setCharacterEncoding("utf-8");
//设置发送请求的编码
resp.setCharacterEncoding("utf-8");
//设置响应方式的编码
resp.setContentType("text/html");
//设置响应的数据类型
String path=req.getServletPath();
//获取当前访问的url路径
//将index.jsp和登录所用到的servlet的url除外,目的是为了让登录界面不被拦截
if(path.equals("index.jsp")||path.equals("/login")){
chain.doFilter(req, resp);//放行
return;
}
//如果不进if,说明访问的不是登录页面,那就要检测登录标记
HttpSession session=req.getSession();
Manager m=(Manager)session.getAttribute("flag");
if(m!=null&&m!=null){
//如果session中没有存入,那相当于Manager m=null;所以这里可以直接将m!=null作为条件
chain.doFilter(req, resp);
//如果不是null,说明已经登陆过,所以放行
}else{
req.getRequestDispatcher("index.jsp").forward(req, resp);
//如果是null.则说明未进行登录,跳转回登录界面
}
}
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
Servlet在Filter拦截器中实现编码方式和用户登录标记过滤
最新推荐文章于 2024-02-27 19:54:36 发布