分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

J2EE 练习题 - JSON HTTP Service

发布时间:2023-09-06 01:43责任编辑:苏小强关键词:暂无标签

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

原文地址:https://www.cnblogs.com/lldwolf/p/7833957.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved