Servlet--核心內容彙總

Servlet彙總

因爲看公司代碼,有個cookie+jwt.Token登錄驗證接口,於是回顧下servlet、cookie、session、前後端分離restful、jwt.token相關內容。雖然現在流行的是網關封裝各個接口,但是基礎還是比較重要,需要重新複習。

Servlet--基礎理論、實戰代碼鍛鍊:https://how2j.cn/k/servlet/servlet-eclipse/558.html

Servlet--拓展理論、實例參考鏈接:https://github.com/ZhongFuCheng3y/3y/blob/master/README.md#dollarservlettomcat

csdn csdn


---



☕ 背景.Servlet相關對象介紹​

簡介Servlet

​ 首先Tomcat是servlet容器,用以 接受和返回 服務端和客戶端的請求(在此之前,沒有tomcat,就使用socket進行監聽處理)。

​ 其次,在上述交互過程中,採用Http協議處理。HTTP協議是客戶端和服務器交互的一種通迅的格式

​ 最後,Servlet的生命週期即伴隨內置tomcat的調用而產生,伴隨tomcat的關閉而銷燬。下面列出Servlet相關對象。

  • ServletConfig

​ 通過此配置獲取web.xml中參數

  • ServletContext

    ​ tomcat啓動時獲取整個應用的配置文件。

  • Request、Response

    ​ 分別對應http請求頭和響應頭

  • Cookie、Session

    Cookie:存儲與客戶端,存儲用戶身份。Session:存儲與服務端,判斷用戶身份。



☕ 1.Servlet第一篇(tomcat、http協議)

目前都是httpservlet實現servlet的方法,重寫doget和dopost方法。

1.tomcat

​ tomcat底層是socket程序,也是jsp、servlet容器。

​ 介紹tomcat中虛擬目錄和虛擬主機

​ 虛擬目錄:文件不一定都放在webapps下,所以項目啓動後要訪問其他磁盤下的文件就需要配置虛擬目錄

​ 虛擬主機:一個tomcat中配置多個域名,這樣就能通過多個域名訪問到同一個tomcat中.


2.Http協議

​ Http協議:超文本傳輸協議,在客戶端client和服務端server中交互

​ Http1.0:client和server屬於短暫連接,獲取資源後就斷開

​ Http1.1:client、server保持連接,並且可以獲得多個web資源



🎃2.Servlet第二篇(request,response)

1.request
#request參數介紹
request.getRequestURL(): 瀏覽器發出請求時的完整URL,包括協議 主機名 端口(如果有)"
request.getRequestURI(): 瀏覽器發出請求的資源名部分,去掉了協議和主機名"
request.getQueryString(): 請求行中的參數部分,只能顯示以get方式發出的參數,post方式的看不到
request.getRemoteAddr(): 瀏覽器所處於的客戶機的IP地址
request.getRemoteHost(): 瀏覽器所處於的客戶機的主機名
request.getRemotePort(): 瀏覽器所處於的客戶機使用的網絡端口
request.getLocalAddr(): 服務器的IP地址
request.getLocalName(): 服務器的主機名
request.getMethod(): 得到客戶機請求方式一般是GET或者POST

#瀏覽器中header信息
host: 主機地址
user-agent: 瀏覽器基本資料
accept: 表示瀏覽器接受的數據類型
accept-language: 表示瀏覽器接受的語言
accept-encoding: 表示瀏覽器接受的壓縮方式,是壓縮方式,並非編碼
connection: 是否保持連接
cache-control: 緩存時限
2.response

防盜鏈:某個珍貴資源B,需要通過鏈接A進來才能訪問,所以對請求B的接口中需要加入防盜鏈的功能

        //防盜鏈
        String referer = request.getHeader("Referer");
        if (referer == null || !referer.contains("localhost:9090/huyuqiao")){
            response.sendRedirect("huyuqiao");
            return "盜取鏈接";
        }
        response.setContentType("text/html;charset=UTF-8");
        response.getWriter().write("正版鏈接");



📖3.Servlet第三篇(cookie,session)*

1.Cookie

​ Cookie:在瀏覽器用以保存用戶身份/瀏覽記錄。結合其他技術(session,token,sso等)用以實現用戶登錄身份驗證功能。

        //組裝Cookie
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter printWriter = response.getWriter();
        String name = "胡宇喬";
        Cookie cookie = new Cookie("country", URLEncoder.encode(name, "UTF-8"));
        cookie.setMaxAge(2000);

        response.addCookie(cookie);
        printWriter.write("服務器頒佈的cookie,保存了中文數據");


        //解碼cookie
        Cookie[] cookies = request.getCookies();
        Arrays.stream(cookies).forEach(c ->{
            String cookieName = c.getName();
            try {
                String value = URLDecoder.decode(c.getValue(), "UTF-8");
                printWriter.write(name + "-----" + value);
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }

        });
2.Session

​ Session:保存在瀏覽器(默認30分鐘,關閉瀏覽器即消失),在登錄註冊中保存用戶信息,然後前端可以通過el表達式提取出用戶信息。

#session獲取、得到、設置、銷燬
HttpSession session = request.getSession
httpSession.getAttribute("name")
httpSession.setAttribute("name", "huyuqiao")
session.removeAttribute("name")
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章