轉載請註明出處http://blog.csdn.net/exsuns
jax-rs提供了一個註解注入的方式來取得用戶端的資訊
當jax-rs服務基於servlet發布的時候 ,還可以通過@Context注入servlet中的ServletConfig , ServletContext , HttpServletRequest , HttpServletResponse
然後REST就可以通過sessionid來保持住使用者狀態
使用方法:
建個web工程,並加入jax-rs(jsr311)的JAR包
建立一個類
@Path("UserContext") public class UserContext { @Context UriInfo uriInfo; @Context HttpHeaders httpHeaders; @Context SecurityContext sc; @Context Request req; @Context Response resp; @Context HttpServletResponse response; @Context HttpServletRequest request; @GET public String hi(@QueryParam("name") String yourName ){ if(yourName!=null) request.getSession().setAttribute("name", yourName); String username = (String) request.getSession().getAttribute("name"); if(username!=null){ System.out.println(request.getSession().getId() + ":" + username); } else{ System.out.println(request.getSession().getId() + "沒有使用者"); } return null; } }
<!--在web.xml加入--> <servlet> <display-name>JAX-RS REST Servlet</display-name> <servlet-name>JAX-RS REST Servlet</servlet-name> <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>JAX-RS REST Servlet</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping>
部署部運行
http://localhost:8080/rest/services/UserContext
後台會提示:
A46756539D2E39CC2CFFCB3FE1C99E70沒有使用者
然後運行
http://localhost:8080/rest/services/UserContext?name=hello
後台會出現
A46756539D2E39CC2CFFCB3FE1C99E70:hello