1. 程式人生 > >javax.?ws.?rs

javax.?ws.?rs

sap etc 其他 () 查詢參數 ant teacher mat []

public class RestJaxRsServer {
    
    public static void main(String[] args) throws Exception {
        Component component = new Component();
        component.getServers().add(Protocol.HTTP, 8009);
        component.getDefaultHost().attach(new RestJaxRsApplication(null));
        component.start();
        
        System.out.println(
"The restlet server started ..."); } }
public class RestJaxRsApplication extends JaxRsApplication {

    public RestJaxRsApplication(Context context) {
        super(context);
        this.add(new MyApplication());
    }

}
public class MyApplication extends Application {

    @Override
    
public Set<Class<?>> getClasses() { Set<Class<?>> resources = new HashSet<Class<?>>(); resources.add(StudentResource.class); resources.add(TeacherResource.class); resources.add(TestResource.class); return resources; } }
@Path("/test")
public class TestResource {    
    @GET
    @Path("test")
    @Produces("text/html")  public String test(@QueryParam("name") String name,@DefaultValue("10") @QueryParam("age") int age) throws InterruptedException {
        System.out.println("name="+name);
        System.out.println("age="+age);
        return "SUCCESS";
    }
    
}

1、概述

@Consumes 註釋代表的是一個資源可以接受的 MIME 類型。

@Produces 註釋代表的是一個資源可以返回的 MIME 類型。

這些註釋均可在資源、資源方法、子資源方法、子資源定位器或子資源內找到。

常見幾個註解

@Cookieparam

@FormParam

@HeaderParam

@MatrixParam

@PathParam

@QueryParam

@BeanParam

總共7個註解。

這裏我先介紹下以下三個註解

@MatrixParam

@PathParam

@QueryParam

這三個註解都是從URL裏面取東西的。

@MatrixParamURL分號(;)後面的參數。這個也要註意,一定要在?號前面。

@PathParamURL路徑裏的參數。使用的時候需要註意,要在@Path註解內放一個變量,用{}括起來,然後才可以使用。

@QueryParamURL?後面的請求參數。

2、@Produces:返回的類型

a.返回給client字符串類型(text/plain)

@Produces(MediaType.TEXT_PLAIN)   

b.返回給client為json類型(application/json)

@Produces(MediaType.APPLICATION_JSON)   

3、@Consumes

@Consumes@Produces相反,用來指定可以接受client發送過來的MIME類型,同樣可以用於class或者method,也可以指定多個MIME類

型,一般用於@PUT,@POST

a.接受client參數為字符串類型

@Consumes(MediaType.TEXT_PLAIN)

b.接受clent參數為json類型@Consumes(MediaType.APPLICATION_JSON)

其他註解:

@PathParam
    @GET    
    @Path("{username"})    
    @Produces(MediaType.APPLICATION_JSON)    
    public User getUser(@PathParam("username") String userName) {    
        ...    
    }    
@QueryParam
獲取get請求中的查詢參數:
    @GET    
    @Path("/user")    
    @Produces("text/plain")    
    public User getUser(@QueryParam("name") String name,    
                         @QueryParam("age") int age) {    
        ...    
    }   
如果需要為參數設置默認值,可以使用@DefaultValue,如:
    @GET    
    @Path("/user")    
    @Produces("text/plain")    
    public User getUser(@QueryParam("name") String name,    
                        @DefaultValue("26") @QueryParam("age") int age) {    
        ...    
    }  
@FormParam
獲取post請求中表單中的數據:

    @POST    
    @Consumes("application/x-www-form-urlencoded")    
    public void post(@FormParam("name") String name) {    
        // Store the message    
    }   

@BeanParam
獲取請求參數中的數據,用實體Bean進行封裝

    @POST    
    @Consumes("application/x-www-form-urlencoded")    
    public void update(@BeanParam User user) {    
        // Store the user data    
    }    


javax.?ws.?rs