Java Web常見面試題

1、JSP和Servlet有什么區別

  • jsp經過編譯后變成類Servlet(JSP的本質就是Servelt,JVM只能識別java的類,不能識別jsp的代碼,于是web容器將jsp的代碼編譯成JVM能夠識別的java類,也就是servelt)
  • jsp更擅長表現于頁面顯示,而servlet更擅長于邏輯控制
  • jsp是servlet的一組簡化,使用jsp只需要完成程序員需要輸出到客戶端的內容,jsp中的java腳本如何鑲嵌到一個類中,由jsp容器完成;而servlet是個完整的java類,這個類的service方法(doGet(),doPost())用于生成對客戶端的響應

2、Jsp有哪些內置對象,作用是什么

  • request:封裝客戶端的請求,其中包含來自Get或Post請求的參數
  • response:封裝服務器對客戶端的響應
  • pageCOntext:通過該對象可以獲取其他對象
  • session:封裝用戶對話的對象
  • application:封裝服務器運行環境的對象
  • out:輸出服務器響應的輸出流對象
  • config:Web應用的配置對象
  • page:JSP頁面本身(相當于Java程序中的this)
  • exception:封裝頁面拋出異常的對象

3、說一下jsp的4種作用域

  • page:與一個頁面相關 的對象和屬性。只在當前頁面有效,所以不能作為在頁面間傳遞數據
  • request:代表與web客戶端發出的一個請求相關 的對象和屬性。請求發送的時候創建,請求結束銷毀。所以可以在服務端跳轉時傳遞參數數據。 最常用的,因為周期短,需要在頁面顯示的臨時數據可以置于此作用域
  • session:代表某個用戶與服務器建立的一次會話 相關的對象和屬性。跟某個用戶相關的數據應該放在用戶自己的session中,一般用于登錄驗證時存放用戶狀態。用戶第一次發起請求時創建,用戶退出時才銷毀
  • application:代表與整個Web應用程序相關 的對象和屬性。它實質上是跨越整個Web應用程序,包括多個頁面、請求和會話的一個全局作用域

4、session和cookie的區別?

session

HTTP協議時無狀態的協議,所以服務端需要記錄用戶的狀態時,就需要用某種機制來識別具體的用戶,這個機制就是session。服務端 要為每個不同的用戶創建特定的session,來標識這個用戶。這個session是保存在服務端的,有一個唯一標識 。在服務端保存session的方法有很多,內存、數據庫、文件都可以。當服務器集群的時候,如大型的網站,會有專門的session服務器集群,用來保存用戶會話,這個時候session是放在內存的,使用一些緩存服務來放session

cookie

服務端如何根據session來識別客戶呢?這時候就要用上cookie了。第一次創建session的時候,服務端會在HTTP協議中告訴客戶端,**需要在cookie里面記錄一個session ID ** ,以后每次請求把這個session ID發送到服務器,這樣服務器就能識別這個用戶了。如果客戶端的瀏覽器禁用了cookie怎么辦?這種情況下,會使用一種叫做URL重寫的技術來進行會話跟蹤,即每次HTTP交互,URL后面都會被附加上一個諸如sid=xxxx這樣的參數,服務端據此來識別用戶。

區別

  • 保存的位置不同:session是保存在服務端,而cookie是保存在客戶端
  • 存儲沒人不同:cookie只能存儲字符串,而session存儲結構類似于hashtable的結構,可以存放任何類型
  • 存儲大小:cookie最多可以放4k大小的內容,session沒有限制
  • session的安全性要高于cookie。很顯然,用戶信息是很隱秘的東西,放在客戶端是很危險的。
  • 應用場景:cookie可以用來保存用戶的登錄信息,如果刪除cookie則下一次用戶仍需要重新登錄;session類似于拿著鑰匙去開鎖,拿到的就是我們個人的信息,一般可以在session中存放個人的信息或者購物車的信息

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/42776.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/42776.shtml
英文地址,請注明出處:http://en.pswp.cn/news/42776.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【2023年11月第四版教材】《第5章-信息系統工程之系統集成(第四部分)》

《第5章-信息系統工程之系統集成(第四部分)》 3 系統集成3.1網絡集成3.2 數據集成3.3 軟件集成3.4 應用集成3.5 安全工程 3 系統集成 3.1網絡集成 安全對策要點傳輸子系統1.常用的無線傳輸介質主要包括無線電波、微波、紅外線等2.常用的有線傳輸介質主…

webpack中常見的Loader

目錄 1.webpack中的loader是什么?配置方式 2. loader特性3.常見的loader 1.webpack中的loader是什么? loader 用于對模塊的"源代碼"進行轉換,在 import 或"加載"模塊時預處理文件 webpack做的事情,僅僅是分…

爬蟲逆向實戰(三)--天某云登錄

一、數據接口分析 主頁地址:天某云 1、抓包 通過抓包可以發現登錄接口是account/login 2、判斷是否有加密參數 請求參數是否加密? 通過“載荷”模塊可以發現password、comParam_signature、comParam_seqCode是加密的 請求頭是否加密? 無…

ElasticSearch 8.9.0 開發模式安裝

ElasticSearch 8.9.0 開發模式安裝 MacOS(Apple芯片):https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.9.0-darwin-aarch64.tar.gz Linux:https://artifacts.elastic.co/downloads/elasticsearch/elasti…

git倉庫新建上傳記錄

新建git倉會出現版本分支問題,解決過程: 其他的前期綁定之類的傳送:https://blog.csdn.net/qq_37194189/article/details/130767397 大概思路:新建一個分支,上傳,合并,刪除分支 git branch …

4.2 C++ Boost 內存池管理庫

Boost 庫是一個由C/C語言的開發者創建并更新維護的開源類庫,其提供了許多功能強大的程序庫和工具,用于開發高質量、可移植、高效的C應用程序。Boost庫可以作為標準C庫的后備,通常被稱為準標準庫,是C標準化進程的重要開發引擎之一。…

cmake擴展(5)——file命令排除部分文件

在cmake中可以使用file命令獲取需要的文件&#xff0c;并且支持正則/通配符&#xff0c;使用起來還是很方便的。 #語法file({GLOB | GLOB_RECURSE} <out-var> [...] [<globbing-expr>...])#example file(GLOB_RECURSE SOURCES "src/*.h" "src/*.cp…

HTTP與HTTPS的區別

面試常見問題&#xff0c;HTTPS優化總結易記版&#xff1a; 1、HSTS重定向技術&#xff1a;將http自動轉換為https&#xff0c;減少301重定向 2、TLS握手優化&#xff1a;在TLS握手完成前客戶端就提前向服務器發送數據 3、會話標識符&#xff1a;服務器記錄下與某客戶端的會…

Mac鼠標增強工具Smooze Pro

Smooze Pro是一款Mac上的鼠標手勢增強工具&#xff0c;可以讓用戶使用鼠標手勢來控制應用程序和系統功能。 它支持多種手勢操作&#xff0c;包括單指、雙指、三指和四指手勢&#xff0c;并且可以自定義每種手勢的功能。例如&#xff0c;您可以使用單指向下滑動手勢來啟動Expos視…

Linux 僵死進程

fork復制進程之后&#xff0c;會產生一個進程叫做子進程&#xff0c;被復制的進程就是父進程。不管父進程先結束&#xff0c;還是子進程先結束&#xff0c;對另外一個進程完全沒有影響&#xff0c;父進程和子進程是兩個不同的進程。 一、孤兒進程 現在有以下代碼&#xff1a;…

如何計算全彩LED顯示屏的像素

大屏尺寸 提供大屏的尺寸和像素點間距&#xff0c;計算大屏的分辨率是多少&#xff1f; 大屏尺寸&#xff1a;寬度>10200mm&#xff0c;高度>2025mm&#xff1b;像素點間距<1.25mm 分辨率計算 寬10200/1.258160px 高2025/1.251620px 寬&#xff1a;高 接近 5:1&a…

PHP 三元 !empty 而不是評估為真或假 可用isset()

是否可以使用速記三元來檢查變量是否已設置&#xff0c;而不是是否計算結果為零或非零&#xff1f; 例如&#xff0c;我試過&#xff1a; $var 0; echo (string) $var ?: (string) false ?: 2;但由于前兩個表達式的計算結果均為“0”或“false”&#xff0c;因此顯示為 2。…

如何建立單元測試

快速開始 zixun-quickstart-mk3生成的項目已經配置好了基礎的BaseTest,各個測試類只需要繼承BaseTest就可以開始進行單元測試的編寫了。 如何進行Mock 為了保證獨立性和可重復執行,所有的外部依賴都需要進行Mock,SpringTest引入了Mockito作為單測Mock組件, Mickito官方文…

vue2中使用unocss,在ie11 不能正常顯示unocss的顏色設置

前景 ie11 不能正常顯示unocss的顏色設置&#xff1a;“–un-text-opacity: 1 !important; color: rgba(213,147,197,var(–un-text-opacity));” IE11 目前是無法支持 CSS 變量&#xff08;自定義屬性&#xff09;和 rgba 中使用的 var() 函數。 為了在 IE11 中使用 UnoCSS…

前端基礎(JavaScript語法)

前言&#xff1a;今天學習JavaScript的基本語法&#xff0c;包括變量、函數、對象、數組。 目錄 JavaScript 變量 函數 對象 數組 JavaScript 變量 定義變量 判斷語句 判斷等于&#xff1a; 判斷不等于&#xff1a;! if else語句 if(vavb){ console.log("…

springboot 整合swagger 入門 使用

1.前提 一定要看好版本。 Springboot ? Swagger各版本整理_swagger版本_qq_33334411的博客-CSDN博客 我的版本: <dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>3.0.0</ver…

前饋神經網絡正則化例子

直接看代碼&#xff1a; import torch import numpy as np import random from IPython import display from matplotlib import pyplot as plt import torchvision import torchvision.transforms as transforms mnist_train torchvision.datasets.MNIST(root…

Docker:Windows container和Linux container

點擊"Switch to Windows containers"菜單時&#xff1a; 提示 然后 實際上是運行&#xff1a;com.docker.admin.exe start-service

成集云 | 樂享問題邀請同步企微提醒 | 解決方案

源系統成集云目標系統 方案介紹 騰訊樂享是騰訊公司開發的一款企業社區化知識管理平臺&#xff0c;它提供了包括知識庫、問答、課堂、考試、活動、投票和論壇等核心應用。這個平臺凝聚了騰訊10年的管理經驗&#xff0c;可以滿足政府、企業和學校在知識管理、學習培訓、文化建…

【gitkraken】gitkraken自動更新問題

GitKraken 會自動升級&#xff01;一旦自動升級&#xff0c;你的 GitKraken 自然就不再是最后一個免費版 6.5.1 了。 在安裝 GitKraken 之后&#xff0c;在你的安裝目錄&#xff08;C:\Users\<用戶名>\AppData\Local\gitkraken&#xff09;下會有一個名為 Update.exe 的…