标签:
Jersey是JAX-RS(JavaAPI for RESTful Service)标准的一个实现,用于开发RESTful Web Application。可以参考JAX-RS的介绍(http://www.cnblogs.com/pixy/p/4838268.html),其中的用法适用于JAX-RS标准的所有实现版本。
本文只介绍Jersey MVC的使用。
Jersey定义了一个Viewable的类,当资源方法返回的是Viewable对象时,就代表我们想要把结果转换成视图(MVC模式)。也就是说资源方法可以当成Controller,根据请求生成Model,再分发到View去做呈现。如果想选择一个轻量级的MVC框架,有不想用Servlet当作Controller,Jersey也是一个好的选择。
传统的MVC模式
Jersery用作MVC的模式
Jersey目前提供了JSP和FreeMarker两种模板引擎。Maven中配置如下依赖
<dependency> <groupId>org.glassfish.jersey.ext</groupId> <artifactId>jersey-mvc</artifactId> <version>2.5</version> </dependency> <dependency> <groupId>org.glassfish.jersey.ext</groupId> <artifactId>jersey-mvc-jsp</artifactId> <version>2.5</version> </dependency>
要使用Jersery MVC 并且用JSP模板引擎,必须以Filter方式设定Jersey。
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name>Jersey MVC Sample</display-name> <!-- Jersey --> <filter> <filter-name>jersey</filter-name> <filter-class>org.glassfish.jersey.servlet.ServletContainer</filter-class> <init-param> <param-name>javax.ws.rs.Application</param-name> <param-value>tw.com.codedata.jersey.MyApplication</param-value> </init-param> <init-param> <param-name>jersey.config.servlet.filter.forwardOn404</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>jersey</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
JspMvcFeatrue用来描述要使用Jersey MVC特性,并且使用的是JSP模板引擎。JspMvcFeatrue.TEMPLATES_BASE_PATH配置了JSP的root路径,构建Viewable视图时会该路径中查找template。
package tw.com.codedata.jersey; import org.glassfish.jersey.server.ResourceConfig; import org.glassfish.jersey.server.mvc.jsp.JspMvcFeature; public class MyApplication extends ResourceConfig{ public MyApplication(){ packages("tw.com.codedata.jersey.controller"); register(JspMvcFeature.class); property(JspMvcFeature.TEMPLATES_BASE_PATH, "/WEB-INF/jsp"); } }
@Path("/hello") public class HelloController { @GET public Viewable sayHello(@QueryParam("name") @DefaultValue("World") String name) { HashMap model = new HashMap(); model.put("name", name); return new Viewable("/hello", model); } }
<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <html> <head> </head> <body> Hello, <c:out value="${it.name}" /> </body> </html>
http://www.codedata.tw/java/java-restful-3-jersey-mvc/
标签:
原文地址:http://www.cnblogs.com/pixy/p/4844636.html