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,目前需要做的工作是在 ...
随机推荐
- Oracle执行计划 explain plan
Rowid的概念:rowid是一个伪列,既然是伪列,那么这个列就不是用户定义,而是系统自己给加上的. 对每个表都有一个rowid的伪列,但是表中并不物理存储ROWID列的值.不过你可以像使用其它列那样 ...
- Eloquent JavaScript #11# The Document Object Model
索引 Notes js与html DOM 在DOM树中移动 在DOM中寻找元素 改变Document 创建节点 html元素属性 布局 style CSS选择器 动画 Exercises Build ...
- P3369 【模板】普通平衡树(splay)
P3369 [模板]普通平衡树 就是不用treap splay板子,好好背吧TAT #include<iostream> #include<cstdio> #include&l ...
- sync—WaitGroup
用途:阻塞主线程的执行,直到所有的goroutine执行完成 WaitGroup总共有三个方法:Add(delta int),Done(),Wait().简单的说一下这三个方法的作用. Add:添加或 ...
- 实现 AD 采样,使用 LCD1602 显示 AD 数值
实现 AD 采样,使用 LCD1602 显示 AD 数值 写在前面 单片机内集成的A/D转换,一般都有相应的特殊功能寄存器来设置A/D的使能标志,参考电压,转换频率,通道选择,A/D输入口的属性(模拟 ...
- Linux-eval
shell中eval的用法示例: 语 法:eval [参数] 功能说明:eval会对后面的[参数]进行两遍扫描,如果在第一遍扫面后cmdLine是一个普通命令,则执行此命令:如果cmdLine中含有变 ...
- H5浏览器播放RTMP直播流实现切换
切换直播源的参考:http://blog.csdn.net/u012737182/article/details/73920830
- ajax,分页器
一.ajax请求数据 ''' $.ajax({ url: '/ajax/', # 请求路径 type: 'post', # 请求方式 data: { # get和post都以data字典方式携带数据 ...
- 单用户模式破解root密码
- error C4996: Function call with parameters that may be unsafe – this call relies on the caller to ch
在加入QCustomplot时有如题的错误 1>c:\program files (x86)\microsoft visual studio11.0\vc\include\xutility(21 ...