2015-04-16 92 views
-1

当我们与servlet通信到applet时,我们如何确保会话信息被保留?Applet和servlet会话管理

也就是说,我们如何管理applet servlet连接中的cookie?

+1

什么是你谈论的“小程序的servlet连接”? Servlet是否会生成包含该applet的HTML页面,或者是否通过applet创建了一个到servlet的HTTP连接? – Alexander

+0

我们正在创建HTTP连接来连接servlet和applet。 – Zany

回答

0

您可以使用像org.apache.httpcomponents:httpclienthttps://hc.apache.org这样的API,并使用HttpClient的CookieStore为请求设置cookie并从响应中读取它们。之后你必须从某个地方保存的Cookie在你的小应用程序(见getSessionCookie()setSessionCookie()方法存根):

import org.apache.http.cookie.Cookie; 
import org.apache.http.impl.client.*; 
import org.apache.http.client.methods.HttpGet; 
public class Connector { 

    private Cookie getSessionCookie() { /* TODO get cookie from some store (local session, DB, whatever) */ } 
    private void setSessionCookie(Cookie sessionCookie) { /* TODO set cookie to some store (local session, DB, whatever) */ } 


    private void connect() { 
    DefaultHttpClient client = new DefaultHttpClient(); 
    Cookie sessionCookie = getSessionCookie(); 
    if (sessionCookie != null) { 
     client.getCookieStore().addCookie(jsessionidCookie); 
    } 
    client.setRedirectStrategy(new DefaultRedirectStrategy()); 

    // create a GET request to your Servlet in get() 
    HttpGet get = new HttpGet("http://example.com/your/servlet"); 

    HttpResponse response = client.execute(method); 
    int statusCode = response.getStatusLine().getStatusCode(); 

    if (statusCode == 200) { 
     sessionCookie = getJsessionidCookie(client.getCookieStore().getCookies()); 
     // update session cookie 
     setSessionCookie(sessionCookie); 
    } 
    } 
    private Cookie getJsessionidCookie(List<Cookie> cookies) { 
    for (Cookie cookie : cookies) { 
     if (cookie.getName().equals("JSESSIONID")) { 
     return cookie; 
     } 
    } 
    return null; 
    } 
}