前面两篇博客的内容主要是界面搭建的过程,随着界面搭建工作的完成,网页端需要加入数据,原先的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端口获取数据库数据的更多相关文章

  1. JaveWeb 公司项目(5)----- Java获取当前时间的年月日以及同Thrift格式的转化

    随着项目进度的逐步完成,数据传输和界面基本上已经搭建完成,下面就是一些细节部分的修改 今天博文的主要内容说的是获取当前的时间和同Thrift类型的转化 和C#类似,java也有一个时间类Date,加载 ...

  2. jmeter 性能测试 JDBC Request (查询数据库获取数据库数据) 的使用

    JDBC Request 这个Sampler可以向数据库发送一个jdbc请求(sql语句),并获取返回的数据库数据进行操作.它经常需要和JDBC Connection Configuration配置原 ...

  3. jmeter JDBC Request (查询数据库获取数据库数据) 的使用

    JDBC Request 这个Sampler可以向数据库发送一个jdbc请求(sql语句),并获取返回的数据库数据进行操作.它经常需要和JDBC Connection Configuration配置原 ...

  4. Thinkphp5获取数据库数据到视图

    这是学习thinkhp5的基础篇笔记. 本文主要讲怎么配置数据库链接,以及查询数据库数据,并且最后将数据赋给视图. 数据库配置: thinkphp5的数据库配置默认在conf下的database.ph ...

  5. 转jmeter 性能测试 JDBC Request (查询数据库获取数据库数据) 的使用

    JDBC Request 这个Sampler可以向数据库发送一个jdbc请求(sql语句),并获取返回的数据库数据进行操作.它经常需要和JDBC Connection Configuration配置原 ...

  6. java获取数据库数据表的元数据

    Connction conn; DatabaseMetaData dmd=conn.getMetaData();//获取数据库元数据 PreparedStatment ps; ps.getParame ...

  7. Vue学习笔记十三:Vue+Bootstrap+vue-resource从接口获取数据库数据

    目录 前言 SpringBoot提供后端接口 Entity类 JPA操作接口 配置文件 数据库表自动映射,添加数据 写提供数据的接口 跨域问题 前端修改 效果图 待续 前言 Vue学习笔记九的列表案例 ...

  8. JaveWeb 公司项目(6)----- 通过ToolTip给控件添加动态注释

    现在公司的项目进展到了视屏这一块,关于海康网页端的构建我会另外写一篇博客来详细讲解,这一篇的博文主要讲的是我刚刚遇到的一个小问题 连接上了视屏之后,将控制按钮换成图标,方位按钮比较好理解,调焦调距的按 ...

  9. JaveWeb 公司项目(7)----- 通过JS动态生成DIV

    Web网页项目的数据表格功能已经大体完成,下面是另一个主要功能,在线视频的显示 目前我做的项目是渔政监控方面,在之前C#的版本中已经实现了摄像头的在线监控,用的海康封装好的SDK,目前需要做的工作是在 ...

随机推荐

  1. HDU 2064 汉诺塔III (递推)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2064 约19世纪末,在欧州的商店中出售一种智力玩具,在一块铜板上有三根杆,最左边的杆上自上而下.由小到 ...

  2. Redis Desktop Manager连接Redis

    1.注释redis.conf文件中的:bind 127.0.0.1修改为自己的IP 2.ifconfig查看自己的虚拟机ip 3.拿到IP后,返回Windows,开启cmd,通过telnet命令,测试 ...

  3. P1288 取数游戏II

    luogu原题 最近刚学了博弈论,拿来练练手qwq 其实和数值的大小并没有关系 我们用N/P态来表示必胜/必败状态 先在草稿纸上探究硬币♦在最左侧(其实左右侧是等价的)的一条长链的N/P态,设链长为n ...

  4. 01:saltstack 基本使用

    1.1 准备实验环境: 安装系统 1)硬件配置如下 2) 先把光标放到”install CentOS 7”,按 Tab键编辑内核参数,添加 (net.ifnames=0 biosdevname=0) ...

  5. C# asp:FileUpload上传文件使用JS实现预览效果

    js代码: <script type="text/javascript"> //下面用于图片上传预览功能 function setImagePreview() { va ...

  6. AndroidO Treble架构下Hal进程启动及HIDL服务注册过程【转】

    本文转载自:https://blog.csdn.net/yangwen123/article/details/79854267 通过前面对Treble架构的介绍,我们知道,Android Framew ...

  7. loj#2510. 「AHOI / HNOI2018」道路 记忆化,dp

    题目链接 https://loj.ac/problem/2510 思路 f[i][a][b]表示到i时,公路个数a,铁路个数b 记忆化 复杂度=状态数=\(nlog^2n\) 代码 #include ...

  8. 360搜索引擎取真实地址-python代码

    还是个比较简单的,不像百度有加密算法 分析 http://www.so.com/link?url=http%3A%2F%2Fedu.sd.chinamobile.com%2Findex%2Fnews. ...

  9. SpringBoot 调用 mysql存储过程的实战

    网络上写的一堆都不能用的 好吧.. 首先创建 存储过程 DROP PROCEDURE IF EXISTS dfsSons; CREATE PROCEDURE dfsSons(IN rootid INT ...

  10. P3244 [HNOI2015]落忆枫音

    思路 给出了一个DAG,要求以1为根的外向树的个数 如果没有加边的条件,就非常好做 每个点都只保留一条入边,最后得到的一定就是一个符合条件的树了(因为给了一个DAG啊) 所以答案是\(\prod_{i ...