Web Service漫游记(下)——RESTful

2024-06-09 09:48
文章标签 web restful service 漫游

本文主要是介绍Web Service漫游记(下)——RESTful,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在上一章节提到过,Web Service(以下简称ws)除了SOAP之外还分为RESTful,RESTful全称REpresentation State Transfer(以下简称REST),与SOAP不同的是它不属于协议,RESTful只是一种风格。

REST因为定义较少的标准协议所以更加快速,也更加节省带宽和资源,同样REST也是支持跨平台和跨语言的,同时也可以支持基于SOAP的实现,与SOAP不同,REST不仅支持xml格式的数据,同时也支持JSON,HTML等格式的数据传输。

关于REST在java中的实现,其实javax.ws.rs包自带了支持REST的注解,先来了解一下几个主要的注解。

注解描述
Path服务地址的uri
GET被注解的方法响应GET请求
Produces定义响应的媒体类型,比如xml,html等

java中对于REST的实现需要依赖于jersey或者RESTeasy,主要讲一下jersey,接下来创建一个使用jersey实现REST的实例。

首先需要创建一个java web工程,创建一个ws REST服务类

@Path("/hello")
public class Hello {@GET@Produces(MediaType.TEXT_PLAIN)public String getHelloTxt() {return "Hello REST Txt";}@GET@Produces(MediaType.TEXT_HTML)public String getHelloHtml() {return "<html><title>Hello REST</title><body><h1>Welcome use REST</h1></body></html>";}@GET@Produces(MediaType.TEXT_XML)public String getHelloXml() {return "<?xml version=\"1.0\"?><hello>Hello REST</hello>";}
}

要使url地址能够访问到此服务类,需要在web.xml文件中进行jersey servlet的配置

<web-app><servlet><servlet-name>JerseyServlet</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.clo.ws.rest.server</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>JerseyServlet</servlet-name><url-pattern>/rest/*</url-pattern></servlet-mapping>
</web-app>

其中init-paramjersey.config.server.provider.packages的参数值为自己创建的REST服务所在的包。

最后在页面中写入此服务的超链接用作点击请求服务

<html>
<body>
<a href="rest/hello">Click here</a>
</body>
</html>

使用tomcat启动,访问页面并点击超链接,会由服务的getHelloHtml方法响应,并返回一段html代码,浏览器会解析为html页面,甚至你可以自己创建一个客户端对相应的服务进行访问。

public class HelloClient {public static void main(String[] args) {ClientConfig config = new ClientConfig();Client client = ClientBuilder.newClient(config);WebTarget target = client.target(UriBuilder.fromUri("http://localhost:8080/webservice_rest").build());System.out.println(target.path("rest").path("hello").request().accept(MediaType.TEXT_PLAIN).get(String.class));System.out.println(target.path("rest").path("hello").request().accept(MediaType.TEXT_HTML).get(String.class));System.out.println(target.path("rest").path("hello").request().accept(MediaType.TEXT_XML).get(String.class));}
}

关于ws中REST的使用就介绍到这里。


如需要查看完整代码可以点击此处查看。
文章参考java point网站的web service及java实现REST部分,可点击此处
查看。

这篇关于Web Service漫游记(下)——RESTful的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1044839

相关文章

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加

MyBatis-Plus中Service接口的lambdaUpdate用法及实例分析

《MyBatis-Plus中Service接口的lambdaUpdate用法及实例分析》本文将详细讲解MyBatis-Plus中的lambdaUpdate用法,并提供丰富的案例来帮助读者更好地理解和应... 目录深入探索MyBATis-Plus中Service接口的lambdaUpdate用法及示例案例背景

web网络安全之跨站脚本攻击(XSS)详解

《web网络安全之跨站脚本攻击(XSS)详解》:本文主要介绍web网络安全之跨站脚本攻击(XSS)的相关资料,跨站脚本攻击XSS是一种常见的Web安全漏洞,攻击者通过注入恶意脚本诱使用户执行,可能... 目录前言XSS 的类型1. 存储型 XSS(Stored XSS)示例:危害:2. 反射型 XSS(Re

Android里面的Service种类以及启动方式

《Android里面的Service种类以及启动方式》Android中的Service分为前台服务和后台服务,前台服务需要亮身份牌并显示通知,后台服务则有启动方式选择,包括startService和b... 目录一句话总结:一、Service 的两种类型:1. 前台服务(必须亮身份牌)2. 后台服务(偷偷干

解决JavaWeb-file.isDirectory()遇到的坑问题

《解决JavaWeb-file.isDirectory()遇到的坑问题》JavaWeb开发中,使用`file.isDirectory()`判断路径是否为文件夹时,需要特别注意:该方法只能判断已存在的文... 目录Jahttp://www.chinasem.cnvaWeb-file.isDirectory()遇

JavaWeb-WebSocket浏览器服务器双向通信方式

《JavaWeb-WebSocket浏览器服务器双向通信方式》文章介绍了WebSocket协议的工作原理和应用场景,包括与HTTP的对比,接着,详细介绍了如何在Java中使用WebSocket,包括配... 目录一、概述二、入门2.1 POM依赖2.2 编写配置类2.3 编写WebSocket服务2.4 浏

使用TomCat,service输出台出现乱码的解决

《使用TomCat,service输出台出现乱码的解决》本文介绍了解决Tomcat服务输出台中文乱码问题的两种方法,第一种方法是修改`logging.properties`文件中的`prefix`和`... 目录使用TomCat,service输出台出现乱码问题1解决方案问题2解决方案总结使用TomCat,

Spring常见错误之Web嵌套对象校验失效解决办法

《Spring常见错误之Web嵌套对象校验失效解决办法》:本文主要介绍Spring常见错误之Web嵌套对象校验失效解决的相关资料,通过在Phone对象上添加@Valid注解,问题得以解决,需要的朋... 目录问题复现案例解析问题修正总结  问题复现当开发一个学籍管理系统时,我们会提供了一个 API 接口去

解决systemctl reload nginx重启Nginx服务报错:Job for nginx.service invalid问题

《解决systemctlreloadnginx重启Nginx服务报错:Jobfornginx.serviceinvalid问题》文章描述了通过`systemctlstatusnginx.se... 目录systemctl reload nginx重启Nginx服务报错:Job for nginx.javas