使用IDEA 搭建基於jersey的RESTful api
阿新 • • 發佈:2020-06-12
環境準備:
- Intellij IDEA
- tomcat 7
建立完成後,使用Add Frameworks Support把maven專案的支援引入。
在專案上右鍵:
到此為止就已經成功建立了一個web專案了。
<dependency>
<groupId>org.glassfish.jersey.containers</groupId> <artifactId>jersey-container-servlet</artifactId> <version>2.25</version> </dependency>
修改web.xml
<servlet> <servlet-name>JAX-RS Servlet</servlet-name> <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> <init-param> <param-name>jersey.config.server.provider.packages</param-name> <param-value>com.hlzf.hellojersey</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>JAX-RS Servlet</servlet-name> <url-pattern>/api/*</url-pattern> </servlet-mapping>
package com.hlzf.hellojersey; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; /** @Path 對應的是restful api的子路勁,比如前面配置的是/api/*,則訪問該API的路徑就是https//:ip:port/api/hello @GET @POST 對應的是請求資源用的HTTP方法 @Produces 表示返回的資料型別,如MediaType.TEXT_PLAIN對應返回文字型別 */ @Path("hello") public class Hello { @GET @Produces(MediaType.TEXT_PLAIN) public String sayHello(){ return "Hello,I am text!"; } @POST @Produces(MediaType.TEXT_XML) public String sayXMLHello() { return "<?xml version=\"1.0\"?>" + "<hello> Hello,I am xml!" + "</hello>"; } @GET @Produces(MediaType.TEXT_HTML) public String sayHtmlHello() { return "<html> " + "<title>" + "Hello Jersey" + "</title>" + "<body><h1>" + "Hello,I am html!" + "</body></h1>" + "</html> "; } }
在tomcat中引入專案,啟動
使用網頁進行get請求:
打包完成後,在out目錄找到war包 :
使用該註釋獲取引數時可以獲取URI中制定規則的引數
//該類的路徑為/user @GET @Path("{username"}) @Produces(MediaType.APPLICATION_JSON) public User getUser(@PathParam("username") String userName) { //... }
@GET @Path("/user") @Produces("text/plain") public User getUser(@QueryParam("name") String name,@QueryParam("age") int age) { //... }
@POST @Consumes("application/x-www-form-urlencoded") publicvoid post(@FormParam("name") String name) { // }
@GET @Path("/user") @Produces("text/plain") public User getUser(@QueryParam("name") String name,@DefaultValue("26") @QueryParam("age") int age) { //...
}
@GET public String get(@Context UriInfo ui) { MultivaluedMap<String,String> queryParams = ui.getQueryParameters(); MultivaluedMap<String,String> pathParams = ui.getPathParameters(); }