一 Jersey简介
Jersey是 JAX-RS API的一个实现,通过它可以方便的开发RESTful Web services。
Http中的常用方法与REST中资源的CURD操作对应
方法 | REST中的资源的操作 |
GET | 检索资源 |
PUT | 更新资源 |
POST | 创建资源 |
DELETE | 删除资源 |
二 Jersey简单例子
使用jar包 : asm-3.3.1.jar, jersey-core-1.1.4.1.jar, jersey-server-1.1.4.1.jar, jsr311-api-1.1.1.jar
IUserMgtWeb.java
package controller; import javax.ws.rs.FormParam; 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; import javax.ws.rs.core.Response; import com.sun.jersey.api.view.Viewable; @Path("/user") public interface IUserMgtWeb { @POST @Path("/login") @Produces(MediaType.TEXT_HTML) public Viewable login(@FormParam("username") String username, @FormParam("password") String password); @GET @Path("/info") @Produces(MediaType.APPLICATION_JSON) public Response getUserInfo(); }
UserMgtWebImpl.java
package controller.impl; import javax.ws.rs.Path; import javax.ws.rs.core.Response; import com.sun.jersey.api.view.Viewable; import controller.IUserMgtWeb; @Path("/user") public class UserMgtWebImpl implements IUserMgtWeb { @Override public Viewable login(String username,String password) { if("admin".equals(username)&&"admin".equals(password)){ System.out.println("nice man!"); return null; }else{ System.out.println("username:"+username+",password:"+password); return new Viewable("/login.html",null); } } @Override public Response getUserInfo() { return Response.ok("{id:'001',name:'sam'}").build(); } }
UserMgtApplication.java
package application; import java.util.HashSet; import java.util.Set; import javax.ws.rs.core.Application; import controller.IUserMgtWeb; import controller.impl.UserMgtWebImpl; public class UserMgtApplication extends Application{ private Set<Object> singletons = new HashSet<Object>(); private Set<Class<?>> empty = new HashSet<Class<?>>(); @Override public Set<Class<?>> getClasses() { return empty; } @Override public Set<Object> getSingletons() { return singletons; } public UserMgtApplication(){ empty.add(IUserMgtWeb.class); singletons.add(new UserMgtWebImpl()); } }
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>Jersey</display-name> <servlet> <servlet-name>UserMgtWebRest</servlet-name> <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> <!-- <init-param> --> <!-- <param-name>javax.ws.rs.Application</param-name> --> <!-- <param-value>application.UserMgtApplication</param-value> --> <!-- </init-param> --> <!-- 如果启用以下执行jersey初始化,那么容器将对指定包内的class都当作singletons做处理, 此时必须在相应的实现类中有rest相应注解出现,否则容器会报错 --> <init-param> <param-name>com.sun.jersey.config.property.packages</param-name> <param-value>controller.impl</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>UserMgtWebRest</servlet-name> <url-pattern>/rest/*</url-pattern> </servlet-mapping> </web-app>
login.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <form action="/Jersey/rest/user/login" method="post"> <label>username:</label> <input type="text" name="username"/> <label>password:</label> <input type="password" name="password"/> <input type="submit" value="submit"/> </form> </body> </html>
Note:
尽量不要使用PUT与DELETE方法,因为如果使用PUT或者DELETE方法,在后台通过request.getParameter("username")获取不到相应的数据。只能通过request.getInputStream()获取流中数据在解析。
如果使用PUT与DELETE方法并且通过FormParam注入参数,但是在filter或者其他代码快【先于注入方法的任意代码】中读取了request.getInputStream()流中信息,这FormParam要注入的参数将无法获取值,因为流已经被读取了。
相关推荐
基于 Jersey + SpringBoot 实现的的 restful 服务,主要包括用户管理、在线考试,自动批卷、成绩管理、错题管理、留言板、试卷管理、题库管理、试题科目维护等功能。 #### 项目源码 | | github | |--- |--- | | ...
jersey-guice-dispatch-wrapper.zip,允许通过guice allows绑定jersey资源方法分派包装器允许通过guice绑定jersey 1资源方法分派包装器。
Feign使用像Jersey和CXF这样的工具来编写Rest或SOAP服务的java客户端。此外,Feign允许您在诸如Apache HC这样的http库之上编写自己的代码。Feign将你的代码与http API连接起来,通过可定制的解码器和错误处理来将...
资源名称:Java RESTful Web Service实战内容简介:国内首本完整地、深度地讲解如何基于Java标准规范实现REST风格的Web服务的专著,阿里巴巴资深Java技术专家近10年开发经验结晶,3位业内著名技术专家联袂推荐!...
议题简介###Dropwizard 是近期崛起的一个轻量级的微服务(Microservice) 框架,以RESTful 为核心,整合了目前Java 主流的技术框架如Jersey、Hibernate 等,从前端网页、核心服务、资料库存取到资源监控,提供了一个...
Dropwizard 是近期崛起的一个轻量级的微服务(Microservice) 框架,以RESTful 为核心,整合了目前Java 主流的技术框架如Jersey、Hibernate 等,从前端网页、核心服务、资料库存取到资源监控,提供了一个full-stack 却...
服务器日志可视化-RESTful版本##先决条件要重建此项目,您需要具备以下条件: 玛文JDK 1.7(不建议使用1.8) MongoDB(最低版本) 玻璃鱼## Project简介visLog是Web服务器日志的可视化项目。 该项目是与Focus ...
项目简介 Restful风格的JavaEE安全、稳定、快速的云平台 核心技术 前端技术:摒弃掉JQuery和Bootstrap,和大牛讨论后的结果 (1) React (适合构建大应用,兼容web和原生app应用) (2) Vue (适合构建小型应用,也可以看...
4.8 jax-rs:利用jersey生成wadl 182 4.9 restlet框架 186 4.10 下一章 191 第5章 web服务安全 193 5.1 web服务安全概述 193 5.2 线路级(wire-level)安全 194 5.3 为rabbitcounter服务添加安全支持 203 5.4 web服务...
##简介 展示了以下j2ee工具的使用 1.jersey,webservice工具 2.springMVC,内含webService的客户端调用,即类org.springframework.web.client.RestTemplate 3.hibernate,面向对象操纵数据库 4.json跨域请求,使用...
BOJ_Solve_PBH 白俊问题解决 这里是保存我的代码的地方,该代码已将Baekjun Online Jersey解锁。 在学习算法的同时,我练习了编码以帮助将来的编码测试和各种开发。 简介(2021-3-31) ### Solve.ac
28.3.JAX-RS和Jersey 28.4.嵌入式Servlet容器支持 28.4.1.Servlet,过滤器和监听器 注册Servlet,过滤器和监听器Spring Beans 28.4.2.Servlet上下文初始化 扫描Servlet,过滤器和侦听器 28.4...
简介 jeesuite-libs分布式架构开发套件。包括缓存(一二级缓存,自动缓存管理),粒度,分布式定时任务,文件服务(七牛,阿里云OSS,fastDFS),日志,搜索,代码生成,API网关,配置中心,统一认证平台,分布式锁...
第1章 简介 1.1 内存分配的历史 1.1.1 静态分配 1.1.2 栈分配 1.1.3 堆分配 1.2 状态、存活性和指针可到达性 1.3 显式堆分配 1.3.1 一个简单的例子 1.3.2 垃圾 1.3.3 悬挂引用 1.3.4 共享 1.3.5 失败 1.4 为什么需要...
第1章 简介 1.1 内存分配的历史 1.1.1 静态分配 1.1.2 栈分配 1.1.3 堆分配 1.2 状态、存活性和指针可到达性 1.3 显式堆分配 1.3.1 一个简单的例子 1.3.2 垃圾 1.3.3 悬挂引用 1.3.4 共享 1.3.5 失败 1.4 为什么需要...