目录

官方解析

博主例子


官方解析

QtWepApp是一个C++的http服务器,受到了java Servlets的启发,因为是Qt写的,所以有跨平台的支持。
QtWebApp包含如下的组成部分:
             HTTP Server
             Template Engine
             File Logger
             Windows Service Installer
每一个部分都能独立的运行;

HTTP服务器以并行的线程处理请求。支持IPv4以及IPv6,持久连接,HTTPS,seesion,cookie和文件上传。

模板引擎用于基于模板文件的网站。支持多种语言和格式(HTML,XML,CSV等),以及其他的模板引擎,如ClearSilver。

日志插用于写日志文件,他还具有丰富的附加属性,如时间戳,线程ID,Session ID和其他信息。对日志程序配置文件的更改将在没有程序重启的情况下自动激活。

QtService组建用于Windows服务程序的注册;

在嵌入式系统里面,至少需要2MB的内存。

下面是一个简单的栗子:

// The request handler receives and responds HTTP requests
void MyRequestHandler::service(HttpRequest& request, HttpResponse& response)
{// Get a request parametersQByteArray username=request.getParameter("username");// Set a response headerresponse.setHeader("Content-Type", "text/html; charset=ISO-8859-1");// Generate the HTML documentresponse.write("<html><body>");response.write("Hello ");response.write(username);response.write("</body></html>");
}// The main program starts the HTTP server
int main(int argc, char *argv[])
{QCoreApplication app(argc,argv);new HttpListener(new QSettings("configfile.ini",QSettings::IniFormat,&app),new MyRequestHandler(&app),&app);return app.exec();
}

博主例子

程序运行截图如下:

关键源码如下:

程序结构如下:

myrequesthandler.h

#ifndef MYREQUESTHANDLER_H
#define MYREQUESTHANDLER_H#include "httpserver/httprequesthandler.h"
using namespace stefanfrings;class MyRequestHandler: public HttpRequestHandler
{Q_OBJECT
public:MyRequestHandler(QObject* parent=nullptr);void service(HttpRequest& request, HttpResponse& response);
};#endif // MYREQUESTHANDLER_H

widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>namespace Ui {
class Widget;
}class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = nullptr);~Widget();private:Ui::Widget *ui;
};#endif // WIDGET_H

main.cpp

#include <QApplication>
#include <QSettings>
#include "httpserver/httplistener.h"
#include "myrequesthandler.h"int main(int argc, char *argv[])
{QApplication a(argc, argv);QSettings *listenerSettings=new QSettings("E:\\Qt2019\\useQtWebAPP\\conf.ini", QSettings::IniFormat, &a);listenerSettings->beginGroup("listener");new HttpListener(listenerSettings, new MyRequestHandler, &a);return a.exec();
}

myrequesthandler.cpp

#include "myrequesthandler.h"
#include <QByteArray>
#include <QDebug>MyRequestHandler::MyRequestHandler(QObject* parent): HttpRequestHandler(parent)
{Q_UNUSED(parent)
}void MyRequestHandler::service(HttpRequest &request, HttpResponse &response)
{QByteArray path=request.getPath();qDebug() << path;QByteArray username("IT1995");response.setHeader("Content-Type", "text/html; charset=ISO-8859-1");response.write("<html><body>");response.write("<h1>");response.write("Hello ");response.write(username);response.write("</h1>");response.write("</body></html>");
}

widget.cpp

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);
}Widget::~Widget()
{delete ui;
}

源码打包下载地址

https://github.com/fengfanchen/Qt/tree/master/UseQtWebAppFrame

Qt文档阅读笔记-QtWebApp官方解析与实例(使用QtWebApp搭建HTTP服务器)相关推荐

  1. Qt文档阅读笔记-QSet官方解析及实例

    目录 官方解析 博主栗子 官方解析 QSet类是一个模板类,他是一个哈希表集合. QSet<T>是Qt的一个普通容器类.QSet存储的值是不指明顺序的,QSet对这些值提供了快速检索的功能 ...

  2. Qt文档阅读笔记-QHostInfo官方解析与实例(根据Host获取IP)

    官方解析 QHostInfo提供了一个静态方法获取主机名: QHostInfo中有一个查找机制,可以根据IP找主机名,也可能工具主机名找IP,可以通过调用QHostInfo::lookupHost这个 ...

  3. Qt文档阅读笔记-QTcpServer官方解析与实例(使用QSocket创建简单的HTTP服务器)

    目录 官方解析 博主例子(做一个简单的HTTP服务器) 本例子中HTTP协议关键点 官方解析 QTcpServer类,提供TCP服务的基础: 这个类接受TCP连接,可以指定一个端口,也可以让其自动一个 ...

  4. Qt文档阅读笔记-QWebPage官方解析与实例

    目录 官方解析 博主例子 源码下载地址 官方解析 QWebPage提供一个视图对象和一个web页面: QWebPage提供了web页面的内容,各种设置(是否支持JavaScript等)和连接,它与QW ...

  5. Qt文档阅读笔记-QWebView官方解析与实例

    目录 背景 官方解析 博主例子 背景 最近发现某Qt项目,出现的效果杠杆的,在看某一小功能的时候,发现有个echart的东西,百度了发现,真的是一个新大陆,Qt加web编程,贼吉尔可怕. 在此发现使用 ...

  6. Qt文档阅读笔记-Q_CLASSINFO官方解析与实例

    官方解析 Q_CLASSINFO 这个宏为类提供额外的信息,要想获取这个Q_CLASSINFO这个信息要使用QObject::metaObject().Qt在Active Qt,Qt D-BUS以及Q ...

  7. Qt文档阅读笔记-stackUnder官方解析与实例

    目录 官方解析 博主例子 官方解析 这里可以配合raise()和lower()这两个函数来使用! 博主例子 用2个label,点击谁谁就浮在界面的最上面,很简单的代码,程序运行截图如下: 源码如下: ...

  8. Qt文档阅读笔记-QPropertyAnimation官方解析及实例

    目录 官方解析 博主例子 官方解析 QPropertyAnimation QPropertyAnimation类为Qt属性提供动画. QPropertyAnimation类可以修改Qt属性,从而达到动 ...

  9. Qt文档阅读笔记-QNetworkAccessManager官方解析与实例

    目录 官方解析 博主例子 官方解析 QNetworkAccessMangager类运行应用程序回复和接收网络包. QNetworkAccessManager是一套API库,可以发包,设置代理,内存配置 ...

  10. Qt文档阅读笔记-windowOpacity官方解析及实例(两种方法使得程序渐变出现)

    目录 官方解析 博主例子 官方解析 windowOpacity 这个属性控制窗口的透明度. 他的取值范围是1.0(不透明)至0.0(全透明). 默认情况下,这个属性的值是1.0. 这个属性在Linux ...

最新文章

  1. 不同数据类型的处理函数(一)
  2. wireshark协议解析器原理与插件编写
  3. 生日快乐html_生日快乐,我的祖国
  4. Java阶段性测试--知识点:数组,面向对象,集合、线程,IO流
  5. python单选按钮重置_python – Tkinter单选按钮初始化错误
  6. 找到一个二位数组的鞍点
  7. 90% 程序员都吃亏在这门技术上了,你呢!
  8. 教育部推出首批490门“国家精品在线开放课程”
  9. 如何用matlaab把csv转为mat文件_如何编辑pdf文档?看大神们是如何操作的
  10. 【实用工具】远程桌面工具
  11. 假如你是架构师,你要做些什么
  12. Bootstrap教程:[4]栅格系统详解
  13. 利用正则表达式 替换字符串中多个 URL
  14. 演化博弈及Python实现
  15. 如何使用ERD设计关系数据库?
  16. numpy.take()用法
  17. IDEA 添加插件后启动闪退问题
  18. Transform.rotation所见非所得
  19. 要点初见:Stable Diffusion NovelAI模型优质文字Tag汇总与实践【魔咒汇总】
  20. 面剔除 Face culling

热门文章

  1. 我的log4net使用手册(转自 http://blog.csdn.net/lyjcn/archive/2009/08/11/4432833.aspx)
  2. 如何评价 IBM 收购 Blue Box 集团
  3. 如何解释营销能力与技术能力是正交的
  4. 一进庙会freeeim
  5. 床位的摆放有五大禁忌
  6. 我没学过计算机,是怎么接了四个私活还挣了两个 iPad 的?分享一下!
  7. 百度AI智能小程序正式开放申请
  8. expdp oracle 并行_DMP文件导入ORACLE指南
  9. 机器学习中用到的概率知识_山顶洞人学机器学习之——几种常见的概率分布
  10. python闭包应用实例_Python中的闭包详细介绍和实例