---
# System prepended metadata

title: session保存作用域
tags: [Java Web-Servlet]

---

# session保存作用域
###### tags: `Java Web-Servlet`


### session保存作用域是和具體的某一個session對應的
用戶在登錄服務器後，服務器端會針對客戶端來判斷
若是首次登陸的客戶端，會生成新的ID，並且會將該ID的資料保存在對應的保存作用域
其他客戶端登陸後，因為使用的是不同ID，因此無法取用其他ID存放在保存作用域的資料
這是為了避免客戶端導入非正確客戶端的資料，導致顯示錯誤
![](https://i.imgur.com/cvLYA9y.png)
前兩行是A客戶端，第三行是B客戶端嘗試取用A客戶端的資料，因為sessionID不同，因此無法獲取A客戶端保存的session，顯示null失敗
![](https://i.imgur.com/0nlReFE.png)
####        常用的API：
        void session.setAttribute(k,v)
        Object session.getAttribute(k)
        void removeAttribute(k)
        
```java=
//演示向HttpSession保存數據
public class Demo04Servlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.getSession().setAttribute("uname","lina");
    }
}
```

```java=
//演示向HttpSession獲取數據
public class Demo05Servlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Object unameObj = request.getSession().getAttribute("uname");
        System.out.println(unameObj);
    }
}
```

## 重點
#### 1.session保存作用域是和具體的某一個session對應的
#### 2.常用的APT：
void session.setAttribute(k,v)：設置session值的value，保存到key之中

Object session.getAttribute(k)：利用session的key值，找到value

void removeAttribute(k)：刪除session中對應key的value