2017-02-16 93 views
0

我用java的主要servlet來創建會話變量。但我是 無法從java main2 servlet訪問該會話變量。HttpSession不工作?

前端是Angular2和後端是用java

Angular2部分

getsess(){ 
     console.log("button press") 
      var url = "http://localhost:8000/demoApp/main"; 
      var header=new Headers(); 
      header.append('Content-Type','application/x-www-form-urlencoded'); 
      let body=new URLSearchParams(); 
      body.append('username',this.pass); 
     this._http.post(url,body,{headers:header}).subscribe(
      res => console.log(res) 
     ); 
     } 
     view(){ 
     let body=new URLSearchParams(); 
      body.append('username',this.pass); 
     this._http.post("http://localhost:8000/demoApp/main2",body).subscribe(
      res => console.log(res) 
     ) 
     } 
     inval(){ 
     this._http.get("http://localhost:8000/demoApp/main3").subscribe(
      res => console.log(res) 
     ) 

爪哇主要的servlet部分

// TODO Auto-generated method stub 
    String s=request.getParameter("username"); 
    System.out.println(s); 
    HttpSession hs=request.getSession(true); 
    hs.setAttribute("s", s); 
    System.out.println("session created !! "+ hs.getAttribute("s")); 

爪哇MAIN2 servlet的部分

HttpSession hs=request.getSession(); 
    System.out.println("another page"+hs.getAttribute("s")); 

輸出

enter image description here

+0

你怎麼在這裏做會話管理? –

+0

我感覺jsessionid cookie沒有設置。你可以嘗試直接從瀏覽器打到網址嗎? – Sanj

回答

1

的問題是最有可能的是,2個請求沒有出於某種原因,相同的會話ID。您可以使用:

HttpSession hs = request.getSession(true); 
hs.getId(); 

獲取id和打印以查看它們是否相同。

This and this SO問題可能有助於解決如何維護會話的問題。

+0

我檢查了身份證。你是對的,他們是不同的。我怎樣才能解決這個問題 ? –

0

獲取cookie(名稱爲JSESSIONID)然後使用它(在請求標頭中)可能會有所幫助。

  1. 獲取第一頁的回覆。用JS讀取Cookie(名稱爲JSESSIONID)
  2. 使用它,你將調用請求(在頭:餅乾:「JSESSIONID =東西;」)...