rest入门实践之四:(转载)

 

jax-rs(Java API for RESTful Web Services) 实践教程 之四 —— @Context注入HttpServletRequest 使REST保持状态!

分类: SOA JAX-RS 723人阅读 评论(2) 收藏 举报

 转载处:http://blog.csdn.net/exsuns

 

 

jax-rs提供了一个注解注入的方式来取得客户端的信息

当jax-rs服务基于servlet发布的时候 ,还可以通过@Context注入servlet中的ServletConfig , ServletContext ,HttpServletRequest , HttpServletResponse

然后REST就可以通过sessionid来保持住用户状态

 

使用方法:

 

建个web工程,并加入jax-rs(jsr311)的JAR包

 

新建一个类

 

  1. @Path("UserContext")  
  2. public class UserContext {  
  3.       
  4.     @Context UriInfo uriInfo;  
  5.     @Context HttpHeaders httpHeaders;  
  6.     @Context SecurityContext sc;  
  7.     @Context Request req;  
  8.     @Context Response resp;  
  9.     @Context HttpServletResponse response;  
  10.     @Context HttpServletRequest request;  
  11.       
  12.     @GET  
  13.     public String hi(@QueryParam("name") String yourName ){  
  14.         if(yourName!=null)  
  15.             request.getSession().setAttribute("name", yourName);  
  16.           
  17.         String username = (String) request.getSession().getAttribute("name");  
  18.         if(username!=null){  
  19.             System.out.println(request.getSession().getId() + ":" + username);  
  20.         }  
  21.         else{  
  22.             System.out.println(request.getSession().getId() + "没有用户");  
  23.         }  
  24.         return null;  
  25.     }  
  26. }  

 

 

 

 

[xhtml] view plaincopy
  1. <!--在web.xml加入-->  
  2.   <servlet>  
  3.     <display-name>JAX-RS REST Servlet</display-name>  
  4.     <servlet-name>JAX-RS REST Servlet</servlet-name>  
  5.     <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>  
  6.     <load-on-startup>1</load-on-startup>  
  7.   </servlet>  
  8.   <servlet-mapping>  
  9.     <servlet-name>JAX-RS REST Servlet</servlet-name>  
  10.     <url-pattern>/services/*</url-pattern>  
  11.   </servlet-mapping>  

 

 

 

部署部运行

http://localhost:8080/rest/services/UserContext

后台会提示:

 

[c-sharp] view plaincopy
  1. A46756539D2E39CC2CFFCB3FE1C99E70没有用户  

 

 

 

然后运行

http://localhost:8080/rest/services/UserContext?name=hello

后台会出现

 

[xhtml] view plaincopy
  1. A46756539D2E39CC2CFFCB3FE1C99E70:hello  

 

 

posted on 2012-06-30 11:38  pony1223  阅读(230)  评论(0编辑  收藏  举报

导航