国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

免費(fèi)下載建設(shè)銀行官方網(wǎng)站濟(jì)南優(yōu)化網(wǎng)站的哪家好

免費(fèi)下載建設(shè)銀行官方網(wǎng)站,濟(jì)南優(yōu)化網(wǎng)站的哪家好,哪個(gè)網(wǎng)站可以做翻譯賺錢,關(guān)于網(wǎng)站內(nèi)容建設(shè)的正確說法HTTP協(xié)議 HTTP協(xié)議的常用方法 方法 描述 GET 請(qǐng)求指定的頁面信息,并返回實(shí)體主體。 POST 向指定資源提交數(shù)據(jù)進(jìn)行處理請(qǐng)求(例如提交表單或者上傳文件)。數(shù)據(jù)被包含在請(qǐng)求體中。POST請(qǐng)求可能會(huì)導(dǎo)致新的資源的建立和/或已有資源的修改。 …

HTTP協(xié)議

HTTP協(xié)議的常用方法

方法

描述

GET

請(qǐng)求指定的頁面信息,并返回實(shí)體主體。

POST

向指定資源提交數(shù)據(jù)進(jìn)行處理請(qǐng)求(例如提交表單或者上傳文件)。數(shù)據(jù)被包含在請(qǐng)求體中。POST請(qǐng)求可能會(huì)導(dǎo)致新的資源的建立和/或已有資源的修改。

HEAD

類似于GET請(qǐng)求,只不過返回的響應(yīng)中沒有具體的內(nèi)容,用于獲取報(bào)頭

PUT

從客戶端向服務(wù)器傳送的數(shù)據(jù)取代指定的文檔的內(nèi)容。

DELETE

請(qǐng)求服務(wù)器刪除指定的頁面。

OPTIONS

允許客戶端查看服務(wù)器的性能。

HTTP狀態(tài)碼含義

代碼

含義

1**

?信息,請(qǐng)求收到,繼續(xù)處理

2**

成功,行為被成功地接受、理解和采納

3**

重定向,為了完成請(qǐng)求,必須進(jìn)一步執(zhí)行的動(dòng)作

4**

客戶端錯(cuò)誤,請(qǐng)求包含語法錯(cuò)誤或者請(qǐng)求無法實(shí)現(xiàn)

5**

服務(wù)器錯(cuò)誤,服務(wù)器不能實(shí)現(xiàn)一種明顯無效的請(qǐng)求

前端基礎(chǔ)?

主要前端語言:Html、Css、JavaScript

html

Html:超文本標(biāo)記語言,所以它不是一種編程語言而是一種標(biāo)記語言,瀏覽器可以讀取html文檔并以網(wǎng)頁的形式進(jìn)行展示

標(biāo)記語言:是一套標(biāo)記標(biāo)簽,html標(biāo)簽是由尖括號(hào)包圍的關(guān)鍵詞通常由兩個(gè)組成,第一個(gè)為開始標(biāo)簽第二個(gè)為結(jié)束標(biāo)簽

? ? ? ? 例如:<html>? ? ?</html>

? ? ? ? ? ? ? ? ? ?<p>? ? ?</p>

? ? ? ? ? ? ? ? ? ?<div>? ? ?</div> #作為一個(gè)盒子標(biāo)簽,將里面的內(nèi)容作為盒子內(nèi)的內(nèi)容

實(shí)例:

?結(jié)果顯示:網(wǎng)頁中打開

CSS簡介

CSS:是Cascading Style Sheets (層疊樣式表)的縮寫。CSS是一種標(biāo)記語言, 用于為HTML文檔定義布局。例如css涉及字體、顏色、邊距、高度、寬度、背景色等等

可以有三種方式添加css樣式?

1. 直接在標(biāo)簽后面添加

示例:

2.可以把所有的css樣式寫在head標(biāo)簽里并設(shè)置一個(gè)類,然后調(diào)用類

示例

3. 創(chuàng)建一個(gè)css文件,然后載入css文件后調(diào)用文件中設(shè)置的類名

示例:

????????css文件:

? ? ? ? 引入css文件并調(diào)用:

三種使用css方式的優(yōu)先級(jí)

三種方式可以同時(shí)混用

優(yōu)先級(jí):從內(nèi)而外由高到底,所以以上三種第一種最高第三種最低

bootstrap

bootstrap:是其中一個(gè)非常優(yōu)秀的前端框架

中文網(wǎng)地址:Bootstrap中文網(wǎng)

示例:

javaScript

注意:javaScript與java毫無關(guān)系

JavaScript:是一種可以嵌入在HTML代碼中由客戶端瀏覽器運(yùn)行的腳本語言。在網(wǎng)頁中使用JavaScript代碼,不僅可以實(shí)現(xiàn)網(wǎng)頁特效,還可以響應(yīng)用戶請(qǐng)求實(shí)現(xiàn)動(dòng)態(tài)交互的功能。

示例:點(diǎn)擊按鈕彈出事件

?

靜態(tài)服務(wù)器

實(shí)例:實(shí)現(xiàn)一個(gè)靜態(tài)服務(wù)器并根據(jù)客戶端訪問路徑訪問不同網(wǎng)頁

實(shí)現(xiàn)流程

本地創(chuàng)建一個(gè)Views目錄,目錄下存放兩個(gè)網(wǎng)頁

contact.html??

<!DOCTYPE html>
<html lang="UTF-8">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>明日科技</title>
<!-- Bootstrap core CSS -->
<link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css">
<!-- Documentation extras -->
<style>
body {position: relative; /* For scrollspy */
}/* Keep code small in tables on account of limited space */
.table code {font-size: 13px;font-weight: normal;
}/* Inline code within headings retain the heading's background-color */
h2 code,
h3 code,
h4 code {background-color: inherit;
}/* Outline button for use within the docs */
.btn-outline {color: #563d7c;background-color: transparent;border-color: #563d7c;
}
.btn-outline:hover,
.btn-outline:focus,
.btn-outline:active {color: #fff;background-color: #563d7c;border-color: #563d7c;
}/* Inverted outline button (white on dark) */
.btn-outline-inverse {color: #fff;background-color: transparent;border-color: #cdbfe3;
}
.btn-outline-inverse:hover,
.btn-outline-inverse:focus,
.btn-outline-inverse:active {color: #563d7c;text-shadow: none;background-color: #fff;border-color: #fff;
}/* Bootstrap "B" icon */
.bs-docs-booticon {display: block;font-weight: 500;color: #fff;text-align: center;cursor: default;background-color: #563d7c;border-radius: 15%;
}
.bs-docs-booticon-sm {width: 30px;height: 30px;font-size: 20px;line-height: 28px;
}
.bs-docs-booticon-lg {width: 144px;height: 144px;font-size: 90px;line-height: 140px;
}
.bs-docs-booticon-inverse {color: #563d7c;background-color: #fff;
}
.bs-docs-booticon-outline {background-color: transparent;border: 1px solid #cdbfe3;
}/** Main navigation** Turn the `.navbar` at the top of the docs purple.*/.bs-docs-nav {margin-bottom: 0;background-color: #fff;border-bottom: 0;
}
.bs-home-nav .bs-nav-b {display: none;
}
.bs-docs-nav .navbar-brand,
.bs-docs-nav .navbar-nav > li > a {font-weight: 500;color: #563d7c;
}
.bs-docs-nav .navbar-nav > li > a:hover,
.bs-docs-nav .navbar-nav > .active > a,
.bs-docs-nav .navbar-nav > .active > a:hover {color: #463265;background-color: #f9f9f9;
}
.bs-docs-nav .navbar-toggle .icon-bar {background-color: #563d7c;
}
.bs-docs-nav .navbar-header .navbar-toggle {border-color: #fff;
}
.bs-docs-nav .navbar-header .navbar-toggle:hover,
.bs-docs-nav .navbar-header .navbar-toggle:focus {background-color: #f9f9f9;border-color: #f9f9f9;
}/** Homepage** Tweaks to the custom homepage and the masthead (main jumbotron).*//* Share masthead with page headers */
.bs-docs-masthead,
.bs-docs-header {position: relative;padding: 30px 0;color: #cdbfe3;text-align: center;text-shadow: 0 1px 0 rgba(0,0,0,.1);background-color: #6f5499;background-image: -webkit-gradient(linear, left top, left bottom, from(#563d7c), to(#6f5499));background-image: -webkit-linear-gradient(top, #563d7c 0%, #6f5499 100%);background-image:      -o-linear-gradient(top, #563d7c 0%, #6f5499 100%);background-image:         linear-gradient(to bottom, #563d7c 0%, #6f5499 100%);filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#563d7c', endColorstr='#6F5499', GradientType=0);background-repeat: repeat-x;
}/* Masthead (headings and download button) */
.bs-docs-masthead .bs-docs-booticon {margin: 0 auto 30px;
}
.bs-docs-masthead h1 {font-weight: 300;line-height: 1;color: #fff;
}
.bs-docs-masthead .lead {margin: 0 auto 30px;font-size: 20px;color: #fff;
}
.bs-docs-masthead .version {margin-top: -15px;margin-bottom: 30px;color: #9783b9;
}
.bs-docs-masthead .btn {width: 100%;padding: 15px 30px;font-size: 20px;
}@media (min-width: 480px) {.bs-docs-masthead .btn {width: auto;}
}@media (min-width: 768px) {.bs-docs-masthead {padding: 80px 0;}.bs-docs-masthead h1 {font-size: 60px;}.bs-docs-masthead .lead {font-size: 24px;}
}
</style><!-- Analytics
================================================== -->
</head><body class="bs-docs-home"><a id="skippy" class="sr-only sr-only-focusable" href="https://v3.bootcss.com/#content"><div class="container"><span class="skiplink-text">Skip to main content</span></div></a><!-- Docs master nav --><header class="navbar navbar-static-top bs-docs-nav" id="top"><div class="container"><div class="navbar-header"><a href="/" class="navbar-brand">明日學(xué)院</a></div><nav id="bs-navbar" class="collapse navbar-collapse"><ul class="nav navbar-nav"><li><a href="/course.html" >課程</a></li><li><a href="http://www.mingrisoft.com/book.html">讀書</a></li><li><a href="http://www.mingrisoft.com/bbs.html">社區(qū)</a></li><li><a href="http://www.mingrisoft.com/servicecenter.html">服務(wù)</a></li><li><a href="/contact.html">聯(lián)系我們</a></li></ul></nav></div>
</header><!-- Page content of course! -->
<div class="bs-docs-header" id="content" tabindex="-1"><div class="container"><h1> 聯(lián)系我們 </h1><div class="lead"><address>電子郵件:<strong>mingrisoft@mingrisoft.com</strong><br>地址:吉林省長春市寬城區(qū)北湖科技園<br>郵政編碼:<strong>130000</strong><br><abbr title="Phone">聯(lián)系電話:</abbr> 0431-84978981</address></div></div></div>
</body>
</html>

index.html

<!DOCTYPE html>
<html lang="UTF-8">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>明日科技
</title>
<!-- Bootstrap core CSS -->
<link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" 
<!-- Documentation extras -->
<style>
body {position: relative; /* For scrollspy */
}/* Keep code small in tables on account of limited space */
.table code {font-size: 13px;font-weight: normal;
}/* Inline code within headings retain the heading's background-color */
h2 code,
h3 code,
h4 code {background-color: inherit;
}/* Outline button for use within the docs */
.btn-outline {color: #563d7c;background-color: transparent;border-color: #563d7c;
}
.btn-outline:hover,
.btn-outline:focus,
.btn-outline:active {color: #fff;background-color: #563d7c;border-color: #563d7c;
}/* Inverted outline button (white on dark) */
.btn-outline-inverse {color: #fff;background-color: transparent;border-color: #cdbfe3;
}
.btn-outline-inverse:hover,
.btn-outline-inverse:focus,
.btn-outline-inverse:active {color: #563d7c;text-shadow: none;background-color: #fff;border-color: #fff;
}/* Bootstrap "B" icon */
.bs-docs-booticon {display: block;font-weight: 500;color: #fff;text-align: center;cursor: default;background-color: #563d7c;border-radius: 15%;
}
.bs-docs-booticon-sm {width: 30px;height: 30px;font-size: 20px;line-height: 28px;
}
.bs-docs-booticon-lg {width: 144px;height: 144px;font-size: 90px;line-height: 140px;
}
.bs-docs-booticon-inverse {color: #563d7c;background-color: #fff;
}
.bs-docs-booticon-outline {background-color: transparent;border: 1px solid #cdbfe3;
}/** Main navigation** Turn the `.navbar` at the top of the docs purple.*/.bs-docs-nav {margin-bottom: 0;background-color: #fff;border-bottom: 0;
}
.bs-home-nav .bs-nav-b {display: none;
}
.bs-docs-nav .navbar-brand,
.bs-docs-nav .navbar-nav > li > a {font-weight: 500;color: #563d7c;
}
.bs-docs-nav .navbar-nav > li > a:hover,
.bs-docs-nav .navbar-nav > .active > a,
.bs-docs-nav .navbar-nav > .active > a:hover {color: #463265;background-color: #f9f9f9;
}
.bs-docs-nav .navbar-toggle .icon-bar {background-color: #563d7c;
}
.bs-docs-nav .navbar-header .navbar-toggle {border-color: #fff;
}
.bs-docs-nav .navbar-header .navbar-toggle:hover,
.bs-docs-nav .navbar-header .navbar-toggle:focus {background-color: #f9f9f9;border-color: #f9f9f9;
}/** Homepage** Tweaks to the custom homepage and the masthead (main jumbotron).*//* Share masthead with page headers */
.bs-docs-masthead,
.bs-docs-header {position: relative;padding: 30px 0;color: #cdbfe3;text-align: center;text-shadow: 0 1px 0 rgba(0,0,0,.1);background-color: #6f5499;background-image: -webkit-gradient(linear, left top, left bottom, from(#563d7c), to(#6f5499));background-image: -webkit-linear-gradient(top, #563d7c 0%, #6f5499 100%);background-image:      -o-linear-gradient(top, #563d7c 0%, #6f5499 100%);background-image:         linear-gradient(to bottom, #563d7c 0%, #6f5499 100%);filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#563d7c', endColorstr='#6F5499', GradientType=0);background-repeat: repeat-x;
}/* Masthead (headings and download button) */
.bs-docs-masthead .bs-docs-booticon {margin: 0 auto 30px;
}
.bs-docs-masthead h1 {font-weight: 300;line-height: 1;color: #fff;
}
.bs-docs-masthead .lead {margin: 0 auto 30px;font-size: 20px;color: #fff;
}
.bs-docs-masthead .version {margin-top: -15px;margin-bottom: 30px;color: #9783b9;
}
.bs-docs-masthead .btn {width: 100%;padding: 15px 30px;font-size: 20px;
}@media (min-width: 480px) {.bs-docs-masthead .btn {width: auto;}
}@media (min-width: 768px) {.bs-docs-masthead {padding: 80px 0;}.bs-docs-masthead h1 {font-size: 60px;}.bs-docs-masthead .lead {font-size: 24px;}
}
</style><!-- Analytics
================================================== -->
</head><body class="bs-docs-home"><!-- Docs master nav --><header class="navbar navbar-static-top bs-docs-nav" id="top"><div class="container"><div class="navbar-header"><a href="/" class="navbar-brand">明日學(xué)院</a></div><nav id="bs-navbar" class="collapse navbar-collapse"><ul class="nav navbar-nav"><li><a href="http://www.mingrisoft.com/selfCourse.html" >課程</a></li><li><a href="http://www.mingrisoft.com/book.html">讀書</a></li><li><a href="http://www.mingrisoft.com/bbs.html">社區(qū)</a></li><li><a href="http://www.mingrisoft.com/servicecenter.html">服務(wù)</a></li><li><a href="/contact.html">聯(lián)系我們</a></li></ul></nav></div>
</header><!-- Page content of course! --><main class="bs-docs-masthead" id="content" tabindex="-1"><div class="container"><span class="bs-docs-booticon bs-docs-booticon-lg bs-docs-booticon-outline">MR</span><p class="lead">明日學(xué)院,是吉林省明日科技有限公司傾力打造的在線實(shí)用技能學(xué)習(xí)平臺(tái),該平臺(tái)于2016年正式上線,主要為學(xué)習(xí)者提供海量、優(yōu)質(zhì)的課程,課程結(jié)構(gòu)嚴(yán)謹(jǐn),用戶可以根據(jù)自身的學(xué)習(xí)程度,自主安排學(xué)習(xí)進(jìn)度。我們的宗旨是,為編程學(xué)習(xí)者提供一站式服務(wù),培養(yǎng)用戶的編程思維。</p><p class="lead"><a href="/contact.html" class="btn btn-outline-inverse btn-lg">聯(lián)系我們</a></p></div>
</main>
</body>
</html>

服務(wù)器python代碼

# coding:utf-8import socket  # 導(dǎo)入Socket模塊
import re       # 導(dǎo)入re正則模塊
from multiprocessing import Process  # 導(dǎo)入Process多線程模塊HTML_ROOT_DIR = "./Views"   # 設(shè)置靜態(tài)文件根目錄class HTTPServer(object):def __init__(self):"""初始化方法"""self.server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 創(chuàng)建Socket對(duì)象def start(self):"""開始方法"""self.server_socket.listen(128) #設(shè)置最多連接數(shù)print ('服務(wù)器等待客戶端連接...')# 執(zhí)行死循環(huán)while True:client_socket, client_address = self.server_socket.accept() #建立客戶端連接print("[%s, %s]用戶連接上了" % client_address)handle_client_process = Process(target=self.handle_client, args=(client_socket,)) #實(shí)例化線程類handle_client_process.start() # 開啟線程client_socket.close()           # 關(guān)閉客戶端Socketdef handle_client(self, client_socket):"""處理客戶端請(qǐng)求"""# 獲取客戶端請(qǐng)求數(shù)據(jù)request_data = client_socket.recv(1024) #獲取客戶端請(qǐng)求數(shù)據(jù)print("request data:", request_data)request_lines = request_data.splitlines() # 按照行('\r', '\r\n', \n')分隔# 輸出每行新型for line in request_lines:print(line)request_start_line = request_lines[0]  # 解析請(qǐng)求報(bào)文print("*" * 10)print(request_start_line.decode("utf-8"))# 使用正則表達(dá)式,提取用戶請(qǐng)求的文件名file_name = re.match(r"\w+ +(/[^ ]*) ", request_start_line.decode("utf-8")).group(1)# 如果文件名是根目錄,設(shè)置文件名為file_nameif "/" == file_name:file_name = "/index.html"# 打開文件,讀取內(nèi)容try:file = open(HTML_ROOT_DIR + file_name, "rb")except IOError:# 如果異常,返回404response_start_line = "HTTP/1.1 404 Not Found\r\n"response_headers = "Server: My server\r\n"response_body = "The file is not found!"else:# 讀取文件內(nèi)容file_data = file.read()file.close()# 構(gòu)造響應(yīng)數(shù)據(jù)response_start_line = "HTTP/1.1 200 OK\r\n"response_headers = "Server: My server\r\n"response_body = file_data.decode("utf-8")response = response_start_line + response_headers + "\r\n" + response_body # 拼接返回?cái)?shù)據(jù)print("response data:", response)client_socket.send(bytes(response, "utf-8")) # 向客戶端返回響應(yīng)數(shù)據(jù)client_socket.close()   # 關(guān)閉客戶端連接def bind(self, port):"""綁定端口"""self.server_socket.bind(("", port))def main():"""主函數(shù)"""http_server = HTTPServer()  # 實(shí)例化HTTPServer()類http_server.bind(8000)      # 綁定端口http_server.start()         # 調(diào)用start()方法if __name__ == "__main__":main()                    # 執(zhí)行main()函數(shù)

驗(yàn)證:運(yùn)行python然后瀏覽器訪問127.0.0.1:8000

CGI、FastCGI

CGI

CGI (Common Gateway Interface):即通用網(wǎng)關(guān)接口,它是一段程序,運(yùn)行在服務(wù)器上。

CGI工作原理:

????????客戶端登陸一個(gè)系統(tǒng)通過post方式將數(shù)據(jù)提交給web服務(wù)器,web服務(wù)器自身不做處理,它會(huì)調(diào)用CGI應(yīng)用程序進(jìn)行處理并返回結(jié)果,web服務(wù)器最后把結(jié)果返回給客戶端最終生成動(dòng)態(tài)的html頁面

CGI?局限性:?

????????當(dāng)一個(gè)用戶登陸網(wǎng)站時(shí)就需要?jiǎng)?chuàng)建一個(gè)CGI請(qǐng)求,用完以后就拋棄,如果用戶很多就會(huì)創(chuàng)建很多進(jìn)程導(dǎo)致服務(wù)器崩潰

解決辦法:FastCGI

FastCGI

FastCGI:

????????CGI的加強(qiáng)版。他是用進(jìn)程線程池處理一連串的請(qǐng)求,這些進(jìn)程線程由FastCGI服務(wù)器自己管理而不是由web服務(wù)器自己管理,所以FastCGI能是服務(wù)器同時(shí)處理更多的請(qǐng)求

缺陷:編寫程序時(shí)不方便

解決辦法:WSGI? ? ?

WSGI

WSGI (服務(wù)器網(wǎng)關(guān)接口):

????????是為Python語言定義的web服務(wù)器和web應(yīng)用程序或者是框架之間的一種簡單而通用的接口,它是基于FastCGI設(shè)計(jì)的。

WSGI工作原理

客戶端向web服務(wù)器發(fā)起一個(gè)請(qǐng)求,WSGI的底層是通過FastCGI進(jìn)行溝通,當(dāng)server服務(wù)器接受到請(qǐng)求以后可以通過socket套接字把環(huán)境變量和一個(gè)callback函數(shù)傳遞給后端的Application,之后在應(yīng)用程序中完成頁面組裝,然后通過回調(diào)函數(shù)返回給服務(wù)器,最后服務(wù)器再將響應(yīng)????????

補(bǔ)充:

? ? ? ? callback函數(shù):回調(diào)函數(shù)是一個(gè)函數(shù),將會(huì)在另一個(gè)函數(shù)完成執(zhí)行后立即執(zhí)行?;卣{(diào)函數(shù)是一個(gè)作為參數(shù)傳給另一個(gè)函數(shù)的函數(shù),這個(gè)回調(diào)函數(shù)會(huì)在傳給的函數(shù)內(nèi)部執(zhí)行。

定義WSGI接口

語法:

?(此函數(shù)的兩個(gè)參數(shù)都需要從服務(wù)器獲取,所以這本函數(shù)必須由WSGI服務(wù)器來調(diào)用。)

def application(environ,start_response):
? ? start_response(status,response_headers)
? ? return [response_body]

? ? ? ? #application:自定義函數(shù)名

? ? ? ? #environ:這是一個(gè)包含所有HTTP請(qǐng)求信息的dict對(duì)象

? ? ? ? #?start_response:一個(gè)發(fā)送http響應(yīng)的函數(shù)

示例:

def application(environ,start_response):start_response('200 OK',[('Content-Type,'text/html')])return [b'<h1>Hello,World!</h1>']

實(shí)例:通過wsgiref模塊實(shí)現(xiàn)一個(gè)簡單的hello,word

目前apache、nginx等web服務(wù)器都符合WSGI接口的規(guī)范,在python中也內(nèi)置了一個(gè)WSGI服務(wù)器:wsgiref模塊

from wsgiref.simple_server  import make_server#回調(diào)函數(shù)
def sayHi(environ,start_response):#以元組的方式添加響應(yīng)頭start_response("200 OK", [('Content-Type', 'text/html; charset=utf-8')])#body部分return [b'Hello World']
if __name__=='__main__':#三個(gè)參數(shù):IP地址默認(rèn)為127.0.0.1,端口號(hào),回調(diào)函數(shù)ser = make_server('',8000,sayHi)#啟動(dòng)程序ser.serve_forever()

驗(yàn)證:終端運(yùn)行此程序,然后瀏覽器訪問127.0.0.1

運(yùn)行WSGI服務(wù)

實(shí)例:創(chuàng)建網(wǎng)站課程頁面,根據(jù)訪問地址訪問不同html頁面

三個(gè)網(wǎng)頁:

contact.html

<!DOCTYPE html>
<html lang="UTF-8">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>明日科技
</title>
<!-- Bootstrap core CSS -->
<link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css">
<!-- Documentation extras -->
<style>
body {position: relative; /* For scrollspy */
}/* Keep code small in tables on account of limited space */
.table code {font-size: 13px;font-weight: normal;
}/* Inline code within headings retain the heading's background-color */
h2 code,
h3 code,
h4 code {background-color: inherit;
}/* Outline button for use within the docs */
.btn-outline {color: #563d7c;background-color: transparent;border-color: #563d7c;
}
.btn-outline:hover,
.btn-outline:focus,
.btn-outline:active {color: #fff;background-color: #563d7c;border-color: #563d7c;
}/* Inverted outline button (white on dark) */
.btn-outline-inverse {color: #fff;background-color: transparent;border-color: #cdbfe3;
}
.btn-outline-inverse:hover,
.btn-outline-inverse:focus,
.btn-outline-inverse:active {color: #563d7c;text-shadow: none;background-color: #fff;border-color: #fff;
}/* Bootstrap "B" icon */
.bs-docs-booticon {display: block;font-weight: 500;color: #fff;text-align: center;cursor: default;background-color: #563d7c;border-radius: 15%;
}
.bs-docs-booticon-sm {width: 30px;height: 30px;font-size: 20px;line-height: 28px;
}
.bs-docs-booticon-lg {width: 144px;height: 144px;font-size: 90px;line-height: 140px;
}
.bs-docs-booticon-inverse {color: #563d7c;background-color: #fff;
}
.bs-docs-booticon-outline {background-color: transparent;border: 1px solid #cdbfe3;
}/** Main navigation** Turn the `.navbar` at the top of the docs purple.*/.bs-docs-nav {margin-bottom: 0;background-color: #fff;border-bottom: 0;
}
.bs-home-nav .bs-nav-b {display: none;
}
.bs-docs-nav .navbar-brand,
.bs-docs-nav .navbar-nav > li > a {font-weight: 500;color: #563d7c;
}
.bs-docs-nav .navbar-nav > li > a:hover,
.bs-docs-nav .navbar-nav > .active > a,
.bs-docs-nav .navbar-nav > .active > a:hover {color: #463265;background-color: #f9f9f9;
}
.bs-docs-nav .navbar-toggle .icon-bar {background-color: #563d7c;
}
.bs-docs-nav .navbar-header .navbar-toggle {border-color: #fff;
}
.bs-docs-nav .navbar-header .navbar-toggle:hover,
.bs-docs-nav .navbar-header .navbar-toggle:focus {background-color: #f9f9f9;border-color: #f9f9f9;
}/** Homepage** Tweaks to the custom homepage and the masthead (main jumbotron).*//* Share masthead with page headers */
.bs-docs-masthead,
.bs-docs-header {position: relative;padding: 30px 0;color: #cdbfe3;text-align: center;text-shadow: 0 1px 0 rgba(0,0,0,.1);background-color: #6f5499;background-image: -webkit-gradient(linear, left top, left bottom, from(#563d7c), to(#6f5499));background-image: -webkit-linear-gradient(top, #563d7c 0%, #6f5499 100%);background-image:      -o-linear-gradient(top, #563d7c 0%, #6f5499 100%);background-image:         linear-gradient(to bottom, #563d7c 0%, #6f5499 100%);filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#563d7c', endColorstr='#6F5499', GradientType=0);background-repeat: repeat-x;
}/* Masthead (headings and download button) */
.bs-docs-masthead .bs-docs-booticon {margin: 0 auto 30px;
}
.bs-docs-masthead h1 {font-weight: 300;line-height: 1;color: #fff;
}
.bs-docs-masthead .lead {margin: 0 auto 30px;font-size: 20px;color: #fff;
}
.bs-docs-masthead .version {margin-top: -15px;margin-bottom: 30px;color: #9783b9;
}
.bs-docs-masthead .btn {width: 100%;padding: 15px 30px;font-size: 20px;
}@media (min-width: 480px) {.bs-docs-masthead .btn {width: auto;}
}@media (min-width: 768px) {.bs-docs-masthead {padding: 80px 0;}.bs-docs-masthead h1 {font-size: 60px;}.bs-docs-masthead .lead {font-size: 24px;}
}
</style><!-- Analytics
================================================== -->
</head><body class="bs-docs-home"><a id="skippy" class="sr-only sr-only-focusable" href="https://v3.bootcss.com/#content"><div class="container"><span class="skiplink-text">Skip to main content</span></div></a><!-- Docs master nav --><header class="navbar navbar-static-top bs-docs-nav" id="top"><div class="container"><div class="navbar-header"><a href="/" class="navbar-brand">明日學(xué)院</a></div><nav id="bs-navbar" class="collapse navbar-collapse"><ul class="nav navbar-nav"><li><a href="/course.html" >課程</a></li><li><a href="http://www.mingrisoft.com/book.html">讀書</a></li><li><a href="http://www.mingrisoft.com/bbs.html">社區(qū)</a></li><li><a href="http://www.mingrisoft.com/servicecenter.html">服務(wù)</a></li><li><a href="/contact.html">聯(lián)系我們</a></li></ul></nav></div>
</header><!-- Page content of course! -->
<div class="bs-docs-header" id="content" tabindex="-1"><div class="container"><h1> 聯(lián)系我們 </h1><div class="lead"><address>電子郵件:<strong>mingrisoft@mingrisoft.com</strong><br>地址:吉林省長春市南關(guān)區(qū)財(cái)富領(lǐng)域<br>郵政編碼:<strong>131200</strong><br><abbr title="Phone">聯(lián)系電話:</abbr> 0431-84978981</address></div></div></div>
</body>
</html>

course.html

<!DOCTYPE html>
<html lang="UTF-8">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>明日科技
</title>
<!-- Bootstrap core CSS -->
<link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" 
<!-- Documentation extras -->
<style>
body {position: relative; /* For scrollspy */
}/* Keep code small in tables on account of limited space */
.table code {font-size: 13px;font-weight: normal;
}/* Inline code within headings retain the heading's background-color */
h2 code,
h3 code,
h4 code {background-color: inherit;
}/* Outline button for use within the docs */
.btn-outline {color: #563d7c;background-color: transparent;border-color: #563d7c;
}
.btn-outline:hover,
.btn-outline:focus,
.btn-outline:active {color: #fff;background-color: #563d7c;border-color: #563d7c;
}/* Inverted outline button (white on dark) */
.btn-outline-inverse {color: #fff;background-color: transparent;border-color: #cdbfe3;
}
.btn-outline-inverse:hover,
.btn-outline-inverse:focus,
.btn-outline-inverse:active {color: #563d7c;text-shadow: none;background-color: #fff;border-color: #fff;
}/* Bootstrap "B" icon */
.bs-docs-booticon {display: block;font-weight: 500;color: #fff;text-align: center;cursor: default;background-color: #563d7c;border-radius: 15%;
}
.bs-docs-booticon-sm {width: 30px;height: 30px;font-size: 20px;line-height: 28px;
}
.bs-docs-booticon-lg {width: 144px;height: 144px;font-size: 90px;line-height: 140px;
}
.bs-docs-booticon-inverse {color: #563d7c;background-color: #fff;
}
.bs-docs-booticon-outline {background-color: transparent;border: 1px solid #cdbfe3;
}/** Main navigation** Turn the `.navbar` at the top of the docs purple.*/.bs-docs-nav {margin-bottom: 0;background-color: #fff;border-bottom: 0;
}
.bs-home-nav .bs-nav-b {display: none;
}
.bs-docs-nav .navbar-brand,
.bs-docs-nav .navbar-nav > li > a {font-weight: 500;color: #563d7c;
}
.bs-docs-nav .navbar-nav > li > a:hover,
.bs-docs-nav .navbar-nav > .active > a,
.bs-docs-nav .navbar-nav > .active > a:hover {color: #463265;background-color: #f9f9f9;
}
.bs-docs-nav .navbar-toggle .icon-bar {background-color: #563d7c;
}
.bs-docs-nav .navbar-header .navbar-toggle {border-color: #fff;
}
.bs-docs-nav .navbar-header .navbar-toggle:hover,
.bs-docs-nav .navbar-header .navbar-toggle:focus {background-color: #f9f9f9;border-color: #f9f9f9;
}/** Homepage** Tweaks to the custom homepage and the masthead (main jumbotron).*//* Share masthead with page headers */
.bs-docs-masthead,
.bs-docs-header {position: relative;padding: 30px 0;color: #cdbfe3;text-align: center;text-shadow: 0 1px 0 rgba(0,0,0,.1);background-color: #6f5499;background-image: -webkit-gradient(linear, left top, left bottom, from(#563d7c), to(#6f5499));background-image: -webkit-linear-gradient(top, #563d7c 0%, #6f5499 100%);background-image:      -o-linear-gradient(top, #563d7c 0%, #6f5499 100%);background-image:         linear-gradient(to bottom, #563d7c 0%, #6f5499 100%);filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#563d7c', endColorstr='#6F5499', GradientType=0);background-repeat: repeat-x;
}/* Masthead (headings and download button) */
.bs-docs-masthead .bs-docs-booticon {margin: 0 auto 30px;
}
.bs-docs-masthead h1 {font-weight: 300;line-height: 1;color: #fff;
}
.bs-docs-masthead .lead {margin: 0 auto 30px;font-size: 20px;color: #fff;
}
.bs-docs-masthead .version {margin-top: -15px;margin-bottom: 30px;color: #9783b9;
}
.bs-docs-masthead .btn {width: 100%;padding: 15px 30px;font-size: 20px;
}@media (min-width: 480px) {.bs-docs-masthead .btn {width: auto;}
}@media (min-width: 768px) {.bs-docs-masthead {padding: 80px 0;}.bs-docs-masthead h1 {font-size: 60px;}.bs-docs-masthead .lead {font-size: 24px;}
}
</style><!-- Analytics
================================================== -->
</head><body class="bs-docs-home"><!-- Docs master nav --><header class="navbar navbar-static-top bs-docs-nav" id="top"><div class="container"><div class="navbar-header"><a href="/" class="navbar-brand">明日學(xué)院</a></div><nav id="bs-navbar" class="collapse navbar-collapse"><ul class="nav navbar-nav"><li><a href="/course.html" >課程</a></li><li><a href="http://www.mingrisoft.com/book.html">讀書</a></li><li><a href="http://www.mingrisoft.com/bbs.html">社區(qū)</a></li><li><a href="http://www.mingrisoft.com/servicecenter.html">服務(wù)</a></li><li><a href="/contact.html">聯(lián)系我們</a></li></ul></nav></div>
</header><!-- Page content of course! --><main class="bs-docs-masthead" id="content" tabindex="-1"><div class="container"><div class="jumbotron"><h1 style="color: #573e7d">明日課程</h1><p style="color: #573e7d">海量課程,隨時(shí)隨地,想學(xué)就學(xué)。有多名專業(yè)講師精心打造精品課程,讓學(xué)習(xí)創(chuàng)造屬于你的生活</p><p><a class="btn btn-primary btn-lg" href="http://www.mingrisoft.com/selfCourse.html" role="button">開始學(xué)習(xí)</a></p></div></div>
</main>
</body>
</html>

index.html

<!DOCTYPE html>
<html lang="UTF-8">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>明日科技
</title>
<!-- Bootstrap core CSS -->
<link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" 
<!-- Documentation extras -->
<style>
body {position: relative; /* For scrollspy */
}/* Keep code small in tables on account of limited space */
.table code {font-size: 13px;font-weight: normal;
}/* Inline code within headings retain the heading's background-color */
h2 code,
h3 code,
h4 code {background-color: inherit;
}/* Outline button for use within the docs */
.btn-outline {color: #563d7c;background-color: transparent;border-color: #563d7c;
}
.btn-outline:hover,
.btn-outline:focus,
.btn-outline:active {color: #fff;background-color: #563d7c;border-color: #563d7c;
}/* Inverted outline button (white on dark) */
.btn-outline-inverse {color: #fff;background-color: transparent;border-color: #cdbfe3;
}
.btn-outline-inverse:hover,
.btn-outline-inverse:focus,
.btn-outline-inverse:active {color: #563d7c;text-shadow: none;background-color: #fff;border-color: #fff;
}/* Bootstrap "B" icon */
.bs-docs-booticon {display: block;font-weight: 500;color: #fff;text-align: center;cursor: default;background-color: #563d7c;border-radius: 15%;
}
.bs-docs-booticon-sm {width: 30px;height: 30px;font-size: 20px;line-height: 28px;
}
.bs-docs-booticon-lg {width: 144px;height: 144px;font-size: 90px;line-height: 140px;
}
.bs-docs-booticon-inverse {color: #563d7c;background-color: #fff;
}
.bs-docs-booticon-outline {background-color: transparent;border: 1px solid #cdbfe3;
}/** Main navigation** Turn the `.navbar` at the top of the docs purple.*/.bs-docs-nav {margin-bottom: 0;background-color: #fff;border-bottom: 0;
}
.bs-home-nav .bs-nav-b {display: none;
}
.bs-docs-nav .navbar-brand,
.bs-docs-nav .navbar-nav > li > a {font-weight: 500;color: #563d7c;
}
.bs-docs-nav .navbar-nav > li > a:hover,
.bs-docs-nav .navbar-nav > .active > a,
.bs-docs-nav .navbar-nav > .active > a:hover {color: #463265;background-color: #f9f9f9;
}
.bs-docs-nav .navbar-toggle .icon-bar {background-color: #563d7c;
}
.bs-docs-nav .navbar-header .navbar-toggle {border-color: #fff;
}
.bs-docs-nav .navbar-header .navbar-toggle:hover,
.bs-docs-nav .navbar-header .navbar-toggle:focus {background-color: #f9f9f9;border-color: #f9f9f9;
}/** Homepage** Tweaks to the custom homepage and the masthead (main jumbotron).*//* Share masthead with page headers */
.bs-docs-masthead,
.bs-docs-header {position: relative;padding: 30px 0;color: #cdbfe3;text-align: center;text-shadow: 0 1px 0 rgba(0,0,0,.1);background-color: #6f5499;background-image: -webkit-gradient(linear, left top, left bottom, from(#563d7c), to(#6f5499));background-image: -webkit-linear-gradient(top, #563d7c 0%, #6f5499 100%);background-image:      -o-linear-gradient(top, #563d7c 0%, #6f5499 100%);background-image:         linear-gradient(to bottom, #563d7c 0%, #6f5499 100%);filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#563d7c', endColorstr='#6F5499', GradientType=0);background-repeat: repeat-x;
}/* Masthead (headings and download button) */
.bs-docs-masthead .bs-docs-booticon {margin: 0 auto 30px;
}
.bs-docs-masthead h1 {font-weight: 300;line-height: 1;color: #fff;
}
.bs-docs-masthead .lead {margin: 0 auto 30px;font-size: 20px;color: #fff;
}
.bs-docs-masthead .version {margin-top: -15px;margin-bottom: 30px;color: #9783b9;
}
.bs-docs-masthead .btn {width: 100%;padding: 15px 30px;font-size: 20px;
}@media (min-width: 480px) {.bs-docs-masthead .btn {width: auto;}
}@media (min-width: 768px) {.bs-docs-masthead {padding: 80px 0;}.bs-docs-masthead h1 {font-size: 60px;}.bs-docs-masthead .lead {font-size: 24px;}
}
</style><!-- Analytics
================================================== -->
</head><body class="bs-docs-home"><!-- Docs master nav --><header class="navbar navbar-static-top bs-docs-nav" id="top"><div class="container"><div class="navbar-header"><a href="/" class="navbar-brand">明日學(xué)院</a></div><nav id="bs-navbar" class="collapse navbar-collapse"><ul class="nav navbar-nav"><li><a href="/course.html" >課程</a></li><li><a href="http://www.mingrisoft.com/book.html">讀書</a></li><li><a href="http://www.mingrisoft.com/bbs.html">社區(qū)</a></li><li><a href="http://www.mingrisoft.com/servicecenter.html">服務(wù)</a></li><li><a href="/contact.html">聯(lián)系我們</a></li></ul></nav></div>
</header><!-- Page content of course! --><main class="bs-docs-masthead" id="content" tabindex="-1"><div class="container"><span class="bs-docs-booticon bs-docs-booticon-lg bs-docs-booticon-outline">MR</span><p class="lead">明日學(xué)院,是吉林省明日科技有限公司傾力打造的在線實(shí)用技能學(xué)習(xí)平臺(tái),該平臺(tái)于2016年正式上線,主要為學(xué)習(xí)者提供海量、優(yōu)質(zhì)的課程,課程結(jié)構(gòu)嚴(yán)謹(jǐn),用戶可以根據(jù)自身的學(xué)習(xí)程度,自主安排學(xué)習(xí)進(jìn)度。我們的宗旨是,為編程學(xué)習(xí)者提供一站式服務(wù),培養(yǎng)用戶的編程思維。</p><p class="lead"><a href="/contact.html" class="btn btn-outline-inverse btn-lg">聯(lián)系我們</a></p></div>
</main>
</body>
</html>

python代碼:

# 從wsgiref模塊導(dǎo)入:
from wsgiref.simple_server import make_server
# 導(dǎo)入我們自己編寫的application函數(shù):
def app(environ, start_response):start_response('200 OK', [('Content-Type', 'text/html')])     # 響應(yīng)信息#environ['PATH_INFO']:通過環(huán)境變量加一個(gè)鍵值就能獲取到請(qǐng)求URL后綴的文件名file_name = environ['PATH_INFO'][1:] or 'index.html'        # 獲取url參數(shù)HTML_ROOT_DIR = './Views/'  # 設(shè)置HTML文件目錄try:file = open(HTML_ROOT_DIR + file_name, "rb")  # 以二進(jìn)制方式打開文件except IOError:response = "The file is not found!"     # 如果異常,返回404else:file_data = file.read() # 讀取文件內(nèi)容file.close()            # 關(guān)閉文件response = file_data.decode("utf-8") # 構(gòu)造響應(yīng)數(shù)據(jù)return [response.encode('utf-8')] # 返回?cái)?shù)據(jù)# 創(chuàng)建一個(gè)服務(wù)器,IP地址為空,端口是8000,處理函數(shù)是application:
httpd = make_server('', 8000, app)
print('Serving HTTP on port 8000...')
# 開始監(jiān)聽HTTP請(qǐng)求:
httpd.serve_forever()

驗(yàn)證:運(yùn)行python代碼,然后瀏覽器訪問

web框架

web框架:是實(shí)現(xiàn)一些基礎(chǔ)功能的一堆代碼,可以理解為一個(gè)通用的半成品。通過使用web框架開發(fā)人員可以把更多的精力精力集中在實(shí)現(xiàn)具體業(yè)務(wù)上。web框架可以使用任何語言來編寫。這些框架通常能提供一些常用的功能。只要遵循WSGI規(guī)范也能編寫我們自己的web框架,因?yàn)閃SGI接口就是服務(wù)器與框架之間簡單而通用的接口

web框架的常用功能:

? ? ? ? 管理路由

? ? ? ? 訪問數(shù)據(jù)庫

? ? ? ? 管理會(huì)話和Cookies

? ? ? ? 創(chuàng)建模板來顯示Html

? ? ? ? 促進(jìn)代碼的重用

常用的python web框架

? ? ? ? Flask框架:輕量級(jí)的web框架,他是基于Werkzeug實(shí)現(xiàn)的WSGI和Jinja2模板引擎。它的設(shè)計(jì)哲學(xué)是只保留核心,其他的通過擴(kuò)展機(jī)制來增強(qiáng)它的功能

? ? ? ? django框架:它提供了非常齊備的官方文檔和一站式解決方案,包括緩存、orm管理后臺(tái)、驗(yàn)證、表單處理等等。由于具備了這些功能使開發(fā)復(fù)雜的數(shù)據(jù)庫驅(qū)動(dòng)的網(wǎng)站變得更加簡單。但是會(huì)導(dǎo)致系統(tǒng)耦合度過高,如果我們要替換掉django內(nèi)部的一些功能就會(huì)非常麻煩

? ? ? ? Bottle框架:輕量級(jí)的web框架。它只有一個(gè)文件,代碼只使用了python的標(biāo)準(zhǔn)庫卻自帶了路由映射、模板、簡單的數(shù)據(jù)訪問等web框架組件,而不需要依賴額外第三方庫,所以它才是真正的微框架。它的語法簡單部署也非常方便

? ? ? ? Tornado框架:是一個(gè)非阻塞的web服務(wù)器所以速度非常快,每秒中可以處理數(shù)以千計(jì)的鏈接,這就意味著對(duì)于常輪詢、web套接字等服務(wù)來說Tornado是一個(gè)理想的web框架

http://m.aloenet.com.cn/news/916.html

相關(guān)文章:

  • 岳陽網(wǎng)站開發(fā)商城網(wǎng)絡(luò)推廣項(xiàng)目計(jì)劃書
  • 校園網(wǎng)站建設(shè)模板上海網(wǎng)站排名seo公司哪家好
  • 做網(wǎng)站賭博代理違法嗎品牌推廣是做什么的
  • 做營銷網(wǎng)站制作seo綜合查詢是什么意思
  • 企業(yè)網(wǎng)站怎么做畢業(yè)設(shè)計(jì)網(wǎng)站怎么營銷推廣
  • b2b平臺(tái)有哪些類別網(wǎng)絡(luò)營銷優(yōu)化
  • 做免費(fèi)網(wǎng)站教程國vs百度seo排名優(yōu)化軟件化
  • 萊蕪二手房網(wǎng)湖南seo優(yōu)化報(bào)價(jià)
  • wordpress顯示輪播圖深圳市seo上詞多少錢
  • 網(wǎng)絡(luò)投注網(wǎng)站是怎么建設(shè)簡述網(wǎng)絡(luò)營銷的概念
  • 可以免費(fèi)開店的平臺(tái)windows11優(yōu)化大師
  • 網(wǎng)站動(dòng)態(tài)小圖標(biāo)青島網(wǎng)絡(luò)seo公司
  • 日本中古手表網(wǎng)站申請(qǐng)網(wǎng)站怎么申請(qǐng)
  • 襄陽做網(wǎng)站哪家好b2b平臺(tái)有哪些
  • 電子商務(wù)網(wǎng)站開發(fā)的基本流程軟文營銷的特點(diǎn)有哪些
  • 深圳 建設(shè)銀行國際互聯(lián)網(wǎng)站網(wǎng)絡(luò)推廣公司排名
  • 這幾年做網(wǎng)站怎么樣百度搜索風(fēng)云榜排行榜
  • 東莞網(wǎng)站設(shè)計(jì)報(bào)價(jià)天津百度網(wǎng)站排名優(yōu)化
  • 有哪些網(wǎng)站可以做淘寶客搜索seo怎么優(yōu)化
  • 搭建服務(wù)器做網(wǎng)站公司如何在百度宣傳
  • 9uu域名更新自動(dòng)轉(zhuǎn)跳seo怎么優(yōu)化步驟
  • 湖南省住房和城鄉(xiāng)建設(shè)網(wǎng)站網(wǎng)絡(luò)seo推廣培訓(xùn)
  • 網(wǎng)頁版的游戲百度推廣優(yōu)化師
  • wordpress聯(lián)系表單插件seo整體優(yōu)化步驟怎么寫
  • 鄭州專業(yè)做淘寶網(wǎng)站推廣蘇州疫情最新消息
  • 做招聘網(wǎng)站的客戶想退錢網(wǎng)站seo快速排名優(yōu)化
  • 做京東網(wǎng)站需要哪些手續(xù)參考網(wǎng)是合法網(wǎng)站嗎?
  • 免費(fèi)發(fā)布推廣信息軟件搜索引擎優(yōu)化工作
  • dedecms網(wǎng)站太原seo快速排名怎么樣
  • 公司做網(wǎng)站價(jià)格足球比賽今日最新推薦