JAvaフィルタの原理分析と実現、フィルタによる自動上陸を実現

10040 ワード

1、フィルター
1、フィルター
1.1、フィルターの原理
1、Filter   ,
□     Servlet         ,Web      Filter  , web        web  :  Jsp, Servlet,           html        ,           。    URL         、      、             。

□                  ,    HttpServletResponse     。  Filter     :Filter          ,       Servlet         ,  Filter            

1.2、フィルタの配置

    
                   
               
                 
           ,    FilterConfig            。
                    
               
                 
           ,    FilterConfig            。

         Filter         。  Filter               :Servlet             
           filter     
       filter         (      URL  )


1.3、フィルターのライフサイクル
 web       ,        init(FilterConfig arg0)    filter     , web  ,  ,  reload     ,    destroy()   filter。       ,filter         。

1.4、フィルターの自動登録実現
//1、  session   user,    
		//2、     session, cookie        
				//2.1        ,         
					//2.1.1    ,  session ,  
					//2.1.2     ,  。
				//2.2          ,  。
		
HttpServletRequest req = (HttpServletRequest)request;

User user = (User)req.getSession().getAttribute("user");

//1、  session   user,    
if(user!=null){
  chain.doFilter(req, response);
}else{
  //session    。 cookie    。ctrl+2   l
  Cookie[] cookies = req.getCookies();
  String userJson = "";
  for (Cookie cookie : cookies) {
    if("user".equals(cookie.getName())){
      userJson = cookie.getValue();
    }
  }

  //cookie        
  if("".equals(userJson)||userJson==null){
    chain.doFilter(req, response);
  }else{
  
	//cookie       
    user = JsonUtils.jsonToPojo(userJson, User.class);
    QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
    String sql = "select * from user where username = ? and password =?";
    try {
      user = qr.query(sql, new BeanHandler<User>(User.class),user.getUsername(),user.getPassword());
    } catch (SQLException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }

    if(user==null){
      chain.doFilter(req, response);
    }else{
      req.getSession().setAttribute("user", user);
      chain.doFilter(req, response);
    }
  }
}