本程序为简单测试程序,自己编写调试可用
1.为了说明session的使用
2.为了解开自己的疑惑
list.java //辅助类
package guo;
import java.util.ArrayList;
public class list {
private ArrayList<String> ss;
public list() { // 构造方法
ss = new ArrayList<String>();
}
public ArrayList<String> getlist() {
return ss; // 得到字符串列表
}
public void addlist(String s) {
ss.add(s); // 添加字符串
}
public void delelist(String s) {
ss.remove(s); // 删除字符串
}
}
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%@ page import="guo.list"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<%
list li =new list(); //实例一个list对象
li.addlist(new String("guolilu")); //给list添加第一个字符串
li.addlist(new String("mateng")); //添加第二个
session.setAttribute("list",li); //放到session中
li.addlist(new String("liweilong")); //添加第三个
li.addlist(new String("guozhe")); //添加第四个
%>
<a href="show.jsp"><h1>
next page
</h1>
</a>
</body>
</html>
show.jsp //session中取list对象
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@ page import="guo.list"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'hello.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<%
list guo; //声明一个list型变量
guo=(list)session.getAttribute("list"); //session中list对象
%>
the number of string in list:
<br>
<%=guo.getlist().size()%>
</body>
</html>
运行结果: the number of string in list: 4
分析: 大家注意到 index.jsp 中第28行开始,我向list中放入两个字符串变量,此时的list.size应为2;然后我将list对象放入session中;此时我原本以为list已经写入session,然而奇怪的事情发生了,我在第33行开始又添加了两个字符串到list中。从运行结果看,33行后的操作是成功的,show.jsp中session取出的list里面是四个字符串。
结论:session.setAttribute("list",li) 该方法不是顺序执行的,换句话说可能更准确,在对象变量的作用范围内所有对list对象变量的更改都将成功保存在session中