`

restlet session问题

    博客分类:
  • rest
 
阅读更多

restlet中是不提畅使用session的,所以restlet更适合做无状态的服务,如果象购物车这样的业务该怎么样呢,实际上restlet也不是完全不能

实现session,在API中有一个org.restlet.data.Cookie类,我们可以借助cookie来实现。

 

public class SessionTestResource extends Resource {

private ShopCart chart1 = null;

 

@Override

public void init(Context context, Request request, Response response) {

// TODO Auto-generated method stub

super.init(context, request, response);

String token = request.getCookies().getFirstValue("tsession");

if (token == null) {

chart1 = new ShopCart();

chart1.setToken("chart1");

token = chart1.getToken();

response.getCookieSettings().add(

new CookieSetting("tsession", token));

chart1.add();

centers.add(token, chart1);

} else {

chart1 = centers.getchart(token);

chart1.add();

}

}

public SessionTestResource() {

getVariants().add(new Variant(MediaType.TEXT_PLAIN));

}

public SessionTestResource(Context context, Request request,

Response response) {

super(context, request, response);

}

@Override

public Representation getRepresentation(Variant variant) {

String count=""+chart1.getCount();

Representation representation = new StringRepresentation(count,

MediaType.TEXT_PLAIN);

return representation;

}

}

可以看到非常简单,由于用spring来管理resource路由,需要一个无参数的construct,所以不能在构造函数中完成,所以在init方法中完成,如果 cookie被禁止的话,可能只有把状态放在URL中了,初期想法,不是很成熟,大家一起来讨论吧。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics