整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          JeeWeb敏捷開發(fā)平臺(tái)

          JeeWeb敏捷開發(fā)平臺(tái)

          JeeWeb是一款基于SpringBoot 2+Spring+Mybatis+Hibernate的敏捷開發(fā)系統(tǒng);它是一款具有代碼生成功能的智能快速開發(fā)平臺(tái);是以Spring Framework為核心容器,Spring MVC為模型視圖控制器,Hibernate為數(shù)據(jù)訪問(wèn)層, Apache Shiro為權(quán)限授權(quán)層,Ehcahe對(duì)常用數(shù)據(jù)進(jìn)行緩存,Disruptor作為并發(fā)框架,Bootstrap作為前端框架的優(yōu)秀 開源 系統(tǒng)。

          JeeWeb是一款 全開源開發(fā)平臺(tái) ,特別 代碼生成器模塊也采用開源模式 ,各位開發(fā)者可以根據(jù)自己的需要改造出更加適合自己的代碼生成器,不管是做項(xiàng)目、學(xué)習(xí)、接私活它都將是你的最佳拍檔;

          JeeWeb主要定位于企業(yè)快速開發(fā)平臺(tái)建設(shè),已內(nèi)置很多優(yōu)秀的基礎(chǔ)功能和高效的 代碼生成 工具,包括:系統(tǒng)權(quán)限組件、數(shù)據(jù)權(quán)限組件、數(shù)據(jù)字典組件、核心工具組件、視圖操作組件、代碼生成、 UI模版標(biāo)簽 庫(kù)等。前端界面風(fēng)格采用了結(jié)構(gòu)簡(jiǎn)單、性能優(yōu)良、頁(yè)面美觀大氣的Twitter Bootstrap頁(yè)面展示框架。采用分層設(shè)計(jì)、提交數(shù)據(jù)安全編碼、密碼加密、訪問(wèn)驗(yàn)證、數(shù)據(jù)權(quán)限驗(yàn)證。使用Maven做項(xiàng)目管理,提高項(xiàng)目的易開發(fā)性、擴(kuò)展性。

          目前功能模塊代碼生成器、權(quán)限框架、數(shù)據(jù)字典、數(shù)據(jù)緩存、并發(fā)框架、數(shù)據(jù)監(jiān)控、計(jì)劃任務(wù)、多數(shù)據(jù)源管理、附件管理、類似mybatis動(dòng)態(tài)SQL、UI模板標(biāo)簽、短信發(fā)送、郵件發(fā)送、統(tǒng)計(jì)功能等功能。

          JeeWeb的開發(fā)方式采用( 代碼生成器快速設(shè)計(jì)生成代碼->手工完善邏輯->豐富模板標(biāo)簽快速前端開發(fā) ),可以快速協(xié)助java開發(fā)人員解決60%的重復(fù)工作,讓開發(fā)人員更多關(guān)注業(yè)務(wù)邏輯的實(shí)現(xiàn),框架使用前端模板標(biāo)簽,解放JAVA開發(fā)人員的開發(fā)壓力,提高開發(fā)效率,為企業(yè)節(jié)省項(xiàng)目研發(fā)成本,減少開發(fā)周期。

          后臺(tái)框架演示(支持兩種前端樣式自由切換)

          論壇演示

          前后端分離演示

          JeeWeb 技術(shù)特點(diǎn)

          JeeWeb使用目前流程的WEB開發(fā)架構(gòu)技術(shù),如 SpringBoot,Mybatis, Hibernate,Apache Shiro, Disruptor , ehcache, Jquery ,BootStrap等等,支持多種數(shù)據(jù)庫(kù)MySQL, Oracle, sqlserver等。 分層設(shè)計(jì):使用分層設(shè)計(jì),分為dao,service,Controller,view層,層次清楚,低耦合,高內(nèi)聚。

          安全考慮:嚴(yán)格遵循了web安全的規(guī)范,前后臺(tái)雙重驗(yàn)證,參數(shù)編碼傳輸,密碼md5加密存儲(chǔ),shiro權(quán)限驗(yàn)證,從根本上避免了SQL注入,XSS攻擊,CSRF攻擊等常見的web攻擊手段。

          JeeWeb 功能特點(diǎn)

          • SpringBoot+Spring+Mybatis+Hibernate+Shiro+ Ehcache+Disruptor+Jquery + Boostrap + Ztree等基礎(chǔ)前后端架構(gòu)架構(gòu)
          • 采用面向聲明的開發(fā)模式, 基于泛型編寫極少代碼即可實(shí)現(xiàn)復(fù)雜的數(shù)據(jù)展示、數(shù)據(jù)編輯、表單處理等功能,在不使用代碼生成器的情況下,也只需要很少的代碼就能實(shí)現(xiàn)基礎(chǔ)的CURD操作,再配合在線開發(fā)與代碼生成器的使用,更加加快了開發(fā)的進(jìn)度,將J2EE的開發(fā)效率成本提高,可以將代碼減少60%以上。
          • 在線開發(fā)(通過(guò)在線配置實(shí)現(xiàn)一個(gè)表模型的增刪改查功能,無(wú)需一行代碼,支持用戶自定義表單布局)
          • 代碼生成器,支持多種數(shù)據(jù)模型,根據(jù)表生成對(duì)應(yīng)的Entity,Service,Dao,Controller,JSP等,增刪改查功能生成直接使用
          • UI標(biāo)簽開發(fā)庫(kù),針對(duì)前端UI進(jìn)行標(biāo)準(zhǔn)封裝表,頁(yè)面統(tǒng)一采用UI標(biāo)簽實(shí)現(xiàn)功能:數(shù)據(jù)datagrid,treegrid,FileInput,Editor,GridSelect等,實(shí)現(xiàn)JSP頁(yè)面零JS,開發(fā)維護(hù)簡(jiǎn)潔高效
          • 查詢過(guò)濾器:只需前端配置,后臺(tái)動(dòng)態(tài)拼SQL追加查詢條件;支持多種匹配方式(全匹配/模糊查詢/包含查詢/不匹配查詢)
          • 移動(dòng)平臺(tái)支持,對(duì)Bootstrap(兼容Html5)進(jìn)行標(biāo)準(zhǔn)封裝
          • 靈活的權(quán)限控制,可控制到頁(yè)面或按鈕,滿足絕大部分的權(quán)限需求,優(yōu)化權(quán)限注解方便權(quán)限配置
          • 完善的XSS防范及腳本過(guò)濾,徹底杜絕XSS攻擊
          • 支持分布式部署,session存儲(chǔ)在redis中
          • 友好的代碼結(jié)構(gòu)及注釋,便于閱讀及二次開發(fā)
          • 引入quartz定時(shí)任務(wù),可動(dòng)態(tài)完成任務(wù)的添加、修改、刪除、暫停、恢復(fù)及日志查看等功能
          • 引入swagger文檔支持,方便編寫API接口文檔
          • 國(guó)際化(支持多語(yǔ)言,國(guó)際化的封裝為多語(yǔ)言做了便捷支持)
          • 多數(shù)據(jù)源(在線配置數(shù)據(jù)源,數(shù)據(jù)源工作類封裝)
          • 數(shù)據(jù)權(quán)限:整合Shiro權(quán)限
          • 計(jì)劃任務(wù)控制(在線配置計(jì)劃任務(wù)、方便計(jì)劃任務(wù)的時(shí)間調(diào)整規(guī)劃)
          • 郵件發(fā)送(配置郵件模版、郵件帳號(hào)的在線配置、郵件異步發(fā)送、郵件發(fā)送日志功能統(tǒng)計(jì))
          • 短信發(fā)送(配置短信模版、短信帳號(hào)的在線配置、短信異步發(fā)送、短信發(fā)送日志功能統(tǒng)計(jì)、支持短信發(fā)送平臺(tái)動(dòng)態(tài)切換)
          • 多種首頁(yè)風(fēng)格切換,支持自定義首頁(yè)風(fēng)格。(Inspinia風(fēng)格|ACE風(fēng)格)
          • 數(shù)據(jù)統(tǒng)計(jì)報(bào)表:豐富的報(bào)表統(tǒng)計(jì)功能
          • 支持多種瀏覽器: Google, 火狐, IE,360 等
          • 支持?jǐn)?shù)據(jù)庫(kù): Mysql,Oracle10g,SqlServer等
          • 基礎(chǔ)權(quán)限: 用戶,角色,菜單權(quán)限
          • Web容器測(cè)試通過(guò)的有Jetty和Tomcat,Weblogic
          • 要求JDK1.8+

          技術(shù)選型

          1、后端

          • 核心框架:Spring boot2.0、Spring Framework
          • 安全框架:Apache Shiro
          • 服務(wù)端驗(yàn)證:Hibernate Validator
          • 模板標(biāo)簽:Beetl
          • 任務(wù)調(diào)度:Quartz
          • 持久層框架:Hibernate
          • 數(shù)據(jù)庫(kù)連接池:Alibaba Druid
          • 緩存框架:Redis、Ehcache
          • 并發(fā)框架:Disruptor
          • 日志管理:SLF4J、Log4j
          • 工具類:Apache Commons、Jackson、Xstream、

          2、前端

          • JS框架:jQuery。
          • CSS框架:Twitter Bootstrap
          • 客戶端驗(yàn)證:Validform。
          • 富文本在線編輯:markdown、simditor、Summernote、CodeMirror自由切換
          • 文件上傳工具:Bootstrap fileinput
          • 數(shù)據(jù)表格:jqGrid
          • 對(duì)話框:layer
          • 樹結(jié)構(gòu)控件:jQuery zTree
          • 日期控件: datepicker
          • 代碼高亮: syntaxhighlighter

          簡(jiǎn)單使用說(shuō)明

          • 導(dǎo)入jeeweb目錄下的,具體模塊sql/mysql.sql文件到mysql數(shù)據(jù)庫(kù)
          • 導(dǎo)入項(xiàng)目到Idea,(項(xiàng)目目前使用分模塊開發(fā),我們建議是用IDEA開發(fā)).
          • 修改數(shù)據(jù)庫(kù)配置文件application.yml中的賬號(hào)密碼.
          • 啟動(dòng)項(xiàng)目,管理員賬號(hào)admin/密碼123456

          平臺(tái)目錄結(jié)構(gòu)說(shuō)明

          jeeweb
          ├─jeeweb-common 公共模塊
          │ ├─jeeweb-common-base 公用基礎(chǔ)模塊
          │ │ 
          │ ├─jeeweb-common-email 郵件基礎(chǔ)模塊
          │ │ 
          │ ├─jeeweb-common-hibernatemvc hibernate公用模塊
          │ │ 
          │ ├─jeeweb-common-mybatismvc mybatis公用模塊
          │ │ 
          │ ├─jeeweb-common-oss 數(shù)據(jù)存儲(chǔ)公用模塊
          │ │ 
          │ ├─jeeweb-common-quartz quartz公用模塊
          │ │ 
          │ ├─jeeweb-common-query 查詢封裝模塊
          │ │ 
          │ ├─jeeweb-common-security 安全公用模塊
          │ │ 
          │ ├─jeeweb-common-sms 短信公用模塊
          │ │ 
          │ └─jeeweb-common-utils 公用工具模塊
          │ 
          ├─jeeweb-ui UI模塊
          │ ├─jeeweb-beetl-tag 基于beetl的類似spring form的模板標(biāo)簽
          │ │ 
          │ ├─jeeweb-ui-static 公用靜態(tài)資源模塊
          │ │ 
          │ └─jeeweb-ui-tag 基于靜態(tài)資源模塊的標(biāo)簽
          │ 
          ├─jeeweb-web 業(yè)務(wù)模塊
          │ ├─jeeweb-admin 后臺(tái)案例模塊
          │ │ 
          │ ├─jeeweb-bbs Jeeweb官方論壇代碼模塊
          │ │ 
          │ ├─jeeweb-vue 前后端分離后端模塊
          │ │ 
          │ └─jeeweb-generator 代碼生成器模塊
          │
          

          代碼示例

          [1].GRID列表

          <#grid:grid id="onlineGrid" datatype="local" datas="${onlineSessionList}" sortname="startTimestamp" sortorder="desc">
           <#grid:column label="sys.common.key" hidden="true" name="id" width="100"/>
           <#grid:column label="用戶" name="username" />
           <#grid:column label="用戶主機(jī)IP" name="host" />
           <#grid:column label="系統(tǒng)主機(jī)IP" name="systemHost" />
           <#grid:column label="登錄時(shí)間" name="startTimestamp" width="140" queryMode="date" condition="between" />
           <#grid:column label="最后訪問(wèn)時(shí)間" name="lastAccessTime" width="140"/>
           <#grid:column label="狀態(tài)" name="status" dict="onlinestatus" />
           <#grid:column label="User-Agent" name="userAgent" />
           <#grid:column label="用戶會(huì)話ID" name="id" />
           <#grid:toolbar title="強(qiáng)制退出" btnclass="btn-danger" icon="fa-trash-o" function="toolbarSelectConfirm" url="${adminPath}/sys/online/forceLogout" tipMsg="您確定要強(qiáng)制退出這些信息么,請(qǐng)謹(jǐn)慎操作!"/>
          </#grid:grid>
          

          [2].TREEGRID列表

          <#grid:grid id="organizationGrid" async="true" treeGrid="true" expandColumn="name" url="${adminPath}/sys/organization/ajaxTreeList">
          	<#grid:column label="sys.common.key" hidden="true" name="id" width="100"/>
          	<#grid:column label="sys.organization.name" name="name" query="true" condition="like" />
          	<#grid:column label="sys.organization.remarks" name="remarks" />
          	<#grid:column label="sys.common.opt" name="opt" formatter="button" width="100"/>
          	<#grid:button groupname="opt" function="delete" />
          	<#grid:toolbar function="add"/>
          	<#grid:toolbar function="update"/>
          	<#grid:toolbar function="delete"/>
          	<#grid:toolbar function="search"/>
          	<#grid:toolbar function="reset"/>
          </#grid:grid>
          

          [3].表單代碼

          <% layout('/layouts/form.html', {title: @MessageUtils.getMessage('sys.user.updateuser',''), formId: 'userForm', bodyClass: 'white-bg', libs: 'bootstrap-fileinput'}){ %>
          <#form:form id="userForm" modelAttribute="data" method="post" class="form-horizontal">
           <#form:hidden path="id" />
           <table class="table table-bordered table-condensed dataTables-example dataTable no-footer">
           <tbody>
           <tr>
           <td class="width-15 active text-right">
           <label>用戶名:</label></td>
           <td class="width-35">${data.username}</td>
           <td class="width-15 active text-right">
           <label>
           <font color="red">*</font>姓名:</label></td>
           <td class="width-35">
           <#form:input path="realname" class="form-control " datatype="*" nullmsg="請(qǐng)輸入姓名!" htmlEscape="false" />
           <label class="Validform_checktip"></label>
           </td>
           </tr>
           <tr>
           <td class="width-15 active text-right">
           <label>
           <font color="red">*</font>郵箱:</label></td>
           <td class="width-35">
           <#form:input path="email" class="form-control" datatype="e" nullmsg="請(qǐng)輸入姓名!" htmlEscape="false" />
           <label class="Validform_checktip"></label>
           </td>
           <td class="width-15 active text-right">
           <label>
           <font color="red">*</font>聯(lián)系電話:</label></td>
           <td class="width-35">
           <#form:input path="phone" class="form-control" htmlEscape="false" datatype="m" nullmsg="請(qǐng)輸入用戶名!" />
           <label class="Validform_checktip"></label>
           </td>
           </tr>
           <tr>
           <td class="active">
           <label class="pull-right">
           <font color="red">*</font>用戶角色:</label></td>
           <td colspan="3">
           <#form:checkboxes path="roleIdList" nested="false" items="${allRoles}" defaultValue="${roleIdList}" itemLabel="name" itemValue="id" htmlEscape="false" cssClass="i-checks required" /></td>
           </tr>
           <tr>
           <td class="width-15 active">
           <label class="pull-right">組織機(jī)構(gòu):</label></td>
           <td colspan="3">
           <#form:treeselect title="請(qǐng)選擇組織機(jī)構(gòu)" path="organizationIds" nested="false" dataUrl="${adminPath}/sys/organization/treeData" chkboxType="" labelName="parentname" labelValue="${organizationNames}" multiselect="true" /></td>
           </tr>
           </tbody>
           </table>
          </#form:form>
          <% } %>
          

          git地址:https://gitee.com/dataact/jeeweb

          TTP 協(xié)議

          學(xué)習(xí)目標(biāo)

          • 能夠知道 HTTP 協(xié)議的作用

          1. HTTP 協(xié)議的介紹

          HTTP 協(xié)議的全稱是(HyperText Transfer Protocol),翻譯過(guò)來(lái)就是超文本傳輸協(xié)議

          超文本是超級(jí)文本的縮寫,是指超越文本限制或者超鏈接,比如:圖片、音樂(lè)、視頻、超鏈接等等都屬于超文本。

          HTTP 協(xié)議的制作者是蒂姆·伯納斯-李,1991年設(shè)計(jì)出來(lái)的,HTTP 協(xié)議設(shè)計(jì)之前目的是傳輸網(wǎng)頁(yè)數(shù)據(jù)的,現(xiàn)在允許傳輸任意類型的數(shù)據(jù)

          傳輸 HTTP 協(xié)議格式的數(shù)據(jù)是基于 TCP 傳輸協(xié)議的,發(fā)送數(shù)據(jù)之前需要先建立連接。

          2. HTTP 協(xié)議的作用

          規(guī)定了瀏覽器和 Web 服務(wù)器通信數(shù)據(jù)的格式,也就是說(shuō)瀏覽器和web服務(wù)器通信需要使用http協(xié)議

          3. 瀏覽器訪問(wèn)web服務(wù)器的通信過(guò)程

          通信效果圖:

          4. 小結(jié)

          • HTTP協(xié)議是一個(gè)超文本傳輸協(xié)議
          • HTTP協(xié)議是一個(gè)基于TCP傳輸協(xié)議傳輸數(shù)據(jù)的
          • HTTP協(xié)議規(guī)定了瀏覽器和 Web 服務(wù)器通信數(shù)據(jù)的格式

          URL

          學(xué)習(xí)目標(biāo)

          • 能夠知道URL的組成部分

          1. URL的概念

          URL的英文全拼是(Uniform Resoure Locator),表達(dá)的意思是統(tǒng)一資源定位符,通俗理解就是網(wǎng)絡(luò)資源地址,也就是我們常說(shuō)的網(wǎng)址。

          2. URL的組成

          URL的樣子:

          https://news.163.com/18/1122/10/E178J2O4000189FH.html

          URL的組成部分:

          1. 協(xié)議部分: https://、http://、ftp://
          2. 域名部分: news.163.com
          3. 資源路徑部分: /18/1122/10/E178J2O4000189FH.html

          域名:

          域名就是IP地址的別名,它是用點(diǎn)進(jìn)行分割使用英文字母和數(shù)字組成的名字,使用域名目的就是方便的記住某臺(tái)主機(jī)IP地址

          URL的擴(kuò)展:

          https://news.163.com/hello.html?page=1&count=10

          • 查詢參數(shù)部分: ?page=1&count=10

          參數(shù)說(shuō)明:

          • ? 后面的 page 表示第一個(gè)參數(shù),后面的參數(shù)都使用 & 進(jìn)行連接

          3. 小結(jié)

          • URL就是網(wǎng)絡(luò)資源的地址,簡(jiǎn)稱網(wǎng)址,通過(guò)URL能夠找到網(wǎng)絡(luò)中對(duì)應(yīng)的資源數(shù)據(jù)。
          • URL組成部分
          • 協(xié)議部分
          • 域名部分
          • 資源路徑部分
          • 查詢參數(shù)部分 [可選]

          查看HTTP協(xié)議的通信過(guò)程

          學(xué)習(xí)目標(biāo)

          • 能夠使用谷歌瀏覽器的開發(fā)者工具查看HTTP協(xié)議的通信過(guò)程

          1. 谷歌瀏覽器開發(fā)者工具的使用

          首先需要安裝Google Chrome瀏覽器,然后Windows和Linux平臺(tái)按F12調(diào)出開發(fā)者工具, mac OS選擇 視圖 -> 開發(fā)者 -> 開發(fā)者工具或者直接使用 alt+command+i 這個(gè)快捷鍵,還有一個(gè)多平臺(tái)通用的操作就是在網(wǎng)頁(yè)右擊選擇檢查

          開發(fā)者工具的效果圖:

          開發(fā)者工具的標(biāo)簽選項(xiàng)說(shuō)明:

          • 元素(Elements):用于查看或修改HTML標(biāo)簽
          • 控制臺(tái)(Console):執(zhí)行js代碼
          • 源代碼(Sources):查看靜態(tài)資源文件,斷點(diǎn)調(diào)試JS代碼
          • 網(wǎng)絡(luò)(Network):查看http協(xié)議的通信過(guò)程

          開發(fā)者工具使用效果圖:

          開發(fā)者工具的使用說(shuō)明:

          1. 點(diǎn)擊Network標(biāo)簽選項(xiàng)
          2. 在瀏覽器的地址欄輸入百度的網(wǎng)址,就能看到請(qǐng)求百度首頁(yè)的http的通信過(guò)程
          3. 這里的每項(xiàng)記錄都是請(qǐng)求+響應(yīng)的一次過(guò)程

          2. 查看HTTP協(xié)議的通信過(guò)程

          查看http請(qǐng)求信息效果圖:


          查看http響應(yīng)信息效果圖:


          3. 小結(jié)

          • 谷歌瀏覽器的開發(fā)者工具是查看http協(xié)議的通信過(guò)程利器,通過(guò)Network標(biāo)簽選項(xiàng)可以查看每一次的請(qǐng)求和響應(yīng)的通信過(guò)程,調(diào)出開發(fā)者工具的通用方法是在網(wǎng)頁(yè)右擊選擇檢查。
          • 開發(fā)者工具的Headers選項(xiàng)總共有三部分組成:
          • General: 主要信息
          • Response Headers: 響應(yīng)頭
          • Request Headers: 請(qǐng)求頭
          • Response選項(xiàng)是查看響應(yīng)體信息的

          HTTP 請(qǐng)求報(bào)文

          學(xué)習(xí)目標(biāo)

          • 能夠知道HTTP請(qǐng)求報(bào)文的結(jié)構(gòu)

          1. HTTP 請(qǐng)求報(bào)文介紹

          HTTP最常見的請(qǐng)求報(bào)文有兩種:

          1. GET 方式的請(qǐng)求報(bào)文
          2. POST 方式的請(qǐng)求報(bào)文

          說(shuō)明:

          • GET: 獲取web服務(wù)器數(shù)據(jù)
          • POST: 向web服務(wù)器提交數(shù)據(jù)

          2. HTTP GET 請(qǐng)求報(bào)文分析

          HTTP GET 請(qǐng)求報(bào)文效果圖:

          GET 請(qǐng)求報(bào)文說(shuō)明:

          ---- 請(qǐng)求行 ----
          GET / HTTP/1.1  # GET請(qǐng)求方式 請(qǐng)求資源路徑 HTTP協(xié)議版本
          ---- 請(qǐng)求頭 -----
          Host: www.itcast.cn  # 服務(wù)器的主機(jī)地址和端口號(hào),默認(rèn)是80
          Connection: keep-alive # 和服務(wù)端保持長(zhǎng)連接
          Upgrade-Insecure-Requests: 1 # 讓瀏覽器升級(jí)不安全請(qǐng)求,使用https請(qǐng)求
          User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36  # 用戶代理,也就是客戶端的名稱
          Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 # 可接受的數(shù)據(jù)類型
          Accept-Encoding: gzip, deflate # 可接受的壓縮格式
          Accept-Language: zh-CN,zh;q=0.9 #可接受的語(yǔ)言
          Cookie: pgv_pvi=1246921728; # 登錄用戶的身份標(biāo)識(shí)
          
          ---- 空行 ----
          

          GET 請(qǐng)求原始報(bào)文說(shuō)明:

          GET / HTTP/1.1\r\n
          Host: www.itcast.cn\r\n  
          Connection: keep-alive\r\n
          Upgrade-Insecure-Requests: 1\r\n
          User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36\r\n
          Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\n
          Accept-Encoding: gzip, deflate\r\n
          Accept-Language: zh-CN,zh;q=0.9\r\n
          Cookie: pgv_pvi=1246921728; \r\n
          \r\n  (請(qǐng)求頭信息后面還有一個(gè)單獨(dú)的’\r\n’不能省略)
          

          說(shuō)明:

          • 每項(xiàng)數(shù)據(jù)之間使用:\r\n

          3. HTTP POST 請(qǐng)求報(bào)文分析

          HTTP POST 請(qǐng)求報(bào)文效果圖:

          請(qǐng)求體效果圖:

          POST 請(qǐng)求報(bào)文說(shuō)明:

          ---- 請(qǐng)求行 ----
          POST /xmweb?host=mail.itcast.cn&_t=1542884567319 HTTP/1.1 # POST請(qǐng)求方式 請(qǐng)求資源路徑 HTTP協(xié)議版本
          ---- 請(qǐng)求頭 ----
          Host: mail.itcast.cn # 服務(wù)器的主機(jī)地址和端口號(hào),默認(rèn)是80
          Connection: keep-alive # 和服務(wù)端保持長(zhǎng)連接
          Content-Type: application/x-www-form-urlencoded  # 告訴服務(wù)端請(qǐng)求的數(shù)據(jù)類型
          User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36 # 客戶端的名稱
          ---- 空行 ----
          ---- 請(qǐng)求體 ----
          username=hello&pass=hello # 請(qǐng)求參數(shù)
          

          POST 請(qǐng)求原始報(bào)文說(shuō)明:

          POST /xmweb?host=mail.itcast.cn&_t=1542884567319 HTTP/1.1\r\n
          Host: mail.itcast.cn\r\n
          Connection: keep-alive\r\n
          Content-Type: application/x-www-form-urlencoded\r\n
          User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36\r\n
          \r\n(請(qǐng)求頭信息后面還有一個(gè)單獨(dú)的’\r\n’不能省略)
          username=hello&pass=hello
          

          說(shuō)明:

          • 每項(xiàng)數(shù)據(jù)之間使用:\r\n

          4. 小結(jié)

          • 一個(gè)HTTP請(qǐng)求報(bào)文可以由請(qǐng)求行、請(qǐng)求頭、空行和請(qǐng)求體4個(gè)部分組成。
          • 請(qǐng)求行是由三部分組成:請(qǐng)求方式請(qǐng)求資源路徑HTTP協(xié)議版本
          • GET方式的請(qǐng)求報(bào)文沒(méi)有請(qǐng)求體,只有請(qǐng)求行、請(qǐng)求頭、空行組成
          • POST方式的請(qǐng)求報(bào)文可以有請(qǐng)求行、請(qǐng)求頭、空行、請(qǐng)求體四部分組成,注意:POST方式可以允許沒(méi)有請(qǐng)求體,但是這種格式很少見

          GET和POST請(qǐng)求對(duì)比效果圖:

          HTTP響應(yīng)報(bào)文

          學(xué)習(xí)目標(biāo)

          • 能夠知道HTTP響應(yīng)報(bào)文的結(jié)構(gòu)

          1. HTTP響應(yīng)報(bào)文分析

          HTTP 響應(yīng)報(bào)文效果圖:


          響應(yīng)報(bào)文說(shuō)明:

          --- 響應(yīng)行/狀態(tài)行 ---
          HTTP/1.1 200 OK # HTTP協(xié)議版本 狀態(tài)碼 狀態(tài)描述
          --- 響應(yīng)頭 ---
          Server: Tengine # 服務(wù)器名稱
          Content-Type: text/html; charset=UTF-8 # 內(nèi)容類型
          Transfer-Encoding: chunked # 發(fā)送給客戶端內(nèi)容不確定內(nèi)容長(zhǎng)度,發(fā)送結(jié)束的標(biāo)記是0\r\n, Content-Length表示服務(wù)端確定發(fā)送給客戶端的內(nèi)容大小,但是二者只能用其一。
          Connection: keep-alive # 和客戶端保持長(zhǎng)連接
          Date: Fri, 23 Nov 2018 02:01:05 GMT # 服務(wù)端的響應(yīng)時(shí)間
          --- 空行 ---
          --- 響應(yīng)體 ---
          <!DOCTYPE html><html lang=“en”> …</html> # 響應(yīng)給客戶端的數(shù)據(jù)
          

          原始響應(yīng)報(bào)文說(shuō)明:

          HTTP/1.1 200 OK\r\n
          Server: Tengine\r\n
          Content-Type: text/html; charset=UTF-8\r\n
          Transfer-Encoding: chunked\r\n
          Connection: keep-alive\r\n
          Date: Fri, 23 Nov 2018 02:01:05 GMT\r\n
          \r\n(響應(yīng)頭信息后面還有一個(gè)單獨(dú)的’\r\n’不能省略)
          <!DOCTYPE html><html lang=“en”> …</html>
          

          說(shuō)明:

          每項(xiàng)數(shù)據(jù)之間使用:\r\n

          2. HTTP 狀態(tài)碼介紹

          HTTP 狀態(tài)碼是用于表示web服務(wù)器響應(yīng)狀態(tài)的3位數(shù)字代碼

          狀態(tài)碼

          說(shuō)明

          200

          請(qǐng)求成功

          307

          重定向

          400

          錯(cuò)誤的請(qǐng)求,請(qǐng)求地址或者參數(shù)有誤

          404

          請(qǐng)求資源在服務(wù)器不存在

          500

          服務(wù)器內(nèi)部源代碼出現(xiàn)錯(cuò)誤

          3. 小結(jié)

          • 一個(gè)HTTP響應(yīng)報(bào)文是由響應(yīng)行、響應(yīng)頭、空行和響應(yīng)體4個(gè)部分組成。
          • 響應(yīng)行是由三部分組成:HTTP協(xié)議版本 狀態(tài)碼 狀態(tài)描述,最常見的狀態(tài)碼是200

          搭建Python自帶靜態(tài)Web服務(wù)器

          學(xué)習(xí)目標(biāo)

          • 能夠知道搭建Python自帶Web服務(wù)器

          1. 靜態(tài)Web服務(wù)器是什么?

          可以為發(fā)出請(qǐng)求的瀏覽器提供靜態(tài)文檔的程序

          平時(shí)我們?yōu)g覽百度新聞數(shù)據(jù)的時(shí)候,每天的新聞數(shù)據(jù)都會(huì)發(fā)生變化,那訪問(wèn)的這個(gè)頁(yè)面就是動(dòng)態(tài)的,而我們開發(fā)的是靜態(tài)的,頁(yè)面的數(shù)據(jù)不會(huì)發(fā)生變化

          2. 如何搭建Python自帶的靜態(tài)Web服務(wù)器

          搭建Python自帶的靜態(tài)Web服務(wù)器使用 python3 -m http.server 端口號(hào), 效果圖如下:

          -m選項(xiàng)說(shuō)明:

          -m表示運(yùn)行包里面的模塊,執(zhí)行這個(gè)命令的時(shí)候,需要進(jìn)入你自己指定靜態(tài)文件的目錄,然后通過(guò)瀏覽器就能訪問(wèn)對(duì)應(yīng)的 html文件了,這樣一個(gè)靜態(tài)的web服務(wù)器就搭建好了。

          3. 訪問(wèn)搭建的靜態(tài)Web服務(wù)器

          通過(guò)瀏覽器訪問(wèn)搭建的靜態(tài)Web服務(wù)器,效果圖如下:

          4. 查看瀏覽器和搭建的靜態(tài)Web服務(wù)器的通信過(guò)程

          查看http的通信過(guò)程,效果圖如下:

          5. 小結(jié)

          • 靜態(tài)Web服務(wù)器是為發(fā)出請(qǐng)求的瀏覽器提供靜態(tài)文檔的程序,
          • 搭建Python自帶的Web服務(wù)器使用python3 –m http.server 端口號(hào) 這個(gè)命令即可,端口號(hào)不指定默認(rèn)是8000

          VvvebJs是一個(gè)開源的網(wǎng)頁(yè)拖拽自動(dòng)生成的JavaScript庫(kù),你可以以簡(jiǎn)單拖拽的方式生成自己需要的網(wǎng)頁(yè)樣式,內(nèi)置jquery和Bootstrap,你可以拖拽相關(guān)的組件進(jìn)行網(wǎng)頁(yè)的構(gòu)建,非常的方便,而且可以實(shí)時(shí)修改代碼,功能豐富,使用簡(jiǎn)單,界面友好,特別適合一些專注于展示的網(wǎng)頁(yè)設(shè)計(jì),需要的朋友不可錯(cuò)過(guò)!



          Github地址

          https://github.com/givanz/VvvebJs

          相關(guān)特性

          • 1、組件和塊/片段拖放。
          • 2、撤銷/重做操作。
          • 3、一個(gè)或兩個(gè)面板界面。
          • 4、文件管理器和組件層次結(jié)構(gòu)導(dǎo)航添加新頁(yè)面。
          • 5、實(shí)時(shí)代碼編輯器。
          • 6、包含示例php腳本的圖像上傳。
          • 7、頁(yè)面下載或?qū)С鰄tml或保存頁(yè)面在服務(wù)器上包含示例PHP腳本。
          • 8、組件/塊列表搜索。
          • 9、Bootstrap 4組件等組件

          默認(rèn)情況下,編輯器附帶Bootstrap 4和Widgets組件,可以使用任何類型的組件和輸入進(jìn)行擴(kuò)展。

          使用方式

          如下代碼:

          <!-- jquery-->
          <script src="js/jquery.min.js"></script>
          <script src="js/jquery.hotkeys.js"></script>
          <!-- bootstrap-->
          <script src="js/popper.min.js"></script>
          <script src="js/bootstrap.min.js"></script>
          <!-- builder code-->
          <script src="libs/builder/builder.js"></script>	
          <!-- undo manager-->
          <script src="libs/builder/undo.js"></script>	
          <!-- inputs-->
          <script src="libs/builder/inputs.js"></script>	
          <!-- components-->
          <script src="libs/builder/components-bootstrap4.js"></script>	
          <script src="libs/builder/components-widgets.js"></script>	
          <script>
          $(document).ready(function() 
          {
          	Vvveb.Builder.init('demo/index.html', function() {
          		//load code after page is loaded here
          		Vvveb.Gui.init();
          	});
          });
          </script>
          

          要初始化編輯器,調(diào)用Vvveb.Builder.init。第一個(gè)參數(shù)是要加載以進(jìn)行編輯的URL,它必須位于相同的子域中才能進(jìn)行編輯。第二個(gè)參數(shù)是頁(yè)面加載完成時(shí)調(diào)用的函數(shù),默認(rèn)情況下調(diào)用編輯器Gui.init();


          • 結(jié)構(gòu)


          Component Group是一個(gè)組件集合,例如Bootstrap 4組由Button和Grid等組件組成,該對(duì)象僅用于在編輯器左側(cè)面板中對(duì)組件進(jìn)行分組。例如,Widgets組件組只有兩個(gè)組件視頻和地圖,并被定義為如下

          Vvveb.ComponentsGroup['Widgets']=["widgets/googlemaps", "widgets/video"];
          

          Component是一個(gè)對(duì)象,它提供可以在畫布上放置的html以及在選擇組件時(shí)可以編輯的屬性,例如Video Component,具有Url和Target屬性的html鏈接Component定義為:


          Vvveb.Components.extend("_base", "html/link", {
           nodes: ["a"],
           name: "Link",
           properties: [{
           name: "Url",
           key: "href",
           htmlAttr: "href",
           inputtype: LinkInput
           }, {
           name: "Target",
           key: "target",
           htmlAttr: "target",
           inputtype: TextInput
           }]
          });
          

          在Component屬性集合中使用Input對(duì)象來(lái)編輯屬性,例如文本輸入,選擇,顏色,網(wǎng)格行等。例如,TextInput擴(kuò)展Input對(duì)象并定義為:

          var TextInput=$.extend({}, Input, {
           events: {
           "keyup": ['onChange', 'input'],
          	 },
          	setValue: function(value) {
          		$('input', this.element).val(value);
          	},
          	
          	init: function(data) {
          		return this.render("textinput", data);
          	},
           }
          );
          

          輸入還需要一個(gè)在編輯器html(在editor.html中)定義為<script>標(biāo)簽的模板,其id為vvveb-input-inputname,例如對(duì)于文本輸入為vvveb-input-textinput,定義:


          <script id="vvveb-input-textinput" type="text/html">
          	
          	<div>
          		<input name="{%=key%}" type="text" class="form-control"/>
          	</div>
          	
          </script>
          

          以上是借助瀏覽器翻譯工具,對(duì)官網(wǎng)的文檔進(jìn)行簡(jiǎn)單的翻譯,可能會(huì)有些不夠準(zhǔn)確的地方,感興趣的小伙伴可以直接查看相關(guān)文檔!

          設(shè)計(jì)界面預(yù)覽






          總結(jié)

          VvvebJs是一個(gè)非常強(qiáng)大的網(wǎng)頁(yè)可視化生成構(gòu)建工具,讓不懂網(wǎng)頁(yè)設(shè)計(jì)的小伙伴們也能夠通過(guò)拖拽來(lái)生成美觀大方的網(wǎng)頁(yè)出來(lái),讓設(shè)計(jì)網(wǎng)頁(yè)就像設(shè)計(jì)圖片一樣,VvvebJs特別適合展示型網(wǎng)頁(yè),甚至可以不需要代碼就能完成一項(xiàng)復(fù)雜的網(wǎng)頁(yè)設(shè)計(jì),總體來(lái)說(shuō),VvvebJs是一個(gè)值得嘗試的工具!


          主站蜘蛛池模板: 久久精品国产一区二区| 亚洲乱码一区av春药高潮| 人妻夜夜爽天天爽爽一区| 国产成人久久精品区一区二区 | 成人精品一区二区户外勾搭野战| 性色AV一区二区三区天美传媒| 中文字幕一区二区人妻| 日韩精品无码Av一区二区| 欧美日韩综合一区二区三区| 久久免费精品一区二区| 国产福利一区二区在线视频| 亚洲Av无码一区二区二三区| 国产内射在线激情一区| 亚洲国产精品一区二区第一页免 | 日韩精品一区二区三区中文3d| 国产日韩AV免费无码一区二区| 视频精品一区二区三区| 久久中文字幕无码一区二区| 日韩精品无码一区二区三区免费| 国产一在线精品一区在线观看| 国产一区中文字幕在线观看| 日韩视频在线一区| 亚洲爆乳精品无码一区二区| 亚洲一区电影在线观看| 日本免费一区二区三区| 久久久无码一区二区三区| 国产爆乳无码一区二区麻豆| 亚洲乱码国产一区三区| 91久久精一区二区三区大全| 一区二区视频免费观看| asmr国产一区在线| 一区二区三区四区在线视频| 一区二区三区视频在线播放| 日韩十八禁一区二区久久| 搜日本一区二区三区免费高清视频| 国产伦精品一区二区三区四区| 国产精品成人99一区无码| 日韩动漫av在线播放一区| 国产精品女同一区二区久久| 国产精品一区二区三区免费 | 海角国精产品一区一区三区糖心|