session 存放对象变量,及遇到的奇怪现象
生活随笔
收集整理的這篇文章主要介紹了
session 存放对象变量,及遇到的奇怪现象
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本程序為簡單測試程序,自己編寫調試可用
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); // 刪除字符串}}
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中
總結
以上是生活随笔為你收集整理的session 存放对象变量,及遇到的奇怪现象的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: while(1); 作用
- 下一篇: java 中对象引用,以及对象赋值