国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

實現(xiàn)服務器版本的表白墻

這篇具有很好參考價值的文章主要介紹了實現(xiàn)服務器版本的表白墻。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

初始前端代碼

網(wǎng)頁初始效果?

一、確定接口

?二、編寫代碼

2.1 創(chuàng)建項目七步走

1、創(chuàng)建Maven項目?

?2、引入依賴

3、構建目錄

4、編寫代碼

5、打包、部署???編輯

7、驗證代碼?

三、具體的代碼邏輯

3.1 服務器——兩個服務接口

?3.2 前端頁面的代碼

3.2.1 前端存檔代碼

3.2.2? 前端讀檔代碼

初始前端代碼

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>告白墻</title>
</head>
<body>
<!-- 通過內(nèi)部樣式style標簽,引入CSS樣式 -->
<style>
        *{
            /* 首先先去除瀏覽器樣式 */
            /* 將 內(nèi)外邊距設置為0,設置盒子模型為向內(nèi)擠壓 */
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        .containner{
            width: 100%;
        }
        h3{
            /* 文本居中 */
            text-align: center;
            /* 上下邊距為 20px,左右邊距為0 */
            padding: 20px 0;
            font-size: 24px;
        }

        p{
            text-align: center;
            color: #666;
            padding: 10px 0;
        }

        .row{
            width: 400px;
            height: 50px;
            /* 上下外邊距為零,左右外邊距自適應 */
            /* 就是元素水平居中操作 */
            margin: 0 auto;
            /* 彈性布局 */
            display: flex;
            /* 水平居中 */
            justify-content: center;
            /* 垂直居中 */
            align-items: center;
        }

        .row span{
            width: 60px;
            font-size: 17px;
        }
        .row input{
            width: 300px;
            height: 40px;
            line-height: 40px;
            font-size: 20px;
            text-indent: 0.5em;
            outline: none;
        }

        .row #submit{
            width: 360px;
            height: 40px;
            font-size: 20px;
            line-height: 40px;
            margin: 0 auto;
            color: white;
            background-color: orange;
            border: none;
            border-radius: 15px;
            outline: none;
        }
        /* 當鼠標點擊按鈕的時候,會改變按鈕顏色 */
        .row #submit:active{
            background-color: grey;
        }
    </style>
<div class="container">
    <h3>表白墻</h3>
    <p>輸入后點擊提交,會將信息顯示在表格中</p>
    <br>
    <div class="row">
        <span>誰: </span>
        <input type="text">
    </div>
    <div class="row">
        <span>對誰: </span>
        <input type="text">
    </div>
    <div class="row">
        <span>說什么: </span>
        <input type="text">
    </div>
    <div class="row">
        <button id="submit">提交</button>
    </div>
</div>

<script>
        let submitBtn = document.querySelector('#submit');
        submitBtn.onclick = function(){
            // 1、獲取 3個input 文本框中的數(shù)據(jù)
            let inputs = document.querySelectorAll('input');
            let from = inputs[0].value;
            let to = inputs[1].value;
            let say = inputs[2].value;
            if(from == ''|| to == '' || say == ''){
                // 用戶填寫的數(shù)據(jù),并不完整。所以不提交。
                return;
            }
            // 2、生成一個新的 div,內(nèi)容就是 三個 input 文本框的內(nèi)容拼接
            // 再把這個 元素,掛在DOM樹上。
            let newDiv = document.createElement('div');
            newDiv.innerHTML = from + "對" + to +"說:" + say;
            newDiv.className = 'row';
            // 將新建節(jié)點,掛在 container 這個節(jié)點下面
            let container = document.querySelector('.container');
            container.appendChild(newDiv);
        }
    </script>
</body>
</html>

網(wǎng)頁初始效果?

實現(xiàn)服務器版本的表白墻之前已經(jīng)寫了表白墻頁面.
有非常嚴重的問題:
????????1.如果刷新頁面/關閉頁面重開,之前輸入的消息就不見了!!
????????2.如果一個機器上輸入了數(shù)據(jù),第二個機器上是看不到的(這些數(shù)據(jù)都是在本地瀏覽器中)

解決思路:

????????讓服務器來存儲用戶提交的數(shù)據(jù). 由服務器保存當有新的瀏覽器打開頁面的時候,從服務器獲取數(shù)據(jù)。因為當下的信息記錄,只是保存在 頁面 / 內(nèi)存 里,因此 信息記錄是及其容易丟失的。想要做到真正持久化存儲,我們需要將其信息記錄 存入到 服務器 當中。


一、確定接口

首先我們要明白 這個頁面(客戶端) 該如何 與 服務器 進行交互。

進一步來說:約定前后端交互的接口。?

  • 請求是啥樣的
  • 響應是啥樣的
  • 瀏覽器啥時候發(fā)這個請求
  • 瀏覽器按照啥樣的格式來解析.....

這個操作過程,其實就是在自定義應用層協(xié)議。
我們既然是搞一個服務器,服務器就得提供一些服務。?

哪些環(huán)節(jié)涉及到前后端交互?
????????1.點擊提交瀏覽器把表白信息發(fā)到服務器這里

????????2.頁面加載瀏覽器從服務器獲取到表白信息

?第一個接口服務的觸發(fā)條件:

當用戶點擊 “提交按鈕” 的時候,就會給 發(fā)送一個 HTTP 請求。
讓服務器 把這個信息 存下來。
?
約定好,為了實現(xiàn)這個效果,客戶端發(fā)送一個什么樣的 HTTP 請求,服務器返回一個什么樣的 HTTP 響應。

實現(xiàn)服務器版本的表白墻

第二個接口服務的觸發(fā)條件:
當頁面加載的時候,就需要從服務器獲取到曾經(jīng)存儲的的消息內(nèi)容。

實現(xiàn)服務器版本的表白墻

?二、編寫代碼

確定好接口之后,就可以編寫代碼了。

現(xiàn)在的我們即需要編寫后端代碼,也需要編寫前端代碼。
在實際工作中,一個項目,前端和后端是“兩個人 / 兩個小組”分別負責的。
此時兩個人就是在并行的開發(fā),前端的負責前端,后端的負責后端。
兩邊代碼一寫完,放在一起,測試一下,俗稱 “聯(lián)調(diào)” 。
如果 聯(lián)調(diào)的結果,沒有問題,那么這個項目也就完成了。?

為了避免程序雜亂。我們新建一個項目來完成“表白墻”。
還記得那7個步驟嘛?

2.1 創(chuàng)建項目七步走

1、創(chuàng)建Maven項目?

實現(xiàn)服務器版本的表白墻

?2、引入依賴

  <dependencies>
        <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.14.1</version>
        </dependency>
    </dependencies>
    <packaging>war</packaging>
    <build>
        <finalName>MessageWall</finalName>
    </build>

3、構建目錄

<!DOCTYPE web-app PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
    <display-name>Archetype Created Web Application</display-name>
</web-app>

4、編寫代碼

@WebServlet("/message")
public class MessageServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.getWriter().write("dopost");
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.getWriter().write("doget");

    }
}

實現(xiàn)服務器版本的表白墻

5、打包、部署??實現(xiàn)服務器版本的表白墻

注意:
Smart Tomcat 并不是真的把 項目 打包了?。。?br> 其實是把 webapp 目錄 作為 Tomcat 啟動的一個參數(shù),給設定進去了。
讓Tomcat 直接從這個指定目錄中加載 webapp。
?
這么說吧:讓Tomcat直接從 webapps 中 加載 war包,不是唯一的出路!
Smart Tomcat 相當于是走了一個捷徑,從而節(jié)省了打包的過程。
?
就比如現(xiàn)在,我使用了 Smart Tomcat 進行 打包 和 部署。
照理來說:此時 MessageWall的 war包,應該處于 Tomcat目錄中的 webapps 路徑底下存在??

實現(xiàn)服務器版本的表白墻

你會發(fā)現(xiàn) MessageWall 的 war 包,壓根就不在這個 目錄底下?。?!?
?
其實 這兩步是可以省略的實現(xiàn)服務器版本的表白墻至于 Context Path,配置 Smart Tomcat 的時候,不是有默認的路徑嗎?
直接用就行了!只要你輸入上下文路徑的時候,別輸入錯誤就行??!
至于 第一行的名字,這個你可以隨便去個名字,它不影響代碼的執(zhí)行!?實現(xiàn)服務器版本的表白墻

7、驗證代碼?

實現(xiàn)服務器版本的表白墻


三、具體的代碼邏輯

既然代碼執(zhí)行起來沒有問題,我們實現(xiàn)具體的代碼邏輯

3.1 服務器——兩個服務接口

實現(xiàn)服務器版本的表白墻

實現(xiàn)服務器版本的表白墻

?實現(xiàn)服務器版本的表白墻

?3.2 前端頁面的代碼

3.2.1 前端存檔代碼

此時,服務器的兩個服務接口,我們就完成了。?

下面,我們就來編寫前端頁面的代碼:

1、把前面寫的前端頁面代碼拷貝過來

實現(xiàn)服務器版本的表白墻

??2、再在之前的代碼基礎上,加上ajax的操作。(關鍵操作)

引入jquery:

<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>

實現(xiàn)服務器版本的表白墻

實現(xiàn)服務器版本的表白墻實現(xiàn)服務器版本的表白墻

實現(xiàn)服務器版本的表白墻

?但是這里網(wǎng)頁一刷新,下面的內(nèi)容還是會消失

實現(xiàn)服務器版本的表白墻

這是因為我們只有客戶端發(fā)給服務器的代碼(存檔),沒有服務器寫給客戶端的代碼(讀檔)


3.2.2? 前端讀檔代碼

實現(xiàn)服務器版本的表白墻

接下來讓我們實現(xiàn)一下讀檔的代碼~~~

讓瀏覽器ajax發(fā)送一個GET請求

實現(xiàn)服務器版本的表白墻

實現(xiàn)服務器版本的表白墻


問題:?

當前數(shù)據(jù)是在內(nèi)存(變量) 中保存的,只要重啟服務器數(shù)據(jù)就又沒了
要想持久化保存,就需要寫入文件中(硬盤)

????????1.直接使用 流對象 寫入文本文件

????????2.借助數(shù)據(jù)庫.(后面再寫一篇博客~~)文章來源地址http://www.zghlxwxcb.cn/news/detail-417123.html

到了這里,關于實現(xiàn)服務器版本的表白墻的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 12-代碼實戰(zhàn)——服務器版表白墻

    12-代碼實戰(zhàn)——服務器版表白墻

    目錄 1.版本一:將數(shù)據(jù)存到內(nèi)存中 ①約定前后端交互接口 a.添加表白信息: b.查詢表白列表: ②在webapp包下創(chuàng)建message-wall.html前端文件 ③在java包下創(chuàng)建AddMessageServlet后端類 ④在java包下創(chuàng)建MessageListServlet后端類 2.版本二:將數(shù)據(jù)存到數(shù)據(jù)庫中 ①創(chuàng)建數(shù)據(jù)庫, 創(chuàng)建 messages 表 ②

    2024年02月10日
    瀏覽(22)
  • 使用node搭建服務器,前端自己寫接口,將vue或react打包后生成的dist目錄在本地運行

    使用node搭建服務器,前端自己寫接口,將vue或react打包后生成的dist目錄在本地運行

    vue項目打包后生成的dist目錄如果直接在本地打開index.html,在瀏覽器中會報錯,無法運行起來。 通常我是放到后端搭建的服務上面去運行,當時前端自己也可以是node,nuxt搭建服務器,寫接口等等 如果想在本地運行,我們可以借助node.js+express搭建一個服務器,將打包后的文件部

    2024年02月03日
    瀏覽(32)
  • Java實現(xiàn)讀取SFTP服務器指定目錄文件

    SFTP服務器的簡介 SFTP(SSH File Transfer Protocol)是一種在安全通道上傳輸文件的協(xié)議,它是基于SSH(Secure Shell)協(xié)議的擴展,用于在客戶端和服務器之間進行加密的文件傳輸。 SFTP 服務器的主要作用是提供一個安全的方式來上傳、下載和管理文件。以下是一些 SFTP 服務器的主要

    2024年02月03日
    瀏覽(22)
  • shell腳本實現(xiàn)刪除服務器指定目錄下文件方法

    上述腳本中,find 命令用于查找指定目錄下4天以前的文件,并將其刪除。其中,-type f 表示只查找普通文件,不包括目錄和符號鏈接等其他類型的文件;-mtime +3 表示查找修改時間早于3天前的文件;-delete 表示刪除查找到的文件。 腳本中的 $folder_path 可以替換為實際的目錄路徑

    2023年04月19日
    瀏覽(23)
  • 華為云云服務器評測|初始化配置SSH連接 & 安裝MySQL的docker鏡像 & 安裝redis以及主從搭建 & 7.2版本redis.conf配置文件

    華為云云服務器評測|初始化配置SSH連接 & 安裝MySQL的docker鏡像 & 安裝redis以及主從搭建 & 7.2版本redis.conf配置文件

    1.云耀云服務器L實例初始化配置,設置密碼,ssh連接; 2.安裝docker,安裝運行mysql容器; 3.redis鏡像的拉取,創(chuàng)建運行容器; 4.搭建redis主從,一主一從,7.2版本的redis.conf配置文件; 設置密碼,官方要求復雜一點 進行遠程登陸配置 添加開放的端口 在finalShell中新建SSH連接 系統(tǒng)

    2024年02月10日
    瀏覽(29)
  • 簡單版本視頻播放服務器V3-前端優(yōu)化-播放器在左,列表在右側(cè)【推薦】【完成】

    簡單版本視頻播放服務器V3-前端優(yōu)化-播放器在左,列表在右側(cè)【推薦】【完成】

    做個家用版本的家庭影院,通過這個服務器可以給電腦,平板,手機等設備提供直接播放電影的作用,通過離線下載電影放入目錄里就是就可以給全家提供電影播放了,通過瀏覽器就是可以訪問電腦里面的視頻,實現(xiàn)簡單的家庭版本服務了。 1.0最終代碼:【前端以這個為主;

    2024年02月16日
    瀏覽(25)
  • vue3 + fastapi 實現(xiàn)選擇目錄所有文件自定義上傳到服務器

    vue3 + fastapi 實現(xiàn)選擇目錄所有文件自定義上傳到服務器

    大家好,我是yma16,本文分享關于vue3 + fastapi 實現(xiàn)選擇目錄文件上傳到服務器指定位置。 vue3系列相關文章: 前端vue2、vue3去掉url路由“ # ”號——nginx配置 csdn新星計劃vue3+ts+antd賽道——利用inscode搭建vue3(ts)+antd前端模板 認識vite_vue3 初始化項目到打包 python_selenuim獲取csdn新星

    2024年02月08日
    瀏覽(18)
  • ruoyi項目服務器重啟后臺報:歡迎使用RuoYi后臺管理框架,當前版本:v3.8.1,請通過前端地址訪問。

    ruoyi項目服務器重啟后臺報:歡迎使用RuoYi后臺管理框架,當前版本:v3.8.1,請通過前端地址訪問。

    阿西,真的想罵人,不會耶,根本不會,咱就不明白了,怎么好好的項目在服務器上運行的好好的,不就是服務器到期了停了一下子再續(xù)上重啟,再進去跟后臺系統(tǒng),就歡迎使用RuoYi后臺管理框架,當前版本:v3.8.1,請通過前端地址訪問。,真的好煩,不是自己寫的代碼,也

    2024年02月04日
    瀏覽(23)
  • 極光Java 版本服務器端實現(xiàn)別名消息推送

    REST API 文檔:

    2024年02月15日
    瀏覽(20)
  • 【網(wǎng)絡編程】實現(xiàn)一個簡單多線程版本TCP服務器(附源碼)

    【網(wǎng)絡編程】實現(xiàn)一個簡單多線程版本TCP服務器(附源碼)

    accept 函數(shù)是在服務器端用于接受客戶端連接請求的函數(shù),它在監(jiān)聽套接字上等待客戶端的連接,并在有新的連接請求到來時創(chuàng)建一個新的套接字用于與該客戶端通信。 下面是 accept 函數(shù)的詳細介紹以及各個參數(shù)的意義: sockfd: 是服務器監(jiān)聽套接字的文件描述符,通常是使用

    2024年02月13日
    瀏覽(32)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包