J2EE 练习题 - JSON HTTP Service


1 要求

2 示例代码

2.1 Server 端

2.2 客户端 - Java


1 要求

在 Tomcat 上布署一个 HTTP Service,使用 JSON 格式返回数据

2 示例代码

2.1 Server 端

基于 Maven 开发

  1. 新建 Maven webapp 项目

  2. 修改 pom.xml 如下

    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>
  3. 创建 POJO 类 User.java

    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;
    }
    }
  4. 创建 Servlet 类 UserServlet

    UserServlet.java

    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);
    }
    }
  5. 修改 web.xml 如下所示

    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>
  6. 编译并打包

    mvn clean package
  7. 将生成的 war 包复制到 Tomcat webapps 目录并启动 Tomcat,打开浏览器输入 http://localhost:8080/http.json.test.server/getUser.do?userId=10001 后在浏览器中显示结果:

    {"userId":"10001","userName":"Lindong"}

2.2 客户端 - Java

使用 Java 程序获取 Service 响应

  1. 使用 Maven 创建 quickstart 程序

  2. 修改 pom.xml 如下

    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>
  3. 创建工具类 HttpRequestUtil.java

    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;
    }
    }
  4. 调用 Http Service 例程

    App.java

    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的更多相关文章

  1. Core J2EE Patterns - Service Locator--oracle官网

    原文地址:http://www.oracle.com/technetwork/java/servicelocator-137181.html Context Service lookup and cr ...

  2. 通过ajax访问Tomcat服务器web service接口时出现No 'Access-Control-Allow-Origin' header问题的解决办法

    问题描述 通过ajax访问Web服务器(Tomcat7.0.42)中的json web service接口的时候,报以下跨域问题: XMLHttpRequest cannot load http:// ...

  3. jQuery调用WCF服务传递JSON对象

    下面这个示例使用了WCF去创建一个服务端口从而能够被ASP.Net页面通过jQuery的AJAX方法访问,我们将在客户端使用Ajax技术来 与WCF服务进行通信.这里我们仅使用jQuery去连接Web ...

  4. Linux PHP增加JSON支持及如何使用JSON

    Linux PHP增加JSON支持及如何使用JSON 目前,JSON已经成为最流行的数据交换格式之一,各大网站的API几乎都支持它. JSON(JavaScript Object Notation)  ...

  5. php安装json模块

    centOS上因为看php源码中没有json模块,于是采用pecl自动编译安装:# yum install php-devel# yum install php-pear# yum install g ...

  6. 使用XFire+Spring构建Web Service(一)——helloWorld篇

    转自:http://www.blogjava.net/amigoxie/archive/2007/09/26/148207.html原文出处:http://tech.it168.com/j/2007- ...

  7. 使用XFire+Spring构建Web Service

    XFire是与Axis 2并列的新一代Web Service框架,通过提供简单的API支持Web Service各项标准协议,帮助你方便快速地开发Web Service应用. 相 对于Axis来说,目 ...

  8. Convert List<Entity> to Json String.

    public static string ToJson(this object obj, string datetimeformats) {     var timeConverter = new I ...

  9. Cas 服务器 Service(Cas客户端)注册信息维护

    作为Cas服务器,允许哪些客户端接入与否是通过配置来定义的.对Cas服务器来说,每一个接入的客户端与一个Service配置对应:在Cas服务器启动时加载并注册上这些Service,与之对应的客户端才能 ...

随机推荐

  1. Shiro RememberMe 1.2.4 反序列化漏洞详细复现

    0x00 前言 今天上班的时候收到了一个复测的任务,打开一看,shiro反序列化漏洞,What?这是个什么东西,经百度查找后才知道,原来是Java的开发框架,好吧,还是没听说过..由于初测报告上的过程 ...

  2. UiPath: Send SMTP Mail Message 发送带附件的邮件

    Tips:关于Hotmail的server和port的获取方式,请参考以下链接 https://support.office.com/en-us/article/Server-settings-you ...

  3. idea安装、配置及基本使用

    下载 下载地址:https://www.jetbrains.com/idea/download/#section=windows Ultimate为旗舰版,功能全面,插件丰富,按年收费. Commun ...

  4. 【Linux】文件拷贝-Linux当前目录所有文件移动到上一级目录(转)

    Linux当前目录所有文件移动到上一级目录 mv * ../

  5. 架构篇 | 带你轻松玩转 LAMP 网站架构平台(一)

    作者 | JackTian 微信公众号 | 杰哥的IT之旅(ID:Jake_Internet) 转载请联系授权(微信ID:Hc220066)备注:来自博客园 1.什么是 LAMP 架构? LAMP 架 ...

  6. ManiFest.MF

    Manifest-Version: 1.0 //指定manifest文件的版本信息 Bundle-ManifestVersion: 2 //指定该包遵从 OSGi 规范 V3 或者 OSGi 规范 V ...

  7. ArrayList与String[]

    不逼自己一把,你永远不知道什么是绝望. 今天被初学java的朋友问到了String[]跟ArrayList是不是有关系呢? 猜测是名称之间的联想,记此篇解惑. Array英语单词里是数组.阵列的意思, ...

  8. Django 1.11 使用命令makemigrations命令无法执行表修改动作

    由于在学习过程中,遇到models模型变动,变动后合并发生问题,故当时做了删除应用文件夹下migrations文件,由于数据库里无较多新数据,故删除后重建,但重建后执行模型合并操作结果为No Chan ...

  9. 回溯法 | 旅行商问题(TSP问题)

    学习链接: 回溯法解旅行商问题(TSP).贪心算法:旅行商问题(TSP) 今天早上做了无数个梦,然后被紧紧地吸附在床上.挣扎一番后爬起来,已经是9点了.然后我开始研究旅行商问题. 在一个无向图中找到一 ...

  10. flex布局整理以及demo

    flex: 概念: flex容器: display:flex flex项: 轴:水平的主轴.垂直的交叉轴 容器的属性: 1. flex-direction(决定主轴的方向.即项目的排列方向) 1.1 ...