日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2025/3/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt文档阅读笔记-QtWebApp官方解析与实例(使用QtWebApp搭建HTTP服务器) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

?

?

官方解析

博主例子


?

官方解析

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服务器)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。