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#include 
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 
#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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:HTTP之长连接与短连接(C++ Qt框架实现)
下一篇:HTTP之Cookie和Session(C++ Qt框架实现)

发表评论

最新留言

不错!
[***.144.177.141]2024年04月06日 15时32分11秒