J2EE 练习题 - JSON HTTP Service
J2EE 练习题 - JSON HTTP Service
1 要求
2 示例代码
2.1 Server 端
2.2 客户端 - Java
1 要求
在 Tomcat 上布署一个 HTTP Service,使用 JSON 格式返回数据
2 示例代码
2.1 Server 端
基于 Maven 开发
新建 Maven webapp 项目
修改 pom.xml 如下
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>lld</groupId>
<artifactId>http.json.test.server</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>http.json.test.server Maven Webapp</name>
<url>http://maven.apache.org</url>
<properties>
<gson.version>2.8.2</gson.version>
<tomcat.version>6.0.53</tomcat.version>
</properties>
<dependencies>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>${gson.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>servlet-api</artifactId>
<version>${tomcat.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>http.json.test.server</finalName>
</build>
</project>创建 POJO 类 User.java
package http.json.test.server.model; public class User {
private String userId;
private String userName; public String getUserId() {
return userId;
} public void setUserId(String userId) {
this.userId = userId;
} public String getUserName() {
return userName;
} public void setUserName(String userName) {
this.userName = userName;
}
}创建 Servlet 类 UserServlet
package http.json.test.server.servlet; import java.io.IOException; import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import com.google.gson.Gson; import http.json.test.server.model.User; public class UserServlet extends HttpServlet { private static final long serialVersionUID = -2118394734647389638L; @Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
} @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
User user = new User();
String userId = req.getParameter("userId");
user.setUserId(userId);
user.setUserName("Lindong");
String jsonString = new Gson().toJson(user);
ServletOutputStream outputStream = resp.getOutputStream();
outputStream.print(jsonString);
}
}修改 web.xml 如下所示
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app>
<display-name>HTTP JSON Service Demo</display-name>
<servlet>
<servlet-name>getUser</servlet-name>
<servlet-class>http.json.test.server.servlet.UserServlet</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>getUser</servlet-name>
<url-pattern>/getUser.do</url-pattern>
</servlet-mapping>
</web-app>编译并打包
mvn clean package
将生成的 war 包复制到 Tomcat webapps 目录并启动 Tomcat,打开浏览器输入 http://localhost:8080/http.json.test.server/getUser.do?userId=10001 后在浏览器中显示结果:
{"userId":"10001","userName":"Lindong"}
2.2 客户端 - Java
使用 Java 程序获取 Service 响应
使用 Maven 创建 quickstart 程序
修改 pom.xml 如下
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>lld</groupId>
<artifactId>http.json.test.client</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging> <name>http.json.test.client</name>
<url>http://maven.apache.org</url> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> <dependencies>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.2</version>
</dependency>
</dependencies>
</project>创建工具类 HttpRequestUtil.java
package lld.http.json.test.client.util; import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry; import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils; public class HttpRequestUtil {
public static String callHttpService(String url, Map<String, String> parameters) throws ClientProtocolException, IOException {
return callHttpService(url, parameters, "utf-8");
} public static String callHttpService(String url, Map<String, String> parameters, String charset) throws ClientProtocolException, IOException {
String result = null;
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
CloseableHttpClient httpClient = httpClientBuilder.build();
HttpPost httpPost = new HttpPost(url); List<NameValuePair> list = new ArrayList<NameValuePair>(); if (parameters != null) {
Iterator<Map.Entry<String, String>> iterator = parameters.entrySet().iterator(); while (iterator.hasNext()) {
Entry<String, String> entry = (Entry<String, String>) iterator.next();
list.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
}
} if (list.size() > 0) {
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list, charset);
httpPost.setEntity(entity);
} HttpResponse response = httpClient.execute(httpPost); if (response != null) {
HttpEntity responseEntity = response.getEntity(); if (responseEntity != null) {
result = EntityUtils.toString(responseEntity);
}
} return result;
}
}调用 Http Service 例程
package lld.http.json.test.client; import java.io.IOException;
import java.util.HashMap;
import java.util.Map; import org.apache.http.client.ClientProtocolException; import lld.http.json.test.client.util.HttpRequestUtil; /**
* Hello world!
*
*/
public class App
{
public static void main( String[] args ) throws ClientProtocolException, IOException
{
String url = "http://localhost:8080/http.json.test.server/getUser.do";
Map<string, string=""> parameters = new HashMap<string, string="">();
parameters.put("userId", "lld");
String result = HttpRequestUtil.callHttpService(url, parameters);
System.out.println("Result is: ");
System.out.println(result);
}
}
J2EE 练习题 - JSON HTTP Service的更多相关文章
- Core J2EE Patterns - Service Locator--oracle官网
原文地址:http://www.oracle.com/technetwork/java/servicelocator-137181.html Context Service lookup and cr ...
- 通过ajax访问Tomcat服务器web service接口时出现No 'Access-Control-Allow-Origin' header问题的解决办法
问题描述 通过ajax访问Web服务器(Tomcat7.0.42)中的json web service接口的时候,报以下跨域问题: XMLHttpRequest cannot load http:// ...
- jQuery调用WCF服务传递JSON对象
下面这个示例使用了WCF去创建一个服务端口从而能够被ASP.Net页面通过jQuery的AJAX方法访问,我们将在客户端使用Ajax技术来 与WCF服务进行通信.这里我们仅使用jQuery去连接Web ...
- Linux PHP增加JSON支持及如何使用JSON
Linux PHP增加JSON支持及如何使用JSON 目前,JSON已经成为最流行的数据交换格式之一,各大网站的API几乎都支持它. JSON(JavaScript Object Notation) ...
- php安装json模块
centOS上因为看php源码中没有json模块,于是采用pecl自动编译安装:# yum install php-devel# yum install php-pear# yum install g ...
- 使用XFire+Spring构建Web Service(一)——helloWorld篇
转自:http://www.blogjava.net/amigoxie/archive/2007/09/26/148207.html原文出处:http://tech.it168.com/j/2007- ...
- 使用XFire+Spring构建Web Service
XFire是与Axis 2并列的新一代Web Service框架,通过提供简单的API支持Web Service各项标准协议,帮助你方便快速地开发Web Service应用. 相 对于Axis来说,目 ...
- Convert List<Entity> to Json String.
public static string ToJson(this object obj, string datetimeformats) { var timeConverter = new I ...
- Cas 服务器 Service(Cas客户端)注册信息维护
作为Cas服务器,允许哪些客户端接入与否是通过配置来定义的.对Cas服务器来说,每一个接入的客户端与一个Service配置对应:在Cas服务器启动时加载并注册上这些Service,与之对应的客户端才能 ...
随机推荐
- 解决debugJDK源码看不到局部变量的值
背景:使用的jdk1.8.0_201 问题描述:在eclispe中调试代码进入到JDK源码中,想看到某个变量的值得变化,发现此变量的值没法看到 解决方案: 1.进入到你安装本机的jdk目录下,找到sr ...
- Odoo中的env详解
转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826382.html 一:environment environment类提供了对ORM对象的封装,同时提 ...
- Linux服务之DNS介绍
DNS-------Domain Name System域名系统 介绍:DNS就是把域名和IP地址联系在一起的服务,有了DNS服务器,你就不用输入IP地址来访问一个网站,可以通过输入网址访问. ...
- php静态化介绍
1.动态URL地址设置成静态形式http://state.com/index.php?c=play&a=index&id=16267 ------>http://state.co ...
- 性能测试基础---jmeter函数二次开发
Jmeter函数的二次开发. ·什么时候需要进行jmeter的自定义函数扩展呢? 一般来说,如果我们要对数据进行处理,而jmeter没有提供相应的功能(函数),此时我们可以自己进行自定义函数的扩展. ...
- Consul 知识点
平时开发时,一般使用consul dev模式,开发模式下kv存储不会持久化存储,全在内存中(重启consul就丢了!),所以一般建议yml配置文件内容,在项目中单独存一个文件,启动调试时,直接把配置文 ...
- Comet OJ 夏季欢乐赛 距离产生美
距离产生美 https://cometoj.com/contest/59/problem/B?problem_id=2680 题目描述 JWJU放暑假了,于是鸡尾酒就和女朋友璇璇一起出去玩.但是外面太 ...
- Java String语法
String类代表字符串. Java程序中的所有字符串文字(例如"abc" )都被实现为此类的实例. 字符串不变; 它们的值在创建后不能被更改. 字符串缓冲区支持可变字符串. 因为 ...
- zzulioj - 2624: 小H的奇怪加法
题目链接:http://acm.zzuli.edu.cn/problem.php?id=2624 题目描述 小H非常喜欢研究算法,尤其是各种加法.没错加法包含很多种,例如二进制中的全加,半加等.全加: ...
- Qt常用类——QFrame类与QWidge类
QFrame与QWidget的区别: QFrame是基本控件的基类,QWidget是QFrame基类. QWidget类是所有用户界面对象的基类. Widget是用户界面的基本单元:它从窗口系统接收鼠 ...