Qt文档阅读笔记-QtWebApp官方解析与实例(使用QtWebApp搭建HTTP服务器)
目錄
?
?
官方解析
博主例子
?
官方解析
QtWepApp是一個C++的http服務器,受到了java Servlets的啟發(fā),因為是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服務程序的注冊;
在嵌入式系統(tǒng)里面,至少需要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_Hwidget.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_Hmain.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服务器)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Arduino笔记-人体热释电外传感器使
- 下一篇: Qt工作笔记-三种方式解决Qt5中文编码