❶ java session在什麼時候使用不了
一般情況下,session都是存儲在內存里,當伺服器進程被停止或者重啟的時候,內存里的session也會被清空,如果設置了session的持久化特性,伺服器就會把session保存到硬碟上,當伺服器進程重新啟動或這些信息將能夠被再次使用。
1、session在何時被創建
一個常見的誤解是以為session在有客戶端訪問時就被創建,然而事實是直到某server端程序調用HttpServletRequest.getSession(true)這樣的語句時才被創建,注意如果jsP沒有顯示的使用 <%@page session="false"%>關閉session,則JSP文件在編譯成Servlet時將會自動加上這樣一條語句HttpSession session = HttpServletRequest.getSession(true);這也是JSP中隱含的session對象的來歷。
由於session會消耗內存資源,因此,如果不打算使用session,應該在所有的JSP中關閉它。
2、session何時被刪除
綜合前面的討論,session在下列情況下被刪除a.程序調用HttpSession.invalidate();或b.距離上一次收到客戶端發送的session id時間間隔超過了session的超時設置;或c.伺服器進程被停止(非持久session)
3、如何做到在瀏覽器關閉時刪除session
嚴格的講,做不到這一點。可以做一點努力的辦法是在所有的客戶端頁面里使用javascript代碼window.oncolose來監視瀏覽器的關閉動作,然後向伺服器發送一個請求來刪除session。但是對於瀏覽器崩潰或者強行殺死進程這些非常規手段仍然無能為力。
4、有個HttpSessionListener是怎麼回事
你可以創建這樣的listener去監控session的創建和銷毀事件,使得在發生這樣的事件時你可以做一些相應的工作。注意是session的創建和銷毀動作觸發listener,而不是相反。類似的與HttpSession有關的listener還有HttpSessionBindingListener,HttpSessionActivationListener和HttpSessionAttributeListener。
❷ 不同范圍的javabean的生命周期有什麼不同
JavaBean的生命周期存在於4中范圍之中,分別為page、request、session、application,它們通過<jsp:userBean>標簽的sope屬性進行設置,與jsp頁面中的page、request、session、application范圍相對應。
1、page 范圍:與當前頁面相對應,JavaBean的生命周期存在於一個頁面之中,當頁面關閉時javaBean被銷毀
2、request 范圍:與JSP的request生命周期相對應,JavaBean的生命周期存在於request對象之中,當request對象銷毀時JavaBean也被銷毀
3、session范圍:與JSP的session生命周期相對應,JavaBean的生命周期存在於session回話之中,當session超時或回話結束時JavaBean被銷毀
4、application范圍:與JSP的application生命周期相對應,在各用戶與伺服器之間共享,只有當伺服器關閉時JavaBean才被銷毀
當JavaBean被創建後,通過<jsp:setProperty>標簽與<jsp:getProperty>標簽調用時,將會按照page、request、session、application的順序來查找這個JavaBean實例,直到找到一個實例對象為止,如果都找不到,則拋出異常。
❸ 在java中,JSP重定向,轉發,Cookie,session
既然不需要解釋重定向和轉發的概念 上面的逐條注釋就解釋的很清楚了 要別人專解釋也是大同小異
首先屬對於重定向,轉發 要了解他們的工作流程 然後對於Cookie,session的值
Cookie保存於客戶端 session保存於伺服器 還有一些概念自己查
重定向是客戶端跳轉,共有二次請求 轉發是伺服器端跳轉 只有最開始打開頁面的一次請求
對照上面的概念 自己看看就明白了
第一個是對的 我就不說了
第二個 要記住對Cookie的賦值只有等下一次瀏覽請求時才能生效。
第三個 第四個 沒寫入Cookie
第五個 第六個 第七個 第八個 了解session作用范圍 基本上寫入session的東西 只要不是編譯報錯 都能取得到 一般很少會把值保存 session裡面
還說個request 作用域更小了 保存值+然後重定向=獲取不到 以後request 用的多
❹ jquery 如何調用java中的session 或者request
session對象用於在會話范圍內,記錄每個客戶端的訪問狀態,以便於跟蹤每個客戶端的操作狀態。在會話中存儲的信息,在瀏覽器發出後續請求時可以獲取這些會話的有效數據。
在jsp頁面中可以直接使用session對象,也可以通過pageContext.getSession()或request.getSession()方法重新獲取session對象。
session對象可以保存用戶的登錄信息,實現購物車功能等。
HTTP協議是一種無狀態協議。客戶向伺服器發出請求request,然後伺服器返回響應response,連接就被關閉了。在伺服器端不保留連接的有關信息,因此當下一次連接時,伺服器端已沒有以前的連接信息了,無法判斷這一次連接和以前的連接是否屬於同一個客戶。因此,必須使用會話記錄有關連接的信息。
從客戶打開瀏覽器連接到伺服器,到客戶關閉瀏覽器離開這個伺服器,稱做一個會話。當客戶訪問伺服器是,可能會反復連接這個伺服器上的幾個頁面、反復刷新一個頁面或不斷地向一個頁面提交信息等,伺服器應當通過某種方法知道這是同一個客戶,這時就需要session對象。
Jquery Json調用在日常工作中非常好用,只需要Json數據就可以了。
session的工作原理如下:
1.客戶首次訪問伺服器的一個頁面時,伺服器就會為該客戶分配一個session對象,同時為該session對象指定一個唯一的ID,並且將該ID號發送到客戶端並寫入到cookie中,使得客戶端與伺服器端的session建立一一對應關系。
2.當客戶繼續訪問伺服器上的其他資源時,伺服器不再為該客戶分配新的session對象,直到客戶端瀏覽器關閉、超時或調用session的invalidate()方法使其失效,客戶端與伺服器的會話結束。
3.當客戶重新打開瀏覽器訪問網站時,伺服器會重新為客戶分配一個session對象,並重新分配sessionID。
session對象主要用於屬性操作和會話管理,常用方法如下:
1.public void setAttribute(Sting
name, Object
value),設定指定名字的屬性的值,並將它添加到session會話范圍內,如果這個屬性是會話范圍內存在,則更改該屬性的值。
2.public Object getAttribute(String
name),在會話范圍內獲取指定名字的屬性的值,返回值類型為object,如果該屬性不存在,則返回null。
3.public void removeAttribute(String
name),刪除指定名字的session屬性,若該屬性不存在,則出現異常。
4.public void
invalidate(),使session失效。可以立即使當前會話失效,原來會話中存儲的所有對象都不能再被訪問。
5.public String getId(
),獲取當前的會話ID。每個會話在伺服器端都存在一個唯一的標示sessionID,session對象發送到瀏覽器的唯一數據就是sessionID,它一般存儲在cookie中。
6.public void setMaxInactiveInterval(int interval),設置會話的最大持續時間,單位是秒,負數表明會話永不失效。
7.public int getMaxInActiveInterval(),獲取會話的最大持續時間。
8.使用session對象的getCreationTime()和getLastAccessedTime()方法可以獲取會話創建的時間和最後訪問的時間,但其返回值是毫秒,一般需要使用下面的轉換來獲取具體日期和時間。
Date creationTime = new
Date(session.getCreationTime());
Date accessedTime = new
Date(session.getLastAccessedTime());
<%@ page language="java" import="java.util.*" contentType="text/html;charset=GBK"%>
<%
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>session對象方法</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>
<b>
會話ID:<%=session.getId() %>
<br>
是否新會話:<%=session.isNew()
%><br>
設置和獲取屬性對象:用戶名 =
<%session.setAttribute("用戶名","陳寧");
%>
<%=session.getAttribute("用戶名")
%><br>
<%
Date creationTime = new
Date(session.getCreationTime());
Date accessedTime = new
Date(session.getLastAccessedTime());
%>
會話創建時間:<%=creationTime
%><br>
上次訪問時間:<%=accessedTime
%><br>
會話持續時間(s):<%=session.getMaxInactiveInterval()
%><br>
<%session.setMaxInactiveInterval(12);
%>
修改後的會話持續時間(s):<%=session.getMaxInactiveInterval()
%><br>
<%session.invalidate();
%>
</b>
</body>
</html>
Jquery Json調用在日常工作中非常好用,只需要Json數據就可以。
❺ 請問在java web項目中,我輸入用戶名和密碼登陸後,此時我想跳轉到下一個頁面。。。
用session可以。也可以用request,其實就是你把值取到放到作用域裡面,在JSP裡面取出來顯示而已。想學可以多再網上看看教程,也可以多問。我不收學費,也不敢稱大師。