javascript
Spring MVC:会话高级
不久前,我寫了一篇關于Spring MVC應用程序中HTTP會話的文章。 那是簡單的文章,著重于用法的實際方面。 在文章的最后,我保證會寫一些更高級的主題,專門針對Spring MVC應用程序中的會話。 因此,我將發布這些東西。
在開始討論開發過程中出現的會話和最常見的情況之前,我想強調一些事情。 什么是HTTP會話? 它存在什么? 我希望您知道HTTP是無狀態協議,這意味著瀏覽器和服務器之間沒有永久連接。 結果服務器即使一個應用程序只有一個用戶,也不知道誰是請求的發起者。 該會話是用于識別請求作者的工具。 前面的句子足夠粗略,但它解釋了會議的主要目的。 每個用戶第一次訪問站點時都會獲得一個具有唯一標識符的會話。
獲取會話ID
您可以以與Java EE應用程序相同的方式在Spring MVC應用程序中訪問會話ID。 您只需要在RequestHandler方法的參數中傳遞HttpSession對象,然后為該會話對象調用適當的方法:
...@RequestMapping(value="/", method=RequestMethod.GET)public ModelAndView mainPage(HttpSession session) {ModelAndView mav = new ModelAndView("home");String sid = session.getId();mav.addObject("sid", sid);return mav; } ...獲取會話屬性
當您想訪問控制器中的某些會話屬性時,可以使用與前面的代碼片段相同的構造,但有一些改動:
... Object someObject = session.getAttribute("nameOfAttribute"); ...如果您確實知道將返回哪種類型的對象,則可以指定顯式強制轉換。
使用JSTL的JSP中的會話屬性
在控制器中將一些值放入會話后,如何使用JSTL在JSP中訪問會話值?
@Controller @SessionAttributes("sValue") public class NavController { ...@RequestMapping(value="/", method=RequestMethod.GET)public ModelAndView mainPage() {ModelAndView mav = new ModelAndView("home");String sValue = "Some value";mav.addObject("sValue", sValue);return mav; } ...對sValue會話屬性的訪問將如下所示:
... <p> ${sValue} </p> ...刪除會話
會話的刪除非常簡單,您只需為會話對象調用invalidate()方法即可。 執行此操作后,將針對特定用戶完全刪除會話。
會話超時
會話超時定義了會話的生存期,在此時間內會話有效。 在Java EE應用程序中定義會話超時的最簡單方法是在web.xml文件中指定它。 在應用程序的web.xml文件中添加以下代碼段以設置會話超時:
<session-config><session-timeout>10</session-timeout> </session-config> 在上面的示例中,我將會話超時值設置為等于10分鐘。
翻譯自: https://www.javacodegeeks.com/2013/07/spring-mvc-session-advanced.html
總結
以上是生活随笔為你收集整理的Spring MVC:会话高级的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 笛卡尔的天赋观念说(笛卡儿的天赋观念)
- 下一篇: Java垃圾回收(2)