java学习笔记

来源:互联网 发布:淘宝大码男装店 编辑:程序博客网 时间:2024/05/18 12:28

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 = "";// 创建监听器时,初始化sessionIDprivate String IP = "";// 用户IPprivate String userAgent = "";// 用户浏览器private String userRegion = "";// 用户地区信息private String channel = "";// 访问渠道private int userID = 0;// 用户IDprivate 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);//插入临时用户信息,设置userIDif(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}}
原创粉丝点击