# 東哥課堂筆記 ![](https://i.imgur.com/pwOf0dZ.jpg) ![](https://i.imgur.com/S4wlCEi.png) ![](https://i.imgur.com/EQvP9mi.png) ![](https://i.imgur.com/JS7LSyC.png) --- ### 跟阿辰問答 - 客戶端發送request後是透過表單的action來指定路徑,input儲存輸入的資料 - 假設是<input id="userName" name="empno" > - 之後在servlet中根據action 使用的方法決定我們在servlet要使用do get 還是do post來接收使用者資料並forward給下一個servlet >[name=阿辰]差不多是這樣 - 在servlet中會使用request.getParameter(key) 取得iduserName - 再用request.setAttribute(key, value);帶入參數值 可以是 request.setAttribute("empno", empno);這樣嗎 - 還是要寫request.setAttribute("name", empno); - 哪一個是自己設定的變數 - 沒“”的?還是都可以自己設定 >[name=阿辰]都自己設定 那是你要丟到request裡面dispatch給下個servlet或jsp用的資料 >[name=阿辰]他們再透過getAttribute("key")取出來用 - 那html那裡input 值不用對應嗎 >[name=阿辰]Attribute跟表單完全沒有關係 >[name=阿辰]你要取表單的資料是用getParameter >[name=阿辰]然後後面是表單的name >[name=阿辰]應該說 >[name=阿辰]input的name - 比方說input name ="boss"就會String boss =request.getParameter(boss) >[name=阿辰]後面boss要引號 >[name=阿辰]你就記input name有引號所以這邊也要 就好了 >[name=阿辰]setAttribute("KEY",VALUE) >[name=阿辰]你要給的VALUE 用一個"KEY"存在request裡 接到request的就可以透過getAttribute("KEY")取VALUE - "key" 好像也沒跟任何有關聯只是個名字 - 主要存在value >[name=阿辰]對呀 - ```<div>員工編號 : <input type="text" name="empno" /></div>``` - 比方說這句,他是從bean裏找屬性嗎?欄位名empno >[name=阿辰]name跟bean無關,只是用來getParameter("input's name"),只是剛好一樣而已,方便打 - jsp怎麼找到使用者輸入的資料?就是每一行html怎麼對應到欄位? >[name=阿辰]輸入完馬上顯示就是 透過servlet getParameter存到bean中 bean在丟到request中 jsp再從request裡面get - ![](https://i.imgur.com/gEyjQnS.png) >[name=阿辰]這是刪完的畫面,欄位會被清空,所以我input沒給value - 所以這是空白的表單 >[name=阿辰]對 --- - ![](https://i.imgur.com/eb2ZlM9.png) - 這個就是透過bean顯示更新完後資料嗎? >[name=阿辰]恩 >[name=阿辰]下面的JS(location.href="html/Update.html")是多寫的,功能是取消回修改的首頁 - action 和location.href的差別在哪裡? >[name=阿辰]就單純按那個按鈕轉去那個HTML而已 >[name=阿辰]action是你按submit會發一個request給你action的servlet >[name=阿辰]submit就是為了要呼叫servlet處理form的資料 所以action一定要寫 - action 不寫是因為直接把jsp當最後一個畫面?但最好不要對吧 >[name=阿辰]恩 我只是應付作業 >[name=阿辰]通常會有其他方法回首頁或怎麼樣的 >[name=阿辰]不會讓他卡在那 >[name=阿辰]action 路徑建議只寫servlet,也可以寫jsp。 >[name=阿辰]邏輯能通應該程式都能跑,只是實際上為了分工和維護方便,才變成有Servlet跟jsp這兩種,方便我們省時省力。 >[name=阿辰]action的路徑不可能寫html,你會寫action就是要處理表單的資料 html不能處理 >[name=阿辰]你只要記 form的action路徑是按submit之後會丟一個request過去 那會按submit就是要處理資料 所以一定會是servlet或jsp的路徑。 >[name=阿辰]這樣才能處理,通常都是servlet,因為MVC分離架構。 >[name=阿辰]JSP要跳去html就寫超連結就好了 ```<a>```就可以了 順序 ``` delete.html-> delete.servlet(read)->DeleteCheck.jsp->deletcheck.servlet->deleted.jsp ``` - 透過action 能同時接收資料也能前往其他頁面? deleteCheck.jsp->deletcheck.servlet >[name=阿辰]可以這樣說 >[name=阿辰]如果不想用JS處理資料 html資料都是死的 要讓資料是活的必須寫jsp >[name=阿辰]jsp就是方便寫html的servlet jsp可以做html跟servlet做的事 --- - 你都改完html後就直接在jsp上測試? >[name=阿辰]是呀 因為我只是改小東西 >[name=阿辰]如果是要開一頁新的 肯定先用html做完再貼到JSP --- 在servlet裡面可以透過request.getRequestDispatcher,除了可以把request forward給servlet,還有jsp ``` request.getRequestDispatcher ("/select/GetAllEmps.jsp").forward (request, response); ``` --- sendRedirect =>就像客戶打給你,你叫客戶去找其他的廠商(所以客戶還要再打一通電話) forward =>就像客戶找你,你交給你同事處理(對客戶來說只有打一通電話) **傳遞參數** -------- 頁面跳轉常常也會有參數的傳遞 使用到的方法為setAttribute("key",value) 範例如下: ``` request.setAttribute("myname",name); ``` 這裡的naem是自己去的一個變數,值為實際的資料 (eg.client輸入的username) myname為key值 因此這樣去request.getAttribute("myname") 就可以得到name這個變數值 這在之後也會用到 但setAttribute在sendRedirect()不能用 原因為sendRedirect間接產生一個新的request 因此舊的request所帶的參數是抓不到的 --- 我們在 google 滷肉飯食譜的時候,整個過程大致上是這樣的: - 我們的瀏覽器呼叫某串網址,讓 Google 的伺服器知道我們要求什麼資料。這個動作,我們叫作「瀏覽器向伺服器發出了一個**請求 (request)**」。 - Google 的伺服器找到我們需要的資料以後,把這個紀錄資料的網頁的文字指示回傳給我們的瀏覽器。這個動作,我們叫作「瀏覽器向伺服器發出了一個**回應 (response)**」。 - 我們的瀏覽器按照文字指示,渲染出我們看見的網頁。 --- - **前端**工程師負責給予**瀏覽器**指示,讓瀏覽器發出適當請求,也讓瀏覽器適當渲染出請求回的資料。 - **後端**工程師負責給予**伺服器**指示,讓伺服器在接收請求後,知道應該怎麼取回、新增、或修改資料,並且給予瀏覽器適當的回應。 - **前端**......**瀏覽器**............ - **後端**......**伺服器**............ --- servlet 是得到request才啟動 button form= 按鈕的form prop對應到form 的ID 每一筆資料對應一個i i=頁面上起始和結束的會員 --- 刪除後回到當前頁面的換頁bug 分頁按鈕也設for迴圈 --- 刪除後,重建資料庫就好了 用資料庫的insert into values 一次新增好幾十筆 --- 前台: - 首頁 - 內文頁面 後台: - 新增 - 修改 - 刪除 - 查詢 >可以進資料庫是第一步,能顯示出頁面是第二步 select >option 做出每頁顯示數量的下拉選單 圖片用連結或是路徑匯入 --- 父元素稱作「**容器**」(英文會是 container 或 wrapper)。 --- 1. 在我們希望神燈精靈記得我們告訴他的新事物時,必須使用名稱,也就是**變數**,來進行儲存。 2. 這些變數中儲存的東西,會分成不同的類型,也就是**型別**;這是為了要讓神燈精靈知道怎麼計算或處理這些東西。 3. 我們可以讓神燈精靈替我們執行不會出錯的**條件判斷**。 4. 我們可以讓神燈精靈替我們執行重複繁瑣的**迴圈**。 --- bean /ListBean ![](https://i.imgur.com/U0Gux7L.png)