JaveWeb 公司项目(3)----- 通过Thrift端口获取数据库数据
前面两篇博客的内容主要是界面搭建的过程,随着界面搭建工作的完成,网页端需要加入数据,原先的B/S架构中C#通过Thrift接口获取数据,所以在网页端也沿用这个设计
首先,新建一个Maven下的Web项目。
在Main文件夹下面新建一个Java的文件夹,在Java文件夹下面新建两个文件夹,此处我命名为com.thrift.iface(Thrift接口)和JSPServlet,在com.thrift.iface文件夹下导入.java类型的Thrift数据,在JSPServlet文件夹下面新建Servlrt类型的文件,将java文件夹改为Sources类型,在pom.xml中导入需要引用的jar包,代码在之后写的一篇idea创建maven项目的博客中有提到,网址如下:http://www.cnblogs.com/Liu30/p/7268138.html
首先定义一个Servlrt基类:
package com.fis.iface;
import com.fis.thrift.RemoteServer.Client;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.protocol.TProtocol;
import org.apache.thrift.transport.TSocket;
import org.apache.thrift.transport.TTransport;
import org.apache.thrift.transport.TTransportException; 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 java.io.IOException; @WebServlet(name = "UBaseServlet")
public class UBaseServlet extends HttpServlet {
protected TTransport thrift_transport;
protected Client Thrift_Client; protected void startClient() throws TTransportException {
thrift_transport = new TSocket("IP地址", 端口号,);
TProtocol protocol = new TBinaryProtocol(thrift_transport);
Thrift_Client = new Client(protocol);
thrift_transport.open();
} protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } protected void closeClient() throws TTransportException {
thrift_transport.close();
Thrift_Client = null;
}
}
Servlet基类代码
然后新建其他的servlet文件,继承这个基类,例如,我要通过Thrift获取一个list数组,servlret文件下的代码如下:
package com.fis.iface; import com.fis.thrift.Thrift_Law;
import com.fis.thrift.Thrift_Sign;
import net.sf.json.JSONArray;
import org.apache.thrift.TException; import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List; //继承基类,设置servlet的名称和设置url路径
@WebServlet(name = "servler文件名",urlPatterns = "/路径名称")
public class getlawsnames extends UBaseServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置编码的格式,避免乱码
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=utf-8");
try {
startClient();
//在这里定义thrift函数实例
closeClient();
JSONArray jsonArray = JSONArray.fromObject(Thrift实例名);
PrintWriter out = response.getWriter();
out.println(jsonArray);
out.flush();
out.close();
} catch (TException e) {
e.printStackTrace();
}
} protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { }
}
servlet获取数据实例
值得一提的是,有时候我们从Thrift中获取的数据显示出来是乱码,因为编码方式不统一的缘故,只要在dopost函数前加这么两句话即可:
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=utf-8");
新建一个JS文件,通过Ajax获取数据
function getLogInfo() {
$.ajax({
dataType: "json", //数据类型为json格式
contentType: "application/x-www-form-urlencoded; charset=utf-8",
type: "POST",
url: "/刚才设置的thrift路径",
statusCode: {
404: function () {
alert('没有获取到数据');
}
},
success: function (data) {
alert('成功获取到数据');
//这个data就是获取到得数据
}
});
在主页面中加载这个JS文件即可。
JaveWeb 公司项目(3)----- 通过Thrift端口获取数据库数据的更多相关文章
- JaveWeb 公司项目(5)----- Java获取当前时间的年月日以及同Thrift格式的转化
随着项目进度的逐步完成,数据传输和界面基本上已经搭建完成,下面就是一些细节部分的修改 今天博文的主要内容说的是获取当前的时间和同Thrift类型的转化 和C#类似,java也有一个时间类Date,加载 ...
- jmeter 性能测试 JDBC Request (查询数据库获取数据库数据) 的使用
JDBC Request 这个Sampler可以向数据库发送一个jdbc请求(sql语句),并获取返回的数据库数据进行操作.它经常需要和JDBC Connection Configuration配置原 ...
- jmeter JDBC Request (查询数据库获取数据库数据) 的使用
JDBC Request 这个Sampler可以向数据库发送一个jdbc请求(sql语句),并获取返回的数据库数据进行操作.它经常需要和JDBC Connection Configuration配置原 ...
- Thinkphp5获取数据库数据到视图
这是学习thinkhp5的基础篇笔记. 本文主要讲怎么配置数据库链接,以及查询数据库数据,并且最后将数据赋给视图. 数据库配置: thinkphp5的数据库配置默认在conf下的database.ph ...
- 转jmeter 性能测试 JDBC Request (查询数据库获取数据库数据) 的使用
JDBC Request 这个Sampler可以向数据库发送一个jdbc请求(sql语句),并获取返回的数据库数据进行操作.它经常需要和JDBC Connection Configuration配置原 ...
- java获取数据库数据表的元数据
Connction conn; DatabaseMetaData dmd=conn.getMetaData();//获取数据库元数据 PreparedStatment ps; ps.getParame ...
- Vue学习笔记十三:Vue+Bootstrap+vue-resource从接口获取数据库数据
目录 前言 SpringBoot提供后端接口 Entity类 JPA操作接口 配置文件 数据库表自动映射,添加数据 写提供数据的接口 跨域问题 前端修改 效果图 待续 前言 Vue学习笔记九的列表案例 ...
- JaveWeb 公司项目(6)----- 通过ToolTip给控件添加动态注释
现在公司的项目进展到了视屏这一块,关于海康网页端的构建我会另外写一篇博客来详细讲解,这一篇的博文主要讲的是我刚刚遇到的一个小问题 连接上了视屏之后,将控制按钮换成图标,方位按钮比较好理解,调焦调距的按 ...
- JaveWeb 公司项目(7)----- 通过JS动态生成DIV
Web网页项目的数据表格功能已经大体完成,下面是另一个主要功能,在线视频的显示 目前我做的项目是渔政监控方面,在之前C#的版本中已经实现了摄像头的在线监控,用的海康封装好的SDK,目前需要做的工作是在 ...
随机推荐
- 100.容器List-ArrayList
package collection; import java.util.ArrayList; import java.util.Collection; import java.util.Date; ...
- Ford VCM II Ford VCM2 Diagnostic Tool with Ford IDS v108 Installed On Laptop Ready to Use
HOW to VCM2 Ford VCM II with Ford IDS v108 Work Well? VCM2 Ford VCM2 Ford diagnostic tool hot sale i ...
- 使用BenchmarkSQL测试PostgreSQL
BenchmarkSQL是一款经典的开源数据库测试工具,内嵌了TPCC测试脚本,可以对EnterpriseDB.PostgreSQL.MySQL.Oracle以及SQL Server等数据库直接进行测 ...
- Python学习路线人工智能线性代数知识点汇总
人工智能和数据分析相关的线性代数知识.比如什么是矢量,什么是矩阵,矩阵的加减乘除.矩阵对角化,三角化,秩,QR法,最小二法.等等 矢量: 高中数学中都学过复数,负数表达式是: a+bi 复数实际上和二 ...
- Pony 编程语言介绍
Pony,一种“Rust 遇上 Erlang”的语言,让开发快捷.安全.高效.高并发的程序更简单. 在 Wallaroo Labs,我是工程副总裁,我们正在构建一个用 Pony 编程语言编写的 高性能 ...
- Maven项目启动报错:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
1.场景 1.1.先确认pom.xml文件已添加mysql依赖: <dependency> <groupId>mysql</groupId> < ...
- 【js】关于闭包和匿名函数
关于js闭包.之前我一直以为是匿名函数,以为封闭式的创建即执行销毁就是闭包,其实这是匿名函数,不一样的.也没有闭包的使用经验. 后来去网上查了下才知道,闭包的意思是:函数内部还有函数,返回一个函数,内 ...
- 通过RMAN 识别失败数据库损坏的对象
背景 业务起不来,读取数据库时报坏块,无法读取数据 数据库版本:11.2.0.3 数据库无备份,无归档 1. 识别坏块 执行以下命令后,rman 会把坏块信息统计到 v$database_block_ ...
- php 腾讯云 对象存储V5版本 获取返回的上传文件的链接方法
腾讯云 对象存储V5版本 文档地址:https://github.com/tencentyun/cos-php-sdk-v5 调用简单文件上传方法: 返回数据如下 Array ( [data:prot ...
- 关于PRD、MRD、BRD文档
笔者现在所在的公司有专职的产品经理,在职业生涯最长的那家公司,并没有专门的产品经理,虽然在创业公司期间有产品经理,但是似乎产品经理更多的是和客户沟通需求,反馈,并不输出正规意义上产品经理该有的输出.从 ...