JAvaフィルタの原理分析と実現、フィルタによる自動上陸を実現
10040 ワード
1、フィルター
1、フィルター
1.1、フィルターの原理
1.2、フィルタの配置
1.3、フィルターのライフサイクル
1.4、フィルターの自動登録実現
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);
}
}
}