一个朴素的基于HTTP协议的项目 - Go语言中文社区

一个朴素的基于HTTP协议的项目


1.这个项目是干嘛的?

这个项目主要是实现前后端数据的连通。从前端网页收到的数据经过处理一直存储到后台的mysql数据库。

2.项目所用到的知识

1.什么是HTTP协议:
参考我往期博客:
http://blog.csdn.net/sayhello_world/article/details/75018519

2.什么是mysql,怎么用?
http://blog.csdn.net/sayhello_world/article/details/75304003

3.什么叫CGI
看百度:
http://baike.baidu.com/item/CGI/607810

项目大体思路

0.数据怎么传输?

这里写图片描述

1.网页怎么向后台传输数据。

页面发送消息,传给后台cgi。
我们先看HTTP头部信息。
这里写图片描述
我们这里用调用自己写的相关CGI函数实现从浏览器发送过来数据的处理。
这里只简单介绍GET方法与POST方法,其他方法与之基本类似。
这里写图片描述

注意使用POST这种方法传输数据时,HTTP在数据发送完后,并不会发送相应的数据传输完毕提示信息,所以HTTP服务器提供了另一个环境变量CONTENET_LENGTH,该环境变量记录了传输过来了多少个字节长度的数据(单位为字节),所以在编写CGI程序时,如果method为POST,就需要通过该变量来限定读取的数据的长度。

接下来我们看目前的网页怎么发送数据的?
图三

那么我们可以模仿他们,如果是GET方法从浏览器获得的数据写入URL中。后台从URL中读取数据。

2.子进程怎么处理及存储数据?

子进程通过程序替换调用相关path位置的程序,去处理数据。
我们可以调用wwwRoot下的默认主页(indx.html)信息来进行替换。
index.html的动作处理是将数据插入数据库中或查询数据库现有数据。
所以,这里用到了CGI。

3.数据库怎么样插入以及查询

插入:
先拿到方法,如果是GET方法,直接把数据拷贝到buff里。
如果是POST方法,也就是说数据在正文,需要从正文一个一个读取数据,长度为CONTENT_LENGTH。

有了数据之后,就可以进行插入或者查询操作了。

因为数据库建学生信息表的时候建了4个信息(姓名,性别,学校,爱好),所以这里给4个数组就可以了。
当遇到=和&之间时,这里就是要插入数据库的数据。
通过调用数据库语句插入/查找。

//这里给出插入的。
sql obj("root","127.0.0.1","","student_info",3306);
obj.connect();     
obj.insert(argv[0],argv[1],argv[2],argv[3]);

着重说明的是,这里的mysql库是下载并且新连接的库,所以我们原本的引入库的方法都不行。

#include<sqlclient.h>
//或
#include"sqlclient.h"

所以这里需要动态加载库。
图五:

项目遇到的问题

1.mysql开始不会用的问题。
2.动态库不会加载的问题。
3.开始不知道怎么处理前后端的数据传输。
4.控制output的shell不会写

项目源码

github:https://github.com/Noctis-xjw/Http

项目截图

图6

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/sayhello_world/article/details/75314825
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-04-11 01:09:11
  • 阅读 ( 829 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢