Jersey MVC

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 MVC

1.添加依赖

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>

2.配置Web.xml

要使用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>

3.自定义Application类,添加有关MVC的设置

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");
    }
}

4.然后就是实现资源方法(返回Viewable对象)和实现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/

时间: 2024-11-05 15:41:45

Jersey MVC的相关文章

Java与REST的邂逅之Jersey

Java 与 REST 的邂逅(一)浅谈 Jersey 及 JAX-RS 简介 在Web的世界中,Java从最早的Servlet/JSP,发展到JSTL/JSF,而third party也有action-based的Struts及Spring MVC,或component-based的GWT, ZK等,事实上Java的Web世界已经非常的成熟.然而这些架构主要设计是以Web Application为主要要求,但是Web的世界中还有另外一个常见的应用是Web Services. 设计Web Ser

Java实现Restful框架Jersey学习

Java与REST的邂逅(一):浅谈Jersey及JAX-RS Java与REST的邂逅(二):JAX-RS核心Annotation Java与REST的邂逅(三):浅谈Jersey MVC Java实现Restful框架Jersey学习

微服务 SpringBoot 2.0(六):常用配置(properties、yml)

约定优于配置,但配置不能为0 -- Java面试必修 引言 在前面的章节中,我们已经知道,SpringBoot的配置文件分为properties和yml,而我个人更青睐yml,其书写格式让人觉得很舒服,那这篇文章了就将配置文件中的各个属性列出来供大家参考,在IDE工具中也会有相应的提示,若出现红色,说明该属性已经在2.0中变更,请查看变更后的书写格式. SPRING CONFIG spring.config.name 配置文件名称,默认为application spring.config.loc

spring Mvc jersey配置

第一步:引入依赖的jar包 <!-- jersey --><dependency>    <groupId>com.sun.jersey</groupId>    <artifactId>jersey-client</artifactId>    <version>${jersey.version}</version></dependency><dependency>    <gr

【jersey】 spring 整合jersey 实现RESTful webservice

Jersey是一个RESTFUL请求服务JAVA框架,与常规的JAVA编程使用的struts框架类似,它主要用于处理业务逻辑层.与Struts类似,它同样可以和hibernate,spring框架整合. 由于Struts2+hibernate+spring整合在市场的占有率太高,所以很少一部分人去关注Jersey.所以网上有关于Jersey的介绍很少.但是它确实是一个非常不错的框架.对于请求式服务,对于GET,DELETE请求,你甚至只需要给出一个URI即可完成操. jar 文件依赖: <pro

用Jersey为Android客户端开发Restful Web Service

平时在做Android客户端的时候经常要与服务器之间通信,客户端通过服务端提供的接口获取数据,然后再展示在客户端的界面上,作为Android开发者,我们平时更多的是关注客户端的开发,而对服务端开发的关注相对较少,但是如果我们要自己一个人设计并开发一套完整的系统,我们就必须同时具备客户端和服务端的开发知识,而且我认为同时掌握客户端和服务端的开发技术还是很有用处的,不仅有助于提升我们的架构知识和能力,而且还……你懂得!身边一些做WEB开发的朋友很多都说为客户端开发接口和单纯地做WEB项目并没有很大的

Why is Jersey?

REST框架有很多: Jersey.RESTEasy.Restlet.CXF.Spring MVC 说一下我为什么使用Jersey: 1.Jersey有一本已出版的书籍,我一直认为书籍是知识最好的载体,<Java RESTful Web Service实战>: 2.Jersey自带测试框架Jersey Test Framework,可以在Junit中进行测试,而不用部署项目: 3.Jersey支持REST MVC模式,这样我们不仅仅可以返回单独的数据(xml.json),并且可以返回视图: 4

采用gradle构建工具创建第一个基于jersey的Rest服务

REST是一种跨平台.跨语言的架构风格,RESTful Web Service是REST风格在Web领域的实现,JAX-RS标准是Java语言对RESTful Web Service的规范,Jersey是JAX-RS的参考实现,也是Java EE参考实现项目GlassFish的子项目:REST架构风格中各种抽象对象被描述为资源,资源的瞬时状态称为representation且可用XML/JSON/Atom等格式表示.RESTful Web Servcie也可以分解为类似MVC的三层结构,即资源.

jQuery中Ajax+Spring MVC实现跨域请求

项目开发中,某个可独立.也可集成的子业务模块须要向外开放相关API接口,先说下项目本身使用了jersery来实现RESTful webservice以名词形式公布API.有意思的是在实际的操作中同事却通过Ajax跨域请求的方式去调用该API,先不说成功与否,这样的方式本就是"滑稽"的.和他一起探讨了此种做法的不合理性,之后选择jersey client的方式进行远程调用.只是他在跨域请求中遇到了问题,自己闲暇时间予以解决,这才是此篇文章的由来. jQuery对跨域请求有两种解决方式各自