目錄
- Servlet
-
- 簡介
- ServletContext
-
- 請求轉發
- 讀取資源檔案
- HttpServletletResponse(響應)
- HttpServletletRequest(請求)
- Cookie、Session
-
- 會話
- Cookie
- Session(重點)
- JSP
-
- JSP基礎文法和指令
-
- 内置對象
- 前端頁面跳轉
- JSP标簽、JSTL标簽、EL表達式
-
- JSP标簽
- JSTL表達式
- JavaBean
- ajax
Servlet
簡介
開發動态web的一門技術
1.編寫一個類,實作Servlet接口
2.把開發好的Java類部署到web伺服器中
把實作了Servlet接口的Java程式叫做Servlet
this.getInitParameter("需要的參數名");//獲得初始化的參數,
this.getServletConfig();//servlet配置
this.getServletContext();//servlet上下文
context.getResourcePaths();//擷取資源的路徑
context.getResourceAsStream();//擷取資源把它變成流
context.getRequestDispatcher();//轉發
ServletContext
web容器在啟動的時候,他會為每一個web程式都建立一個對應的ServletContext對象,他代表了目前的web應用;
作用:可以共享資料
ServletContext context = this.getServletContext();//servlet上下文
String username = "宋燚";//資料
context.setAttribute("username",username);//将一個資料儲存在了Servletcontext中
//讀取資料
ServletContext context = this.getServletContext();
String username = (String)context.getAttribute("username");
請求轉發
通路一個頁面位址,改位址可以顯示其他網頁,但是通路路徑并不會改變
讀取資源檔案
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHLx0ERPJTRE1UeVR1T140MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLzQjMyIDNxYTM1AzNwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
HttpServletletResponse(響應)
伺服器收到請求後,針對這個請求建立response和request
簡單分類
負責向浏覽器發送資料的方法
response.getOutputStream();//發送資料流
response.getWriter();//一般中文用這個
負責向浏覽器發送響應頭的方法(我目前不知道方法的目的)
response.setCharacterEncoding();
response.setContentLength();
response.setContentType();
response.setDateHeader();
response.setHeader();
response.setIntHeader();
響應的狀态碼
常量,百度查詢
常見應用
1.向浏覽器輸出消息(看前邊)
2.下載下傳檔案
(1)擷取下載下傳檔案的路徑
(2)下載下傳的檔案名
(3)設定想辦法讓浏覽器能夠支援下載下傳我們需要的東西
(4)擷取下載下傳檔案的輸入流
(5)建立緩沖區
(6)擷取OutoutStream對象
(7)将FileOutputStream流寫入到buffer緩沖區
(8)使用OutputStream将緩沖區中的資料輸出到用戶端
3.實作驗證碼
response重定向
使用者登入實作
HttpServletletRequest(請求)
1.擷取前端傳遞的參數
2.請求轉發
Cookie、Session
會話
使用者打開一個浏覽器,點選了很多連結,通路多個資源,這個過程可以稱之為會話
有狀态會話:曾經通路過的,有記錄的用戶端再次通路
一個網站,怎麼證明你來過?
方法1:服務端給用戶端一個信件,用戶端下次通路服務端帶上信件就可以了;cookie
方法2:伺服器登記你來過了,下次你來的時候我來比對你;seesion
儲存會話的兩種技術:
cookie
用戶端技術(響應,請求)
session
伺服器技術,利用這個技術,可以儲存使用者的會話資訊。可以吧資訊或者資料放在Session中
Cookie
一個Cookie隻能儲存一個資訊;
一個web站點可以給浏覽器發送多個cookie(浏覽器接受上限大概為300個);
cookie大小有限制4kb;
删除Cookie:
1.不設定有效期,關閉浏覽器自動失效
2.設定有效期時間為0
cookie檔案一般儲存在使用者目錄的appdata下;
例子:首次登陸某個網站後,再次登入就不需要輸入密碼
protected void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException {
response.setCharacterEncoding("utf-8");
request.setCharacterEncoding("utf-8");
PrintWriter out= response.getWriter();
//儲存使用者上一次通路的時間
//伺服器告訴你你來的時間,把這個時間封裝成一個信件,你下次來的時候帶來,我就知道你來過了
//cookie,伺服器端從用戶端擷取
Cookie[] cookies = request.getCookies();//可能有多個cookie,是以用數組
//判斷cookie是否存在
if (cookies!=null){
out.write("上次通路時間:");
for (int i=0 ;i < cookies.length;i++){
Cookie cookie = cookies[i];
//擷取cookie的名字
if ( cookie.getName().equals("lastlogintime")){
//擷取cookie的值
cookie.getValue();
Long l = Long.parseLong(cookie.getValue());
Date date = new Date(l);
out.write(date.toLocaleString());
}
}
}else {
out.write("這是您第一次通路本站");
}
//伺服器給用戶端響應一個cookie;
Cookie cookie = new Cookie("lastlogintime",System.currentTimeMillis()+"");
//cookie有效期為一天
cookie.setMaxAge(24*60*60);
response.addCookie(cookie);
}
Session(重點)
伺服器會給每一個使用者(浏覽器)建立一個Session對象
一個Session獨占一個浏覽器,隻要浏覽器沒有關閉,這個Session就存在;
Session在建立的時候,建立了一個Cookie,并且發送過去
例子:使用者登入之後,整個網站他都可以通路–>儲存購物車、使用者的資訊。。。
Session可以替代Context在跨servlet傳遞資料,常用在使用者登入後的使用者資訊上
protected void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException {
response.setCharacterEncoding("utf-8");
request.setCharacterEncoding("utf-8");
response.setContentType("text/html");
//得到session
HttpSession session = request.getSession();
//給session存東西
session.setAttribute("name","宋燚");
//擷取session的id
String sessionid = session.getId();
//判斷session是不是新建立
if (session.isNew()){
response.getWriter().write("session建立成功:"+sessionid);
}else {
response.getWriter().write("伺服器中存在:"+sessionid);
}
//
//
}
得到session
登出session
1.手動登出
2.在XML檔案裡配置session的過期時間
session與cookie的差別:
JSP
JSP基礎文法和指令
JSP腳本片段
JSP聲明
EL表達式
定制錯誤頁面
xml
當網站有公用的頭部時
第一種:
第二種:
内置對象
使用EL表達式取不存在的值,網頁什麼也不顯示,使用jsp<%=%>取值,會顯示null
使用場景
前端頁面跳轉
JSP标簽、JSTL标簽、EL表達式
JSP标簽
取參數:
JSTL表達式
菜鳥教程标簽庫
https://www.runoob.com/jsp/jsp-jstl.html
核心标簽庫引入語句
if标簽測試
set标簽、choose、when标簽測試
周遊:
EL表達式擷取表單中的資料