问题描述
rest是无状态的,想通过url增加jsessionid参数的方式实现session.如:定义接口一:@POST@Produces( { "application/json", "application/xml" })@Consumes(application/json)@Path("/rest/test1")public void test1(@Context HttpServletRequest request) throws Exception {request.getSession().setAttribute("test","test");}问题一:如何在调用/rest/test1的时候取得jsessionid?接口二:@POST@Produces( { "application/json", "application/xml" })@Consumes(application/json)@Path("/rest/test2")public void test2() throws Exception {//取得session //session.getAttribute("test");}问题二:如何在调用/rest/test2/?jsessionid=xxxxxxxx的时候取得session,进而取得test1中写入的信息?
解决方案
只要session id正确传入,你这么做是可以的。问题出在你拼出来的url有问题,rest的url应该按下面这样写:/rest/test2/;jsessionid=2523035A40926EB72E984E0D703A2021如果有别的参数需要传递:/rest/test2/;jsessionid=2523035A40926EB72E984E0D703A2021?name1=value1@POST @Produces( { "application/json", "application/xml" }) @Consumes(application/json) @Path("/rest/test2") public void test2() throws Exception { HttpSession session = request.getSession(false); if(session != null){ session.getAttribute("test"); }}
解决方案二:
你需要URL重写技术request.getSession().getId()得到JSESSIONID