Servlet_02 資源跳轉
總的知識點:
1.小的知識點總結:
alt+shift+r重新命名快捷鍵(可以給包和類以及專案重新命名)
有序列表 ol li 無序列表 ul
type 格式
text 是文字型別
password 是密碼口令
submit 遞交登陸 這三個都是固定格式
name賦名 value 賦名 placeholder 佔位符(只顯示,不佔位置)
@WebServlet("/register")*///資源路徑對映(注意斜槓一定要有)
eg: <form action="login"> <!--輸入框 input 行標籤 不能設定寬與高,不獨佔一行 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>
<form>表單錄入資料,把資料傳輸給後端伺服器
action:執行url動作 請求的資源路徑
<input>標記是form表單標記中的一個高頻使用的標記
input 標記中type=submit 表達的是 想把from表單中的所有資料打包成from 形式提交給後端伺服器
<input> 標籤規定了使用者可以在其中輸入資料的輸入欄位。
<input> 元素在 <form> 元素中使用,用來宣告允許使用者輸入資料的 input 控制元件。
輸入欄位可通過多種方式改變,取決於 type 屬性。
如果type=button 那麼該按鈕就是一個簡單的普通按鈕,具備滑鼠點選的功能
這個是設定歡迎介面首頁(在執行tomcat時第一個進入的頁面)需要/和.html設定在web--> WEB-INF-->web.xml裡面
<welcome-file-list> welcome-file>/register.html</welcome-file> </welcome-file-list>
2.資源跳轉分為兩種: 內部轉發和重定項
3.中文亂碼問題
首先是中文亂碼問題
這個是老師教的方法:
步驟:
1.開啟ideal進入到工程主介面,關掉tomcat伺服器
2.開啟本地的tomcat安裝檔案,找到logging.properties檔案
如果該檔案中配置了java.util.logging.ConsoleHandler.encoding=GBK
需要註釋掉,ctrl+s儲存下
3.找到ideal的導航欄中的help--》editCustomVMOptions點選開啟
在該檔案的最後一行新增-Dfile.encoding=UTF-8
4.關掉ideal應用,重新開啟進入工程主介面
5.在run執行視窗中,移除以前的tomcat應用視窗,重新新增
6.執行tomcat伺服器,此時觀察server視窗,TomcatLocalhostlog視窗
TomcatCatalinalog視窗是否中文正常,如果不行重新再來一次。
資源跳轉:
第一種:內部轉發 屬於伺服器內部的動作,對於使用者來說只請求了一次在伺服器內部做了兩次操作(服務A請求了服務B)對於使用者來說並不知情所以在網址上 --- url並不會改變(地址不會發生改變)編碼集UTF-8不管用(所以用GBK),
理解方式:客戶端向錯誤後臺發起請求但是後臺自動跳轉到正確後臺並在正確後臺發回響應
第二種:重定向 屬於瀏覽器客戶端的動作,對於使用者來說請求了兩次,伺服器也給使用者響應了兩次,所以在網址上URL會發生改變(地址發生了改變)
理解方式:客戶端向錯誤後端發起請求,錯誤後端響應客戶端並指向正確後端,然後客戶端再次向正確後端發起請求,正確後端發起響應。
客戶端資訊:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="register">
<!--輸入框資訊-->
<input type="text" name="username" placeholder="使用者名稱"><br>
<input type="text" name="phone" placeholder="手機號"><br>
<input type="text" name="email" placeholder="郵箱"><br>
<input type="password" name="password" placeholder="密碼"><br>
<input type="submit" value="註冊">
</form>
</body>
</html>
內部接收並響應反饋客戶端:
@WebServlet("/register")
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
//提供使用者註冊服務 http (http請求 - http響應)
//請求:由瀏覽器客戶端向後端伺服器發起,有時會攜帶請求引數
//響應:由後臺伺服器端向客戶端瀏覽器發起,有時也會攜帶相應資料
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse)servletResponse;
//設定編碼字符集 防止中文亂碼 ISO-8859-1 GB2312-->GBK(中國少數民族都有) UTF-8 Unicode
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
//接收客戶端傳輸的引數值 ( request.getParameter("name屬性值/引數名稱"); )
String username = request.getParameter("username");//使用者名稱
String phone = request.getParameter("phone");
String email = request.getParameter("emeil");
String password = request.getParameter("password");
//回傳資料 把後端的資料傳輸到前段瀏覽器頁面中
//h1-->h6 大標題---》小標題
response.getWriter().write("使用者名稱"+username+"<br>"+//類似輸出的意思
"手機號"+phone+"<br>"+
"郵箱"+email+"<br>"+
"密碼"+password);
}