09 Servlet中間服務 連線前段和後端
阿新 • • 發佈:2020-10-21
import 匯入 在當前類中使用外包中的類時使用
cookies 快取
Alt+enter提示快捷鍵
Servlet 服務 (連線前段和後端)
Servlet本質就是Java類
Java Servlet 是執行在 Web 伺服器或應用伺服器上的程式,它是作為來自 Web 瀏覽器或其他 HTTP 客戶端的請求和 HTTP 伺服器上的資料庫或應用程式之間的中間層。
使用 Servlet,您可以收集來自網頁表單的使用者輸入,呈現來自資料庫或者其他源的記錄,還可以動態建立網頁。
登入介面使用的是表單技術,現將其互動給後端
在Java程式中,不是基本型別的剩下的都是引用型別的。(String字串也是(類首字母大寫))
其中的格式:
eg: importjavax.servlet.Servlet; // import包名+類名
命名規範:
1.對於類名,變數名等識別符號組成部分:數字,字母,$,下劃線(去看類名)只有這四種其他都不行
在包命名時,可以用符號“.”這個點就相當於“/”是目錄分割符
2.命名不能以數字開頭
3.不能由關鍵字來命名如:int但是識別符號可以包含關鍵字如:int_a
4.對於類名來說首字母規範是大寫的,其他一般小寫
5.命名時,如果該識別符號有多個單片語成,我們一般在後端服務程式中採用駝峰命名法。
後面的單詞每個單詞首字母大寫。
6.見名知意名字太長了,採用通用的縮寫形式
java後臺基本格式註釋
HttpServletResponse response = (HttpServletResponse) servletResponse; 強制轉換 左邊是小範圍的資料型別 變數名 = (小範圍的資料型別)變數值; 對於引用型別來說,前提條件是等號兩邊前後的資料型別是有繼承關係(父子關係) int a = (int) 646121651;//跟上邊模式基本一樣 int int_a = 132;//再次強調int等關鍵詞不能單獨成為命名 response . setCharacterEncoding("UTF-8");//設定編碼字符集 response.setContentType("text/html;charset=UTF-8");//防止中文亂碼 response 通過響應setContentType設定響應型別text/html設定相應型別為文字html response . getWriter() .write( "Servlet 很厲害");// I0流 input output 寫出 response . getWriter() //具備可以往程式外寫內容的功能 response 通過響應 getWriter 寫出 write http://localhost:8080/day9/hello hello 請求後端伺服器的資源路徑 @WebServlet("/hello") hello url路徑對映 hello --> 對映到HelloServlet HelloServlet --> 載入service()功能(方法) service() ---> response.getWriter().writer("Servlet很厲害"); @WebServlet("/請求資源路徑") web.xml配置的請求資源路徑二者選其一 當兩個都配置的時候,伺服器是無法啟動的。 500就是指後端的伺服器程式碼有異常或者是錯誤 400/402 客戶端問題 請求資源找不到
網站名域名註釋:
http://localhost:8080/day9/hello 組成部分:網路協議://域名(伺服器名 》備案(ip + 域名)):埠號(8080)/部署在伺服器上的虛擬目錄/請求資源路徑?name=張三&password=123456 域名是自定義的 idea的預設埠號63342 , 每個軟體都有自己的埠號 ?name=張三&password=123456 請求資源路徑攜帶的請求引數 ?是分割前面的請求資源路徑和後面的引數 如果請求引數有多個的話,用“&”連線 部署在伺服器上的虛擬目錄hello 如果沒有埠號:說明他用的埠號是80 (80可以不寫) 在servlet-class標記中,裡面需要填寫類(全路徑:包名+類名)全先定類名
登入頁面例題:
前臺顯示:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <!--頁面標題--> <title>登入頁面</title> </head> <body> <!-- <form> 表單 錄入資料,把資料傳輸給後端伺服器 action:執行url動作 請求的資源路徑 <input>標記是form表單標記中的一個高頻使用的標記 input 標記中type=submit 表達的是 想把from表單中的所有資料打包成from 形式提交給後端伺服器 如果type=button 那麼該按鈕就是一個簡單的普通按鈕,具備滑鼠點選的功能 --> <form action="login"> <!--輸入框 input 行標籤 不能設定寬與高,不獨佔一行 為什麼登入不用name type 格式,(在這裡是選擇格式) text 是文字型別 password 是密碼,口令 submit 遞交登陸 這三個都是固定格式 name賦名 value 賦名 placeholder 佔位符(只顯示,不佔位置) --> <input type="text" name="username" placeholder="使用者名稱/郵箱/手機號"><br> <input type="password" name="password" placeholder><br> <input type="submit" value="登入" ><br> <!--超連結 <a> 制定跳轉的資源路徑href --> <a href="zuoye.html">忘記密碼</a> </form> </body> </html>
後臺編碼:
package com.zhiyou100; import javax.servlet.*; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @WebServlet("/login") public class loginServlet implements Servlet { @Override public void init(ServletConfig servletConfig) throws ServletException { } @Override public ServletConfig getServletConfig() { return null; } @Override public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { //轉換成可支援Http協議的類 HttpServletRequest request = (HttpServletRequest) servletRequest; HttpServletResponse response = (HttpServletResponse) servletResponse; //設定可以接受帶中文的文字資訊 getParameter(“引數名稱”)如果是表單引數 通過name屬性值 request.setCharacterEncoding("UTF-8"); //設定可以相應給瀏覽器客戶端支援的中文文字資訊 response.setContentType("text/html;charset=UTF-8"); //凡是客戶端提交的引數值,一般情況下 String username = request.getParameter("username"); String password = request.getParameter("password"); //假定 你的使用者名稱是張三 密碼123456 if (username.equals( "張三") && password.equals("123456")){//==換成equals() //表明使用者名稱和密碼都正確 //恭喜你登陸成功! response.getWriter().write("恭喜你登陸成功!"); }else{ //您的使用者名稱不正確,請重新登陸 response.getWriter().write("您的使用者名稱不正確,請重新登陸"); } } @Override public String getServletInfo() { return null; } @Override public void destroy() { } }