2.2 Web Service 访问
Cetia4 REST framework的一个主要目标就是既可以响应传统的web请求,也可以相应web service请求而不必复制公共的代码。在很多情况下,这个目的可以轻易的实现;但是在一些情况下这些代码和方法需要一些调整(例如:建立不同的render方法应对各种请求)。暂时,我们关注理想的情况。
上面定义Render方法也可以用于希望得到xml格式响应的web service 请求。
这可以使用上一节所说的相对路径轻易的简单的实现。在web service 请求,不同的视图被选中,像前面的例子,默认的目录/WEB-INF/xml ( 代替/WEB-INF/html ),默认的文件后缀是jspx(因为现在生产xml文件)。所以,现在的视图就是/WEB-INF/xml/topics/display_topic.jspx.
Cetia4 framework区分传统的web request和web service请求是依据http accept header。http accept header 的值是"text/html" 或者是含有"html" ,那么就判定是一个传统的web请求(视图 /WEB-INF/html将被返回);相反,http accept header 的值是"application/xml"或者 "text/xml",就断定web service请求(视图 /WEB-INF/xml将被返回)。所以,对于web service 客户端来说,设置正确的http header很重要,否则的话,请求将不能按照所要的正确的响应(响应的类型也可以通过特别的http 参数设置,我们将在下面讨论)。
再者,如果你想测试jspx文件,下面是他的代码:display_topics.jspx.
<?xml version="1.0" encoding="ISO-8859-1"?>
<jsp:root version="2.0" xmlns:jsp="http://java.sun.com/JSP/Page">
<jsp:directive.page contentType="application/xml" session="false"/>
<topics>
Hello REST World!
</topics>
</jsp:root>
在<jsp:directive>标签中的session="false"属性是很重要的,因为web service请求是无状态的,至少在实现上,所以我们没必要创建不必要的session(在各个request之间保存状态)。
我们如何测试 web service 实现呢?
一种非常有用的选择是使用Jakarta Commons HttpClient的库。
另一种简单的有局限的选择是使用在com.acsinet_solutions.cetia4.http 包中的httpClient的包装类,可以非常快速和简单的测试效果。下面的代码实现了简单的“http://localhost:8080/forum/topics”请求。其中,SimpleHttpCommandProcessor 设置了http header为"application/xml",所有xml响应将会在标准输出上显示。
package com.example.forum.test;
import com.acsinet_solutions.cetia4.http.*;
import java.io.OutputStream;
public class WebServiceClient
{
public static void main( String[] args ) throws Exception
{
SimpleHttpCommandProcessor processor =
new SimpleHttpCommandProcessor();
// Create a GET request aimed at the topics servlet.
processor.setBase( "http://localhost:8080/forum" );
HttpCommand command = new GetCommand( "/topics" );
// Send the request and print the response to standard output.
OutputStream ostream = System.out;
int statusCode = processor.execute( command, ostream );
System.out.println( statusCode );
}
}
显然,这个单独的java程序必须对应于一个运行的servlet 容器。如果一个 web service 没有被创建,将会发生错误。GET请求可以使用Post ,put ,delete代替,相应的改变GetCommand 为PostCommand, PutCommand或者 DeleteCommand。
这些类可以满足基本的http请求需要,对于灵活多变的需求,可以使用如Jakarta Commons HttpClient这样的库代替(安装和使用非常方便)。
分享到:
相关推荐
- **名称**: cetia4 REST框架是一款基于Java Servlet API的轻量级框架,适用于Web应用程序和服务开发。 - **版本**: 当前版本为1.0。 - **作者**: Santiago Arriaga。 - **版权归属**: Acsinet S.A. de C.V.,版权...
这个压缩包包含三个关键组成部分:文档、源代码和实例,这些都是学习和理解CETIA4 SDK功能和用法的重要资源。 文档部分通常会提供SDK的详细介绍,包括API参考、用户指南和教程。API参考是开发者最常查阅的部分,它...
根据给定的文件信息,我们可以提炼出与Cetia4相关的多个重要知识点,涉及Web开发、Servlet技术以及RESTful Web服务。以下是对这些知识点的详细解释: ### 1. Cetia4框架介绍 Cetia4是一款强大的Java框架,主要用于...
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
# 基于Spring Boot框架的用户管理系统 ## 项目简介 本项目是一个基于Spring Boot框架的用户管理系统,主要用于实现用户的注册、登录、权限管理等功能。项目使用了Spring Security框架进行身份验证和权限控制,结合JWT(JSON Web Token)实现无状态的会话管理。此外,项目还集成了SQLite数据库,简化了数据库的安装和配置。 ## 项目的主要特性和功能 1. 用户管理 用户注册、登录、登出功能。 用户信息的增删改查操作。 用户密码的修改和重置。 2. 权限管理 使用Spring Security进行权限控制。 通过JWT实现无状态的会话管理。 动态配置权限白名单,允许特定URL无需认证访问。 3. 系统监控 获取服务器的基本信息,如CPU、内存、JVM状态等。 提供服务器重启功能。 4. 邮件服务
基于springboot企业员工薪酬管理系统源码数据库文档.zip
Glmark2是Linux操作系统下广泛使用的3D图形性能测试工具,测试步骤: 1、搭建编译环境,安装必要的依赖项 sudo apt-get install g++ build-essential pkg-config sudo apt-get install libx11-dev libgl1-mesa-dev sudo apt-get install libjpeg-dev libpng-dev 2、执行配置、编译、安装命令: ./waf configure --with-flavors=x11-gl ./waf build -j 8 ##(8表示CPU核数) sudo ./waf install 3、终端中运行:$glmark2 4、等待测试完成(10min左右),结果分数越高,表示性能越好。
# 基于物联网的地震预警系统 ## 项目简介 随着自然灾害如风暴、地震、热浪和洪水等事件频率的增加,对这些事件的预测和了解的需求也日益凸显。本项目专注于地震预警系统,旨在利用物联网技术提供及时预警,对于保障安全和减少财产损失具有重要意义。 ## 项目目标 主要目标是开发一个能够检测地震早期预警信号的原型系统。该系统旨在通过可靠且高效的预警系统在地震多发区域提高安全性和应急准备。 ## 项目的主要特性和功能 1. 显示机制使用0.96英寸OLED显示屏和Adafruit NeoPixel Stick来展示地震数据。 2. 音频输出集成蜂鸣器以提供可听警告。 3. 电源来源采用Arduino Uno REV3作为电源。 4. 地震检测使用SW420振动传感器。 5. 时间保持引入DS3231实时时钟以准确记录事件。 6. 多级预警根据振动强度,系统能够触发不同级别的视觉和听觉警告。 ## 安装使用步骤 1. 硬件连接
keil5.26开发编译环境
# 基于TensorFlow的中文文本分类系统 ## 项目简介 本项目是一个基于TensorFlow的中文文本分类系统,使用卷积神经网络(CNN)和循环神经网络(RNN)进行文本分类。项目涵盖了从数据预处理、模型训练、模型评估到模型预测的全流程,旨在提供一个高效的中文文本分类解决方案。 ## 主要特性和功能 数据预处理包括读取文件数据、构建词汇表、转换分类目录、将文本数据转换为ID序列表示等。 模型构建实现了基于CNN和RNN的文本分类模型,支持LSTM和GRU作为RNN的单元。 模型训练提供了详细的训练配置,包括学习率、批次大小、迭代轮次等参数的设置。 模型评估在验证集上评估模型的性能,输出准确率、损失等信息,并生成混淆矩阵。 模型预测加载训练好的模型,对新的文本消息进行分类预测,并输出预测类别。 ## 安装使用步骤 1. 环境准备 安装Python 23 安装TensorFlow 1.3以上
基于springboot的智慧医疗采购系统源码数据库文档.zip
1、资源内容地址:https://blog.csdn.net/abc6838/article/details/143896285 2、数据特点:今年全新,手工精心整理,放心引用,数据来自权威,且标注《数据来源》,相对于其他人的控制变量数据准确很多,适合写论文做实证用 ,不会出现数据造假问题 3、适用对象:大学生,本科生,研究生小白可用,容易上手!!! 4、课程引用: 经济学,地理学,城市规划与城市研究,公共政策与管理,社会学,商业与管理
基于SpringBoot+Vue的志愿者招募管理系统源码数据库文档.zip
本教程介绍了 Ruby 的基础语法、面向对象特性和高级功能(如代码块、异常处理和元编程),并提供了练习任务及其答案,帮助您快速入门并熟悉 Ruby 的强大功能。通过完成这些任务,您可以轻松掌握 Ruby 编程的核心技能。
# 基于C++的日志数据管理系统 ## 项目简介 本项目是一个基于C++的日志数据管理系统(DMS),主要用于在Linux环境下采集、处理和发送日志数据。系统通过读取日志文件、处理登录记录、匹配登录和登出记录,并将处理后的数据发送到服务器。项目结合了多线程技术,确保数据处理的效率和系统的响应性。 ## 项目的主要特性和功能 1. 日志读取与处理 读取日志文件并处理其中的登录记录。 匹配登录和登出记录,保存匹配和未匹配的记录。 处理字节序问题,确保数据准确性。 2. 日志数据发送 向服务器发送处理后的日志数据。 处理发送失败的情况,保存未成功发送的日志记录。 3. 多线程支持 使用多线程技术处理日志读取和发送,提高系统的并发处理能力。 通过线程间通信实现界面更新和数据处理。 4. 用户界面 提供基于Qt的客户端界面,用于显示数据和控制客户端操作。
编号:463 开发软件: Vs2008以上版本 数据库: sqlserver2005以上版本 开发语言和技术: C#结合三层开发模式 系统功能: 出租车管理查询系统开发设计要求能根据出租车的特点,时刻记录着车的实际位置,如经纬度、车速、方向,载客等情况,根据该系统可以方便用户快速的查询到车辆的状态位置等。因此要求系统具有录入、修正、查询、统计、分析等功能。采用asp.net和sqlserver来完成 出租车辆管理 出租车公司 驾驶员管理 模拟真实数据给一个录入模块根据时间查询其当时位置 前台可以查看车辆信息 驾驶员信息 出租公司信息 出租车运行路线查询 可以留言
基于springboot的招聘求职系统源码数据库文档.zip
# 基于Arduino的温湿度监测显示系统 ## 项目简介 该项目旨在设计一个基于Arduino的温湿度监测显示系统。通过DHT11温湿度传感器采集数据,并通过LCD显示屏展示温度和湿度信息。此外,项目还包含一个简单的状态图标显示功能。整个系统采用Arduino Uno作为主控板,操作简单,便于用户随时查看当前环境的温湿度情况。 ## 项目的主要特性和功能 1. 温湿度监测使用DHT11温湿度传感器实时监测环境温湿度。 2. LCD显示通过LCD显示屏展示温度和湿度信息,支持两行显示,每行最多显示16个字符。 3. 状态图标根据当前温度展示不同的状态图标,用于快速了解当前环境状况。 4. 简单易懂界面简洁明了,操作方便,适合各种用户群体使用。 ## 安装使用步骤 1. 硬件准备准备Arduino Uno、LCD显示屏、DHT11温湿度传感器、i2c模块等硬件。 2. 连接硬件按照项目中的Pinout图连接各硬件组件。
基于springboot高校创新创业课程体系源码数据库文档.zip