对于Java开发人员来说,应该已经习惯了应用spring框架中的注解方式来提供接口,本人就是这种。不过最近由于工作需要,要开发纯Java项目,不使用任何框架,那就只能使用servlet来达到提供接口的目的了,顺便复习一下。
Servlet是 Java用来创建动态web应用的服务组件,可以被部署在Java web服务器中,例如:Tomcat,JBoss,WebLogic等主流服务器中。Servlet可以对用户的请求做出响应。
它的功能如下:

  1. 读取客户端发来的显示信息(表单数据)
  2. 读取客户端发来的隐式信息(请求头信息)
  3. 生成相应结果
  4. 发送显示信息给客户端(HTML)
  5. 发送隐式数据到客户端(状态码和响应头信息)

由于servlet一般是和JSP配合开发,但这里重点是介绍servlet如何提供接口,所以这里不会进行JSP的开发。由于希望不改变前端的调用方式,则servlet获取参数的部分会和配合jsp获取参数的方式有一点区别,其他的就没有了,该干嘛干嘛。

最后的小demo,可以点击文末链接下载。

现在开始这个过程吧。

1,eclipse中新建一个动态web项目,命名为OrdinaryWorldServletDemo。


2,引入jar包,包括servlet-api.jar,dubbo-2.5.3.jar,fastjson-1.2.47.jar。
其中servlet-api.jar在tomcat的lib目录下,提供servlet基本依赖,引入即可(没有安装tomcat请先安装,因为我们待会要使用tomcat来跑这个servlet项目)。
3,新建一个po类。

package com.twf.demo.po;
import java.io.Serializable;
/*** 人物信息* @author twf**/
public class CharacterInfo implements Serializable{private static final long serialVersionUID = -3468076463472476354L;private String name; // 姓名private String sex; // 性别private String job; // 工作private String address; // 地址public CharacterInfo(String name, String sex, String job, String address) {super();this.name = name;this.sex = sex;this.job = job;this.address = address;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getJob() {return job;}public void setJob(String job) {this.job = job;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}@Overridepublic String toString() {return "CharacterInfo [name=" + name + ", sex=" + sex + ", job=" + job+ ", address=" + address + "]";}
}

4, 新建一个servlet类。

package com.twf.demo.servlet;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.alibaba.dubbo.common.utils.IOUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.twf.demo.po.CharacterInfo;@WebServlet("/FindCharacterInfoServlet")  // 该注解将会作为接口url的一部分
public class FindCharacterInfoServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 响应参数格式设置response.setCharacterEncoding("UTF-8");response.setContentType("application/json");response.setStatus(HttpServletResponse.SC_OK);// 如果是从JSP页面发起的请求,则参数是以下面的方式获取的。
//      String parameter = request.getParameter("xxx");// 现在是以这种方式先获取请求参数得json格式字符串BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream(), "utf-8"));String body = IOUtils.read(reader); // 获取请求参数的json格式字符串// 然后将json字符串转为Java对象,这里只对参数做一个打印操作,有需要的朋友可以自行做其做其他操作CharacterInfo characterInfo = JSON.parseObject(body, new TypeReference<CharacterInfo>() {});System.out.println(characterInfo.toString());// 造几条数据返回List<CharacterInfo> list = new ArrayList<CharacterInfo>(); CharacterInfo characterInfo1 = new CharacterInfo("孙少平", "男", "煤矿工人", "大牙湾煤矿");CharacterInfo characterInfo2 = new CharacterInfo("孙少安", "男", "农民企业家", "双水村");CharacterInfo characterInfo3 = new CharacterInfo("田晓霞", "女", "记者", "黄原省城");CharacterInfo characterInfo4 = new CharacterInfo("田润叶", "女", "教师", "学校");list.add(characterInfo1);list.add(characterInfo2);list.add(characterInfo3);list.add(characterInfo4);response.getWriter().println(list);}
}

5,使用postman模拟发送请求及结果如下。请求的url(即接口)就是:IP+端口+项目名称+servlet类的路径注解,如果发送的是POST请求,就会执行doPost()方法,如果发送的是GET请求,就会执行doGet方法。

后台日志打印如下:

说明接口调用成功。

另外,url的配置也可以采用配置文件的方式,即

  • 去掉servlet类的注解中的路径,只保留“@WebServlet”这部分
  • 然后在web.xml文件中加上如下配置:
    <servlet><description></description><display-name>FindCharacterInfoServlet</display-name><servlet-name>FindCharacterInfoServlet</servlet-name><servlet-class>com.twf.demo.servlet.FindCharacterInfoServlet</servlet-class></servlet><servlet-mapping><servlet-name>FindCharacterInfoServlet</servlet-name><url-pattern>/FindCharacterInfoServlet</url-pattern></servlet-mapping>

项目源码点这里。

使用servlet提供接口相关推荐

  1. java 对外提供接口_Java服务器对外提供接口以及Android端向服务器请求数据

    讲解下java服务器是如何对移动终端提供接口的,以什么数据格式提供出去,移动端又是怎么请求服务器,接收以及解析返回数据的. 服务端:还是在原先S2SH框架的项目上(搭建SSH详细步骤及其相关说明),加 ...

  2. Servlet | ServletConfig接口、ServletContext接口详解

    目录 一:ServletConfig接口 二:ServletContext接口 三:补充缓冲机制 一:ServletConfig接口 (1)ServletConfig是什么? javax.servle ...

  3. 总结Servlet体系接口和类

    --核心-- javax.servlet.Servlet接口 构造方法服务对象:主线程 init方法.destory方法的服务对象:主线程 service方法的服务对象是:分支线程 --重要-- ja ...

  4. java对外sdk提供接口_Android SDK封装,对外提供接口

    项目中需要把连接服务器的部分做成一个service并生成一个jar模块.其他产品就可通过这个包来快速的开发连接服务器的应用软件.做成一个service的优点是: 1. 在后台运行,可以一直保持与服务器 ...

  5. API 低代码开发:接口大师,一套开发、管理和提供接口的产品框架

    目录 一.简介 二."器"有所用 三."三大"平台/系统使用手册 ⭐️1.API接口系统手册⭐️ 访问在线接口 在线接口文档列表 接口文档详情页 搜索接口 ⭐️ ...

  6. 定制Android系统开发之一——提供接口的方式

    何为定制Android系统?就是在特定的硬件上,移植上Android操作系统,并修改原生Android系统以提供给定制的APP操作定制硬件的方法. 所以,定制Android的主要工作有以下三部分: 适 ...

  7. SpringBoot提供接口实现Excel导入数据并存储到数据库中

    SpringBoot提供接口实现Excel导入数据并存储到数据库中 完整项目文件 1 效果展示 1.1 Excel数据 zxy.xlsx 1.2 导入后数据库中数据 CREATE TABLE `use ...

  8. java servlet是接口_JavaWeb:Servlet 接口

    环境 JDK 8 Spring Tool Suite 4.6.1 Servlet 3.1 Tomcat 8.5 Maven 3.6.3 Servlet 说明 Java web 的核心接口 Servle ...

  9. java 第三方接口安全性_提供接口给第三方使用,需要加上校验保证接口的安全性(rsa加密解密)...

    最近项目组给了一个需求,需要我这边写一个接口,给第三方使用.当时就想,这不是很简单嘛,唰唰唰,就写好了.突然想到,没有限制条件,那岂不是太不安全了,谁都可以调我这个接口了啊.然后就想了想,emmmm, ...

最新文章

  1. 由于不知线程池的bug,某Java程序员叕被祭天
  2. 64.JPA命名策略【从零开始学Spring Boot】
  3. Quartz-Cron表达式统计最近几次的执行时间
  4. 修改input标签输入样式
  5. Markdown编辑器模板
  6. C语言-main函数的参数
  7. Takeown 实现解析
  8. cvAddWeighted 进行图片融合
  9. JavaScript函数实例(一)
  10. Kali Linux基础-抓包与WIFI密码暴力破解
  11. android长度测量工具,手机测量尺子工具
  12. 英语基础语法学习笔记 0
  13. 【 FlutterUnit 食用指南】 开源篇
  14. Excel画横坐标不均分的图表
  15. Pytorch 之torch.nn初探
  16. 如何提升百度竞价推广的转化率?
  17. Java 中的get set方法快捷键和含义
  18. 亚马逊电商数据自动化管理接口平台JAVA SP-API接口开发(中)
  19. 呃呃呃呃呃呃鹅鹅鹅鹅鹅鹅饿
  20. C# (江湖熟手)- 串口设备对接

热门文章

  1. Android适合手机开发的又一力证——安卓街机
  2. C语言————二进制转十进制
  3. Python psutil cpu_percent调用说明
  4. 7所大学提供区块链、加密货币及金融科技相关线上课程
  5. mac(5) : 使用终端解压rar文件
  6. 博士复试复旦计算机,我考上复旦大学博士之路 复旦考博复试通过记
  7. 论运维职业发展中的自我修养
  8. js截取某个字段后面的字符串
  9. 这个立冬,我线下面基了一位TMD高级专家,太牛逼了!
  10. iic获取salve设备地址_Linux下使用IIC总线读写EEPROM(读写i2c从设备通用程序)