2015-11-05 147 views
0

我正在製作一個小程序,用戶名將用於他瀏覽的所有頁面。我寫了下面的代碼。使用Cookie進行會話維護會產生輸出Hello72EB80AEBFB7831A35879408414F9ABA

JSP文件:

<form action="CookieServletOne" method="post"> 
User Name:<input type="text" name="username"> 
<input type="submit" value="Go"> 
</form> 

Servlet的一個(下POST方法):

 response.setContentType("text/html"); 
     PrintWriter pw=response.getWriter(); 

     String username=request.getParameter("username"); 
     pw.println("Welcome " +username); 

     Cookie ck=new Cookie("un",username); 
     response.addCookie(ck); 

     pw.print("<form action='CookieServletTwo'>"); 
     pw.print("<input type='submit' value='go'>"); 
     pw.print("</form>"); 

     pw.close(); 

Servlet2:

response.setContentType("text/html"); 
    PrintWriter pw=response.getWriter(); 

    Cookie[] ck=request.getCookies(); 
    pw.write("Hello" +ck[0].getValue()); 

我想利用這是寫在文本框中的值通過使用cookies到Servlet2。但是,

在結束正在打印的值是這樣的:

Hello5BD0268F522455DA719130360F74A969

我在做什麼錯在這裏???

服務器:Apache Tomcat。 Jdk:1.7 Os:lubuntu。

謝謝。

+1

是什麼讓您認爲請求只有一個cookie,或者第一個cookie是您設置的名爲「un」的cookie?找到你的cookie。不要盲目認爲只有一個。 –

回答

1

您應該將下面的代碼添加到您的servlet2以獲得您想要的結果。您得到的輸出是JSESSIONID。

Cookie[] ck=request.getCookies(); 
for(int i=0; i<ck.length; i++) { 
    if("un".equals(ck[i].getName())) { 
     pw.write("Hello" +ck[i].getValue()); 
    } 
}