Servlet在Filter拦截器中实现编码方式和用户登录标记过滤

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
				
			}

		}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值