由於Struts2+hibernate+spring整合在市場的占有率太高,所以很少一部分人去關注Jersey。所以網上有關於Jersey的介紹很少。但是它確實是一個非常不錯的框架。對於請求式服務,對於GET,DELETE請求,你甚至只需要給出一個URI即可完成操作。
舉個簡單的例子:如果你想獲得伺服器資料庫中的所有數據;那么你可以在瀏覽器或者利用Ajax的GET方法,將路徑設定好;例如:localhost:8080/Student (項目名稱)/studentinfo (項目服務總體前綴)/student( 處理student對象的簽注)/getStudentInfo( 最後前綴)。這樣就可以獲取所有學生信息。你可以選擇GET獲取的數據的返回類型:JSON,XML,TEXT_HTML(String)..獲取之後,你可以通過JS將這些數據塞到html或者jsp頁面上。
下面是詳解:
web.xml的設定:
<!--定義Jersey的攔截器 -->
<servlet>
<servlet-name>JerseyServlet</servlet-name>
<servlet-class>
com.sun.jersey.spi.spring.container.servlet.SpringServlet
</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<!--服務類所在的資料夾 -->
<param-value>com.mirrors.action</param-value><!-- 之所以我定義為com.mirrors.action就是說明此包中類的作用類似於struts中action層類的作用--!>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>JerseyServlet</servlet-name>
<url-pattern>/new/*</url-pattern><!--項目服務總體前綴 -->
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
StudentAction.java一些代碼:
@Component
@Path("/student")//處理student對象的簽注
public class StudentAction
{
private StudentDao studentdao;
public void setStudentdaoStudentDao studentdao)
{
this.studentdao =studentdao;
}
@GET//獲取方式
@Path("getStudentInfo")//最後前綴
@Produces({ MediaType.APPLICATION_JSON })//返回類型為一個Student對象的JSON數組
public List<Student> getTrade()
{
return studentdao.getStudent();
}
}
這樣一個GET方式的處理就結束了,接下來就是前台提取方式,你可以通過JS控制JSON數組在頁面的呈現方式。
Jersey總計有4中處理方式,即:@GET,@POST,@DELETE,@PUT。由於Jersey中文資料較少。想學習的可以通過官網API學習。
jersey常用註解解釋:
Annotation | 作用 | 說明 |
@GET | 查詢請求 | 相當於資料庫的查詢數據操作 |
@PUT | 更新請求 | 相當於資料庫的更新數據操作 |
@POST | 插入請求 | 相當於資料庫的插入數據操作 |
@DELETE | 刪除請求 | 相當於數據的刪除數據操作 |
@Path | uri路徑 | 定義資源的訪問路徑,client通過這個路徑訪問資源。比如:@Path("user") |
@Produces | 指定返回MIME格式 | 資源按照那種數據格式返回,可取的值有:MediaType.APPLICATION_XXX。比如:@Produces(MediaType.APPLICATION_XML) |
@Consumes | 接受指定的MIME格式 | 只有符合這個參數設定的請求再能訪問到這個資源。比如@Consumes("application/x-www-form-urlencoded") |
@PathParam | uri路徑參數 | 寫在方法的參數中,獲得請求路徑參數。比如:@PathParam("username") String userName |
@QueryParam | uri路徑請求參數 | 寫在方法的參數中,獲得請求路徑附帶的參數。比如:@QueryParam("desc") String desc |
@DefaultValue | 設定@QueryParam參數的默認值 | 如果@QueryParam沒有接收到值,就使用默認值。比如:@DefaultValue("description") @QueryParam("desc") String desc |
@FormParam | form傳遞的參數 | 接受form傳遞過來的參數。比如:@FormParam("name") String userName |
@BeanParam | 通過Bean的形式傳遞參數 | 接受client傳遞的bean類型的參數,同時這個bean可以在屬性上配置@FormParam用以解決client的屬性名稱和bean的屬性名稱不一致的問題。比如:@BeanParam User user |
@Context | 獲得一些系統環境信息 | 通過@Context可以獲得以下信息:UriInfo、ServletConfig、ServletContext、HttpServletRequest、HttpServletResponse和HttpHeaders等 |
@XmlRootElement | 將bean轉換為xml | 如果要將bean以xml或json的格式返回,必須要這個註解。比如: @XmlRootElement public class User{...} |
@XmlElements | ||
@XmlElement |