天天看點

JavaWeb學習筆記ServletJSP

目錄

  • 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");
           

請求轉發

通路一個頁面位址,改位址可以顯示其他網頁,但是通路路徑并不會改變

讀取資源檔案

JavaWeb學習筆記ServletJSP

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将緩沖區中的資料輸出到用戶端

JavaWeb學習筆記ServletJSP

3.實作驗證碼

JavaWeb學習筆記ServletJSP
JavaWeb學習筆記ServletJSP

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

JavaWeb學習筆記ServletJSP

登出session

1.手動登出

JavaWeb學習筆記ServletJSP

2.在XML檔案裡配置session的過期時間

JavaWeb學習筆記ServletJSP

session與cookie的差別:

JavaWeb學習筆記ServletJSP

JSP

JavaWeb學習筆記ServletJSP
JavaWeb學習筆記ServletJSP
JavaWeb學習筆記ServletJSP

JSP基礎文法和指令

JavaWeb學習筆記ServletJSP

JSP腳本片段

JavaWeb學習筆記ServletJSP
JavaWeb學習筆記ServletJSP

JSP聲明

JavaWeb學習筆記ServletJSP

EL表達式

JavaWeb學習筆記ServletJSP

定制錯誤頁面

xml

JavaWeb學習筆記ServletJSP

當網站有公用的頭部時

第一種:

JavaWeb學習筆記ServletJSP

第二種:

JavaWeb學習筆記ServletJSP

内置對象

JavaWeb學習筆記ServletJSP
JavaWeb學習筆記ServletJSP
JavaWeb學習筆記ServletJSP

使用EL表達式取不存在的值,網頁什麼也不顯示,使用jsp<%=%>取值,會顯示null

使用場景

JavaWeb學習筆記ServletJSP

前端頁面跳轉

JavaWeb學習筆記ServletJSP

JSP标簽、JSTL标簽、EL表達式

JavaWeb學習筆記ServletJSP

JSP标簽

JavaWeb學習筆記ServletJSP

取參數:

JavaWeb學習筆記ServletJSP

JSTL表達式

菜鳥教程标簽庫

https://www.runoob.com/jsp/jsp-jstl.html

核心标簽庫引入語句

JavaWeb學習筆記ServletJSP

if标簽測試

JavaWeb學習筆記ServletJSP

set标簽、choose、when标簽測試

JavaWeb學習筆記ServletJSP

周遊:

JavaWeb學習筆記ServletJSP

EL表達式擷取表單中的資料

JavaWeb學習筆記ServletJSP

JavaBean

JavaWeb學習筆記ServletJSP

ajax

JavaWeb學習筆記ServletJSP