java学习笔记

1、include指令与include标签的区别

<%@ include file="myfile.jsp"%>

<jsp:include page="myfile.jsp" flush="true"></jsp:include>

include指令所引用的文件,在编译阶段被servlet容器处理,而jsp标签所引用的文件在请求(request)的时候才被编译处理,并且输出处理结果。

2、如果一个类ClassA 要存入 session中,并且从session中取出后能 还原成 类ClassA,则该类需要被 序列化,即实现 java.io.serializable 接口。

3、sessionListener监听器

package com.myCompany.util;

import java.util.Date;

import javax.servlet.http.*;

import com.myCompany.dao.*;

import java.io.Serializable;

//监听登录的整个过程 

public class SessionListener implements HttpSessionBindingListener,Serializable {

	

	private String sessionID = "";// 创建监听器时,初始化sessionID

	private String IP = "";// 用户IP

	private String userAgent = "";// 用户浏览器

	private String userRegion = "";// 用户地区信息

	private String channel = "";// 访问渠道

	private int userID = 0;// 用户ID

	private int visiteDepth_A = 0;// 用户的A访问深度

	private int visiteDepth_B = 0;// 用户的B访问深度



	public SessionListener(String sessionID,String IP,String userAgent,String userRegion,String channel) {

		this.sessionID = sessionID;

		this.IP = IP;

		this.userAgent = userAgent;

		this.userRegion = userRegion;

		this.channel = channel;

	}



	public String getSessionID(){

		return this.sessionID;

	}

	

	public int getuserID(){

		return this.userID;

	}

	

	public int getVisiteDepth_A(){

		return this.visiteDepth_A;

	}

	

	public void setVisiteDepth_A(int depth){

		if(depth > this.visiteDepth_A){

			this.visiteDepth_A = depth;

		}

	}

	

	public int getVisiteDepth_B(){

		return this.visiteDepth_B;

	}

	public void setVisiteDepth_B(int depth){

		if(depth > this.visiteDepth_B){

			this.visiteDepth_B = depth;

		}

	}

	

	// 初始化SessionListener将会调用

	public void valueBound(HttpSessionBindingEvent event) 

	{ 

		Date date = new Date();

		System.out.println("sessionListener created at "+date.toString());

		this.userID = UserDAO.getUserIDBySessionID(sessionID);//判断user是否存在

		if( this.userID > 0 ){//用户已经存在

			System.out.println("session already exists!");

			

		}else{//新建用户

			boolean f = UserDAO.insertOneUser(sessionID, IP, userAgent, userRegion, channel);//插入临时用户信息,设置userID

			if(f){

				System.out.println("插入临时用户信息成功!");

				this.userID = UserDAO.getUserIDBySessionID(sessionID);

			System.out.println("userID="+userID);



			}else{

				System.out.println("插入临时用户信息失败!");

			}

		}

		

	}

	

	// 删除SessionListener将会调用

	public void valueUnbound(HttpSessionBindingEvent event) 

	{ 

		Date date = new Date();

		System.out.println("sessionListener removed at "+date.toString());

		// 更新访问深度

		boolean isUpdateSucc = UserDAO.updateVisiteDepth(visiteDepth_A, visiteDepth_B, this.userID);

		if(isUpdateSucc){

			System.out.println("用户"+this.userID+"访问深度更新成功!");

		}else{

			System.out.println("用户"+this.userID+"访问深度更新失败!");

		}

	}	

	

	

	public static void main(String[] args) {

		// TODO Auto-generated method stub



	}



}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值