前面两篇博客的内容主要是界面搭建的过程,随着界面搭建工作的完成,网页端需要加入数据,原先的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. [转载]css3的一个控制背景的属性,background-size可以缩放大小啦

    background-size需要两个值,它的类型可以是像素(px).百分比(%)或是auto,还可以是cover和contain.第一个值为背景图的width,另外一个值用于指定背景图上的heigh ...

  2. Icarscan VCI is definitely the update variation of Start iDiag

    Start iCarScan is alternative of Super X431 iDiag, it’ll make your Android smartphone or tablet righ ...

  3. Linux账号管理

    Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统. 用户的账号一方面可以帮助系统管理员对使用系统的用户进行 ...

  4. js call 和 apply方法记录

    最近看到一篇很好的讲解apply和call的文章转了过来,若涉及版权问题请联系本人删除 1. 每个函数都包含两个非继承而来的方法:call()方法和apply()方法. 2. 相同点:这两个方法的作用 ...

  5. 【js操作url参数】获取指定url参数值、取指定url参数并转为json对象

    获取指定url参数值 /* 获取某url中的某参数值 调用:GetUrlQueryString("[url地址]","[参数名]"); */ function ...

  6. priority todo

    analyze the work about change to right spindle

  7. Java基础再复习(继承、多态、方法内部类**、HashMap用法**、参数传递**)

    ###继承: package com.shiyan; public class Animal { public int legNum; //动物四肢的数量 //类方法 public void bark ...

  8. shell 中的小技巧

    去掉最后一个字符 sed 's/.$//' awk '{sub(/.$/,"")}1' awk '{printf $0"\b \n"}' [root@ ~]# ...

  9. 注册登录二合一之bootstrap

    来源 https://bootsnipp.com/snippets/featured/login-and-register-tabbed-form jquery插件 需导入bootstrap插件 这个 ...

  10. Vue基础进阶 之 Vue生命周期与钩子函数

    Vue生命周期 Vue生命周期:Vue实例从创建到销毁的过程,称为Vue的生命周期: Vue生命周期示意图:https://cn.vuejs.org/v2/guide/instance.html#生命 ...