记录网页登录日志

        前两天老师讲了关于日志记录的过滤器,今天想了一下,发现老师的设计有点问题,因为老师的版本根本就记录不了用户的信息,现在来说一下我的思路:

        首先,一个非常重要的问题时,在点登录时,根本没有验证用户是否合法或者是存在,所以在过滤的时候老师就先获取用户的持久化类,再判断:

UserInfo userInfo = (UserInfo)request.getSession().getAttribute("user_info");
int userId = 0;
if (userInfo != null) {
	userId = userInfo.getUser_id();
}


所以每次记录的都是userId = 0,只要把doFilter()方法调用完了再操作,就可以获得用户的持久化类了,相应的代码如下:

	public void doFilter(ServletRequest req, ServletResponse resp,
			FilterChain chain) throws IOException, ServletException {
		HttpServletRequest request = (HttpServletRequest)req;
		HttpServletResponse response = (HttpServletResponse)resp;
		
		String date = sdf.format(new Date());
		long start = System.currentTimeMillis();
		chain.doFilter(req, resp);
		long end = System.currentTimeMillis();
		
		UserInfo userInfo = (UserInfo)request.getSession().getAttribute("user_info");
		int userId = 0;
		if (userInfo != null) {
			userId = userInfo.getUser_id();
		}
		
		LogService logService = new LogService();
		int newId = logService.getMaxId();
		logService.insertNewLog(newId, date, userId, end - start);
		System.out.println("-----log filter-----");
		//chain.doFilter(req, resp);
	}


明显在chain.doFilter()返回后再判断才能正确记录用户的信息,因为返回后如果能登录,session已经保存了user的信息了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值