Qt文档阅读笔记-QtWebApp官方解析与实例(使用QtWebApp搭建HTTP服务器)
发布日期:2021-06-30 11:01:03
浏览次数:2
分类:技术文章
本文共 3012 字,大约阅读时间需要 10 分钟。
目录
官方解析
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 requestsvoid MyRequestHandler::service(HttpRequest& request, HttpResponse& response){ // Get a request parameters QByteArray username=request.getParameter("username"); // Set a response header response.setHeader("Content-Type", "text/html; charset=ISO-8859-1"); // Generate the HTML document response.write(""); response.write("Hello "); response.write(username); response.write("");}// The main program starts the HTTP serverint 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_OBJECTpublic: MyRequestHandler(QObject* parent=nullptr); void service(HttpRequest& request, HttpResponse& response);};#endif // MYREQUESTHANDLER_H
widget.h
#ifndef WIDGET_H#define WIDGET_H#includenamespace 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#include #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#include 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(""); response.write(" "); response.write("Hello "); response.write(username); response.write("
"); response.write("");}
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://it1995.blog.csdn.net/article/details/89763028 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
不错!
[***.144.177.141]2024年04月06日 15时32分11秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
ACM路上的一大失误
2019-04-30
HDOJ2049 不容易系列之(4)——考新郎
2019-04-30
CodeForces 248B - Chilly Willy - 找规律
2019-04-30
POJ-2418 Hardwood Species(Trie树)(map)
2019-04-30
HDU-4300 Clairewd’s message + 4333(扩展KMP)
2019-04-30
HDU 1592 Half of and a Half(高精度)
2019-04-30
POJ-3304 Segments(计算几何)
2019-04-30
UVA-11538 Chess Queen(数学)
2019-04-30
UVA-11401 Triangle Counting(数学优化)
2019-04-30
Codeforces Round #369 (Div. 2)
2019-04-30
UVA 11426 GCD - Extreme (II)(欧拉函数)
2019-04-30
HDU-2838 Cow Sorting(树状数组)
2019-04-30
POJ-2299 Ultra-QuickSort(树状数组)(离散化)
2019-04-30
基于SSM的兼职论坛系统的设计与实现
2019-04-30
基于java的图书管理系统的设计与实现
2019-04-30
基于java的SSM框架理财管理系统的设计与实现
2019-04-30
基于java的ssm框架就业信息管理系统的设计
2019-04-30
基于java的ssm框架的旅游网站设计与实现
2019-04-30