jsp之session
session就是一个全局变量,是浏览器线程在服务器端的代理。web服务程序只要打开,session就会存在,当你第一次访问时,session会自动为你分配一个session ID,所以session为新建立的,所以session.isNew()为true。当你刷新页面时,这个session ID一直存在(session.getId()不变),不会消失,所以session.isNew()为false。除非你关闭你要访问的web站点,或则关闭session(session.invalidate()),这个session ID才会消失(session.getId()变了),isNew()为true。
两个方法 session.isNew() 判断是否是一个新session
session.getId() 得到这个session id
当关闭所有的浏览器,再重新登录的时候session.isNew()才会是true
当每次都新打开一个浏览器用不同的用户登录,session.isNew() 是为false。session.getId()是不变的,。
即:session id相当是打开一个浏览器进程(不是线程)时web服务器为本浏览器进程分配的id
常用方法:
long create_time = session.getCreationTime(); //session创建时间
long access_time = session.getLastAccessedTime();//session最后访问时间
//打印session里面的attribute值
Enumeration elements = session.getAttributeNames();
while (elements.hasMoreElements()) {
String id = (String)elements.nextElement();
}
response.setHeader("Refresh","5;url=/session_filter_listener/index.jsp");//每5秒钟刷新,然后定位到index.jsp
相关文档:
index.jsp
<%@ page language="java" import="java.sql.*" import="java.lang.*" import="java.util.*" pageEncoding="GB2312"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%!
& ......
http:/localhost/123/jsp/test.jsp:
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logi ......
我先说明一下配置环境的大概情况:
* FreeBSD 7.0-RELEASE
* apache-2.2.9
* mod_jk-ap2-1.2.26
* diablo-jdk-1.6.0.07.02
* tomcat-6.0.16
具体的版本信息显示如下:
freebsd# pkg_info
apache-2.2.9_5 Version 2.2.x of Apache web server&nbs ......
JSP与Servlet之间的会话跟踪方式有多个,注定他们的通信方式有多种。
下面先来看看4中会话跟踪方式:
一:Session
传送端:
HttpSession session=request.getSession();
sessio ......
(1)利用<jsp:param name="paramName" value="paramValue"></jsp:param>其中name为与属性相关联的关键词,value为属性的值。
示例:传常量字符串<param name="userName" value="shilei"/>
示例:传变量 User user=new User("shilei");//User是一个类
&n ......