日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

【转】Java学习---Java Web基础面试题整理

發(fā)布時(shí)間:2025/7/14 java 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【转】Java学习---Java Web基础面试题整理 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

【原文】https://www.toutiao.com/i6592359948632457731/

1、什么是Servlet?

可以從兩個(gè)方面去看Servlet:

a、API:有一個(gè)接口servlet,它是servlet規(guī)范中定義的用來處理客戶端請求的程序需要實(shí)現(xiàn)的頂級(jí)接口。

b、組件:服務(wù)器端用來處理客戶端請求的組件,需要在web.xml文件中進(jìn)行配置。

2、Servlet的生命周期,并說出Servlet和CGI的區(qū)別?

servlet有良好的生存期的定義,包括加載和實(shí)例化、初始化、處理請求以及服務(wù)結(jié)束。

這個(gè)生存期由javax.servlet.servlet接口中的init、service、destroy方法表達(dá)。

web容器加載servlet,生命周期開始。通過調(diào)用servlet的init()方法進(jìn)行servlet的初始化。通過調(diào)用service()方法實(shí)現(xiàn)根據(jù)請求的不同調(diào)用不同的do**()方法。結(jié)束服務(wù),web容器調(diào)用servlet的destroy()方法。

區(qū)別:

Servlet處于服務(wù)器進(jìn)程中,它通過多線程運(yùn)行service()方法,一個(gè)實(shí)例可以服務(wù)于多個(gè)請求,并且實(shí)例一般不會(huì)被銷毀;而CGI對(duì)每個(gè)請求都產(chǎn)生一個(gè)新的進(jìn)程,服務(wù)完成后就銷毀,所有效率低于Servlet

3、Servlet接口中有哪些方法?

Servlet接口定義了5個(gè)方法:

  • void init(ServletConfig config) throws ServletException
  • void service(ServletRequest req, ServletResponse resp) throws ServletException, java.io.IOException
  • void destory()
  • java.lang.String getServletInfo()
  • ServletConfig getServletConfig()
  • 4、get和post請求的區(qū)別?

    a、get是用來從服務(wù)器上獲取數(shù)據(jù),而post是用來向服務(wù)器傳遞數(shù)據(jù);

    b、get將表單中數(shù)據(jù)按照variable=value的形式,添加到action所指向的URL后面,并且兩者用"?"連接,變量之間用"&"連接;而post是將表單中的數(shù)據(jù)放在form的數(shù)據(jù)體中,按照變量與值對(duì)應(yīng)的方式,傳遞到action所指定的URL。

    c、get是不安全的,因?yàn)樵趥鬏斶^程中,數(shù)據(jù)是被放在請求的URL中;而post的所有操作對(duì)用戶來說都是不可見的。

    d、get傳輸?shù)臄?shù)據(jù)量小,這主要應(yīng)為受url長度限制;而post可以傳輸大量的數(shù)據(jù),所有上傳文件只能用post提交。

    e、get限制form表單的數(shù)據(jù)集必須為ASCII字符;而post支持整個(gè)IS01 0646字符集。

    f、get是form表單的默認(rèn)方法。

    5、什么情況下調(diào)用doGet()和doPost()?

    默認(rèn)情況是調(diào)用doGet()方法,JSP頁面中的Form表單的method屬性設(shè)置為post的時(shí)候,調(diào)用的為doPost()方法;為get的時(shí)候,調(diào)用deGet()方法。

    6、轉(zhuǎn)發(fā)(Forward)和重定向(Redirect)的區(qū)別?

    轉(zhuǎn)發(fā)是服務(wù)器行為,重定向是客戶端行為。

    轉(zhuǎn)發(fā)(Forword)

    通過RequestDispatcher對(duì)象的forward(HttpServletRequest request,HttpServletResponse response)方法實(shí)現(xiàn)的。RequestDispatcher可以通過HttpServletRequest 的getRequestDispatcher()方法獲得。例如下面的代碼就是跳轉(zhuǎn)到login_success.jsp頁面。

    request.getRequestDispatcher("login_success.jsp").forward(request, response);

    重定向(Redirect) 是利用服務(wù)器返回的狀態(tài)嗎來實(shí)現(xiàn)的。客戶端瀏覽器請求服務(wù)器的時(shí)候,服務(wù)器會(huì)返回一個(gè)狀態(tài)碼。服務(wù)器通過HttpServletRequestResponse的setStatus(int status)方法設(shè)置狀態(tài)碼。如果服務(wù)器返回301或者302,則瀏覽器會(huì)到新的網(wǎng)址重新請求該資源。

    1. 從地址欄顯示來說

    forward是服務(wù)器請求資源,服務(wù)器直接訪問目標(biāo)地址的URL,把那個(gè)URL的響應(yīng)內(nèi)容讀取過來,然后把這些內(nèi)容再發(fā)給瀏覽器。瀏覽器根本不知道服務(wù)器發(fā)送的內(nèi)容從哪里來的,所以它的地址欄還是原來的地址。

    redirect是服務(wù)端根據(jù)邏輯,發(fā)送一個(gè)狀態(tài)碼,告訴瀏覽器重新去請求那個(gè)地址,所以地址欄顯示的是新的URL。

    2. 從數(shù)據(jù)共享來說

    forward:轉(zhuǎn)發(fā)頁面和轉(zhuǎn)發(fā)到的頁面可以共享request里面的數(shù)據(jù).

    redirect:不能共享數(shù)據(jù).

    3. 從運(yùn)用地方來說

    forward:一般用于用戶登陸的時(shí)候,根據(jù)角色轉(zhuǎn)發(fā)到相應(yīng)的模塊.

    redirect:一般用于用戶注銷登陸時(shí)返回主頁面和跳轉(zhuǎn)到其它的網(wǎng)站等

    4. 從效率來說

    forward:高.

    redirect:低.

    7、自動(dòng)刷新(Refresh)

    自動(dòng)刷新不僅可以實(shí)現(xiàn)一段時(shí)間之后自動(dòng)跳轉(zhuǎn)到另一個(gè)頁面,還可以實(shí)現(xiàn)一段時(shí)間之后自動(dòng)刷新本頁面。Servlet中通過HttpServletResponse對(duì)象設(shè)置Header屬性實(shí)現(xiàn)自動(dòng)刷新例如:

    Response.setHeader("Refresh","1000;URL=http://localhost:8080/servlet/example.htm");

    其中1000為時(shí)間,單位為毫秒。URL指定就是要跳轉(zhuǎn)的頁面(如果設(shè)置自己的路徑,就會(huì)實(shí)現(xiàn)沒過一秒自動(dòng)刷新本頁面一次)

    8、Servlet與線程安全

    Servlet不是線程安全的,多線程并發(fā)的讀寫會(huì)導(dǎo)致數(shù)據(jù)不同步的問題。 解決的辦法是盡量不要定義name屬性,而是要把name變量分別定義在doGet()和doPost()方法內(nèi)。雖然使用synchronized(name){}語句塊可以解決問題,但是會(huì)造成線程的等待,不是很科學(xué)的辦法。

    注意:多線程的并發(fā)的讀寫Servlet類屬性會(huì)導(dǎo)致數(shù)據(jù)不同步。但是如果只是并發(fā)地讀取屬性而不寫入,則不存在數(shù)據(jù)不同步的問題。因此Servlet里的只讀屬性最好定義為final類型的。

    9、JSP和Servlet有哪些相同點(diǎn)和不同點(diǎn),他們之間的聯(lián)系是什么?

    JSP是Servlet的擴(kuò)展,本質(zhì)上是Servlet的簡易方式,更強(qiáng)調(diào)應(yīng)用的外表表達(dá)。JSP編譯后是"類Servlet"。Servlet和JSP最主要的不同點(diǎn)在于,Servlet的應(yīng)用邏輯是在java文件中,并且完全從表示層中的HTML里分離開來。而JSP的情況是java和HTML可以組合成一個(gè)擴(kuò)展名為.jsp的文件。JSP偏重于視圖,Servlet偏重于業(yè)務(wù)邏輯。

    10、JSP工作原理:

    JSP是一種Servlet,但是與HttpServlet的工作方式不太一樣。HttpServlet是先由源代碼編譯為class文件后部署到服務(wù)器下,為先編譯后部署。而JSP則是先部署后編譯。JSP會(huì)在客戶端第一次請求JSP文件時(shí)被編譯為HttpJspPage類(接口Servlet的一個(gè)子類)。該類會(huì)被服務(wù)器臨時(shí)存放在服務(wù)器工作目錄里面。下面通過實(shí)例給大家介紹。

    工程JspLoginDemo下有一個(gè)名為login.jsp的Jsp文件,把工程第一次部署到服務(wù)器上后訪問這個(gè)Jsp文件,我們發(fā)現(xiàn)這個(gè)目錄下多了下圖這兩個(gè)東東。

    .class文件便是JSP對(duì)應(yīng)的Servlet。編譯完畢后再運(yùn)行class文件來響應(yīng)客戶端請求。以后客戶端訪問login.jsp的時(shí)候,Tomcat將不再重新編譯JSP文件,而是直接調(diào)用class文件來響應(yīng)客戶端請求。

    由于JSP只會(huì)在客戶端第一次請求的時(shí)候被編譯 ,因此第一次請求JSP時(shí)會(huì)感覺比較慢,之后就會(huì)感覺快很多。如果把服務(wù)器保存的class文件刪除,服務(wù)器也會(huì)重新編譯JSP。

    開發(fā)Web程序時(shí)經(jīng)常需要修改JSP。Tomcat能夠自動(dòng)檢測到JSP程序的改動(dòng)。如果檢測到JSP源代碼發(fā)生了改動(dòng)。Tomcat會(huì)在下次客戶端請求JSP時(shí)重新編譯JSP,而不需要重啟Tomcat。這種自動(dòng)檢測功能是默認(rèn)開啟的,檢測改動(dòng)會(huì)消耗少量的時(shí)間,在部署Web應(yīng)用的時(shí)候可以在web.xml中將它關(guān)掉。

    11、Request對(duì)象的主要方法有哪些?

    • setAttribute(String name,Object):設(shè)置名字為name的request 的參數(shù)值
    • getAttribute(String name):返回由name指定的屬性值
    • getAttributeNames():返回request 對(duì)象所有屬性的名字集合,結(jié)果是一個(gè)枚舉的實(shí)例
    • getCookies():返回客戶端的所有 Cookie 對(duì)象,結(jié)果是一個(gè)Cookie 數(shù)組
    • getCharacterEncoding() :返回請求中的字符編碼方式 = getContentLength() :返回請求的 Body的長度
    • getHeader(String name) :獲得HTTP協(xié)議定義的文件頭信息
    • getHeaders(String name) :返回指定名字的request Header 的所有值,結(jié)果是一個(gè)枚舉的實(shí)例
    • getHeaderNames() :返回所以request Header 的名字,結(jié)果是一個(gè)枚舉的實(shí)例
    • getInputStream() :返回請求的輸入流,用于獲得請求中的數(shù)據(jù)
    • getMethod() :獲得客戶端向服務(wù)器端傳送數(shù)據(jù)的方法
    • getParameter(String name) :獲得客戶端傳送給服務(wù)器端的有 name指定的參數(shù)值
    • getParameterNames() :獲得客戶端傳送給服務(wù)器端的所有參數(shù)的名字,結(jié)果是一個(gè)枚舉的實(shí)例
    • getParameterValues(String name):獲得有name指定的參數(shù)的所有值
    • getProtocol():獲取客戶端向服務(wù)器端傳送數(shù)據(jù)所依據(jù)的協(xié)議名稱
    • getQueryString() :獲得查詢字符串
    • getRequestURI() :獲取發(fā)出請求字符串的客戶端地址
    • getRemoteAddr():獲取客戶端的 IP 地址
    • getRemoteHost() :獲取客戶端的名字
    • getSession([Boolean create]) :返回和請求相關(guān) Session
    • getServerName() :獲取服務(wù)器的名字
    • getServletPath():獲取客戶端所請求的腳本文件的路徑
    • getServerPort():獲取服務(wù)器的端口號(hào)
    • removeAttribute(String name):刪除請求中的一個(gè)屬性

    12、request.getAttribute()和 request.getParameter()有何區(qū)別?

    a、request.getParameter()獲取的類型是String;request.getAttribute()獲取的類型是Object。

    b、request.getPrameter()獲取的是POST/GET傳遞的參數(shù)值和URL中的參數(shù);request.getAttribute()獲取的是對(duì)象容器中的數(shù)據(jù)值/對(duì)象。

    c、request.setAttribute()和request.getAttribute()可以發(fā)送、接收對(duì)象;request.getParamter()只能接收字符串,官方不開放request.setParamter()(也就是沒有這個(gè)方法)。

    setAttribute()和getAttribute()的傳參原理:

    setAttribute()是應(yīng)用服務(wù)器把這個(gè)對(duì)象放在該頁面所對(duì)應(yīng)的一塊內(nèi)存中去,當(dāng)你的頁面服務(wù)器重定向到另外一個(gè)頁面時(shí),應(yīng)用服務(wù)器會(huì)把這塊內(nèi)存拷貝到另一個(gè)頁面所對(duì)應(yīng)的那塊內(nèi)存中。這個(gè)就可以通過getAttribute()獲取到相應(yīng)的參數(shù)值或者對(duì)象。

    13、JSP中動(dòng)態(tài)include和靜態(tài)include的區(qū)別?

    a、靜態(tài)include:語法:<%@ include file="文件名" %>,相當(dāng)于復(fù)制,編輯時(shí)將對(duì)應(yīng)的文件包含進(jìn)來,當(dāng)內(nèi)容變化時(shí),不會(huì)再一次對(duì)其編譯,不易維護(hù)。

    b、動(dòng)態(tài)include:語法:<jsp:include page="文件名">,能夠自動(dòng)檢查被包含文件,當(dāng)客戶端對(duì)JSP文件進(jìn)行請求時(shí),會(huì)重新將對(duì)應(yīng)的文件包含進(jìn)來,進(jìn)行實(shí)時(shí)的更新。

    14、JSP有哪些內(nèi)置對(duì)象?作用分別是什么?

    JSP一共有9個(gè)內(nèi)置對(duì)象:

  • request:負(fù)責(zé)得到客戶端請求的信息,對(duì)應(yīng)類型:javax.servlet.http.HttpServletRequest
  • response:負(fù)責(zé)向客戶端發(fā)出響應(yīng),對(duì)應(yīng)類型:javax.servlet.http.HttpServletResponse
  • session:負(fù)責(zé)保存同一客戶端一次會(huì)話過程中的一些信息,對(duì)應(yīng)類型:javax.servlet.http.httpsession
  • out:負(fù)責(zé)管理對(duì)客戶端的輸出,對(duì)應(yīng)類型:javax.serlvet.jsp.jspwriter
  • application:表示整個(gè)應(yīng)用環(huán)境的信息,對(duì)應(yīng)類型:javax.servlet.servletcontext
  • config:表示ServletConfig,對(duì)應(yīng)類型:javax.servlet.servletconfig
  • exception:表示頁面中發(fā)生的異常,可以通過它獲得頁面異常信息,對(duì)應(yīng)類型:java.lang.exception
  • pagecontext:表示這個(gè)JSP頁面上下文,對(duì)應(yīng)類型:javax.servlet.jsp.pagecontext
  • page:表示當(dāng)前JSP頁面本身。
  • 15、JSP有哪些動(dòng)作?作用分別是什么?

    JSP一共有以下6中基本動(dòng)作:

  • JSP:include (當(dāng)頁面被請求的時(shí)候引入一個(gè)文件)
  • JSP:forward (將請求轉(zhuǎn)到另一個(gè)頁面)
  • JSP:useBean (獲得JavaBean的一個(gè)實(shí)例)
  • JSP:setProperty (設(shè)置JavaBean的屬性)
  • JSP:getProperty (獲得JavaBean的屬性)
  • JSP:plugin (根據(jù)瀏覽器類型為Java插件生成object或者embed兩種標(biāo)記)
  • 16、JSP常用指令有哪些?

    page、include、taglib

    a、page指令:定義頁面的一些屬性。

    常用屬性:

    contentType="text/html;charset=utf-8"; 向?yàn)g覽器端輸出數(shù)據(jù)的編碼

    pageEncoding="utf-8"; JSP編譯成java文件時(shí)所用的編碼

    session="true" 是否自動(dòng)創(chuàng)建session

    b、include指令:引入一個(gè)靜態(tài)的JSP頁面

    c、taglib指令:引入一個(gè)標(biāo)簽庫

    17、講解JSP中的四種作用域

    JSP中的四種作用域包括page、request、session和application,具體來說:

    a、page是代表一個(gè)頁面相關(guān)的對(duì)象和屬性。一個(gè)頁面由一個(gè)編譯好的java servlet類(可以帶有include指令,但不可以帶有include動(dòng)作)表示。這既包括servlet又包括編譯成servlet的jsp頁面。

    b、request是代表與web客戶機(jī)發(fā)出的一個(gè)請求相關(guān)的對(duì)象和屬性。一個(gè)請求可能跨越多個(gè)頁面,涉及多個(gè)web組件(由于forware指令和include動(dòng)作的關(guān)系)

    c、session是代表與用于某個(gè)web客戶機(jī)的一個(gè)用戶體驗(yàn)相關(guān)的對(duì)象和屬性。一個(gè)web回話也可以經(jīng)常跨域多個(gè)客戶機(jī)請求。

    d、application是代表與整個(gè)web應(yīng)用程序相關(guān)的對(duì)象和屬性。這實(shí)質(zhì)上是跨域整個(gè)web應(yīng)用程序,包括多個(gè)頁面、請求和回話的一個(gè)全局作用域。

    18、如何實(shí)現(xiàn)JSP或Servlet的單線程模式?

    在JSP中使用page指令進(jìn)行設(shè)置,具體代碼如下:

    <%@page isThreadSafe="false"%>

    對(duì)于Servlet,可以讓自定義的Servlet實(shí)現(xiàn)SingleThreadModel標(biāo)識(shí)接口。

    說明:如果將JSP或Servlet設(shè)置成單線程工作模式,會(huì)導(dǎo)致每個(gè)請求創(chuàng)建一個(gè)Servlet實(shí)例,這種實(shí)踐將導(dǎo)致嚴(yán)重的性能問題(服務(wù)器的內(nèi)存壓力很大,還會(huì)導(dǎo)致頻繁的垃圾回收),所以通常情況下并不會(huì)這么做。

    19、JSP亂碼如何解決?

    a、JSP頁面亂碼:<%@page contentType="text/html;charset=utf-8" %>

    b、表單提交時(shí)出現(xiàn)亂碼:request.setCharacterEncoding("utf-8");

    c、數(shù)據(jù)庫出現(xiàn)亂碼:jdbc:mysql://localhost:3306:/user?useSSL=false&useUnicode=true&characterEncoding=utf-8;

    其實(shí)我一般的處理的方法就是配置一個(gè)過濾器對(duì)每個(gè)JSP頁面進(jìn)行字符集處理。

    20、實(shí)現(xiàn)會(huì)話跟蹤的技術(shù)有哪些?

    1. 使用Cookie

    向客戶端發(fā)送Cookie

    Cookie c =new Cookie("name","value"); //創(chuàng)建Cookie

    c.setMaxAge(60*60*24); //設(shè)置最大時(shí)效,此處設(shè)置的最大時(shí)效為一天

    response.addCookie(c); //把Cookie放入到HTTP響應(yīng)中

    從客戶端讀取Cookie

    String name ="name";

    Cookie[]cookies =request.getCookies();

    if(cookies !=null){

    for(int i= 0;i<cookies.length;i++){

    Cookie cookie =cookies[i];

    if(name.equals(cookis.getName()))

    //something is here.

    //you can get the value

    cookie.getValue();

    }

    }

    優(yōu)點(diǎn): 數(shù)據(jù)可以持久保存,不需要服務(wù)器資源,簡單,基于文本的Key-Value

    缺點(diǎn): 大小受到限制,用戶可以禁用Cookie功能,由于保存在本地,有一定的安全風(fēng)險(xiǎn)。

    2. URL 重寫

    在URL中添加用戶會(huì)話的信息作為請求的參數(shù),或者將唯一的會(huì)話ID添加到URL結(jié)尾以標(biāo)識(shí)一個(gè)會(huì)話。

    優(yōu)點(diǎn): 在Cookie被禁用的時(shí)候依然可以使用

    缺點(diǎn): 必須對(duì)網(wǎng)站的URL進(jìn)行編碼,所有頁面必須動(dòng)態(tài)生成,不能用預(yù)先記錄下來的URL進(jìn)行訪問。

    3. 隱藏的表單域

    <input type="hidden" name ="session" value="..."/>

    優(yōu)點(diǎn): Cookie被禁時(shí)可以使用

    缺點(diǎn): 所有頁面必須是表單提交之后的結(jié)果。

    4. HttpSession

    在所有會(huì)話跟蹤技術(shù)中,HttpSession對(duì)象是最強(qiáng)大也是功能最多的。當(dāng)一個(gè)用戶第一次訪問某個(gè)網(wǎng)站時(shí)會(huì)自動(dòng)創(chuàng)建 HttpSession,每個(gè)用戶可以訪問他自己的HttpSession。可以通過HttpServletRequest對(duì)象的getSession方 法獲得HttpSession,通過HttpSession的setAttribute方法可以將一個(gè)值放在HttpSession中,通過調(diào)用 HttpSession對(duì)象的getAttribute方法,同時(shí)傳入屬性名就可以獲取保存在HttpSession中的對(duì)象。與上面三種方式不同的 是,HttpSession放在服務(wù)器的內(nèi)存中,因此不要將過大的對(duì)象放在里面,即使目前的Servlet容器可以在內(nèi)存將滿時(shí)將HttpSession 中的對(duì)象移到其他存儲(chǔ)設(shè)備中,但是這樣勢必影響性能。添加到HttpSession中的值可以是任意Java對(duì)象,這個(gè)對(duì)象最好實(shí)現(xiàn)了 Serializable接口,這樣Servlet容器在必要的時(shí)候可以將其序列化到文件中,否則在序列化時(shí)就會(huì)出現(xiàn)異常。

    21、Cookie和Session的的區(qū)別?

  • 由于HTTP協(xié)議是無狀態(tài)的協(xié)議,所以服務(wù)端需要記錄用戶的狀態(tài)時(shí),就需要用某種機(jī)制來識(shí)具體的用戶,這個(gè)機(jī)制就是Session.典型的場景比如購物車,當(dāng)你點(diǎn)擊下單按鈕時(shí),由于HTTP協(xié)議無狀態(tài),所以并不知道是哪個(gè)用戶操作的,所以服務(wù)端要為特定的用戶創(chuàng)建了特定的Session,用用于標(biāo)識(shí)這個(gè)用戶,并且跟蹤用戶,這樣才知道購物車?yán)锩嬗袔妆緯_@個(gè)Session是保存在服務(wù)端的,有一個(gè)唯一標(biāo)識(shí)。在服務(wù)端保存Session的方法很多,內(nèi)存、數(shù)據(jù)庫、文件都有。集群的時(shí)候也要考慮Session的轉(zhuǎn)移,在大型的網(wǎng)站,一般會(huì)有專門的Session服務(wù)器集群,用來保存用戶會(huì)話,這個(gè)時(shí)候 Session 信息都是放在內(nèi)存的,使用一些緩存服務(wù)比如Memcached之類的來放 Session。
  • 思考一下服務(wù)端如何識(shí)別特定的客戶?這個(gè)時(shí)候Cookie就登場了。每次HTTP請求的時(shí)候,客戶端都會(huì)發(fā)送相應(yīng)的Cookie信息到服務(wù)端。實(shí)際上大多數(shù)的應(yīng)用都是用 Cookie 來實(shí)現(xiàn)Session跟蹤的,第一次創(chuàng)建Session的時(shí)候,服務(wù)端會(huì)在HTTP協(xié)議中告訴客戶端,需要在 Cookie 里面記錄一個(gè)Session ID,以后每次請求把這個(gè)會(huì)話ID發(fā)送到服務(wù)器,我就知道你是誰了。有人問,如果客戶端的瀏覽器禁用了 Cookie 怎么辦?一般這種情況下,會(huì)使用一種叫做URL重寫的技術(shù)來進(jìn)行會(huì)話跟蹤,即每次HTTP交互,URL后面都會(huì)被附加上一個(gè)諸如 sid=xxxxx 這樣的參數(shù),服務(wù)端據(jù)此來識(shí)別用戶。
  • Cookie其實(shí)還可以用在一些方便用戶的場景下,設(shè)想你某次登陸過一個(gè)網(wǎng)站,下次登錄的時(shí)候不想再次輸入賬號(hào)了,怎么辦?這個(gè)信息可以寫到Cookie里面,訪問網(wǎng)站的時(shí)候,網(wǎng)站頁面的腳本可以讀取這個(gè)信息,就自動(dòng)幫你把用戶名給填了,能夠方便一下用戶。這也是Cookie名稱的由來,給用戶的一點(diǎn)甜頭。所以,總結(jié)一下:Session是在服務(wù)端保存的一個(gè)數(shù)據(jù)結(jié)構(gòu),用來跟蹤用戶的狀態(tài),這個(gè)數(shù)據(jù)可以保存在集群、數(shù)據(jù)庫、文件中;Cookie是客戶端保存用戶信息的一種機(jī)制,用來記錄用戶的一些信息,也是實(shí)現(xiàn)Session的一種方式。
  • 22、什么是Tomcat?

    Tomcat是一種web服務(wù)器,java編寫的web項(xiàng)目可以部署在上面,用戶在客戶端請求時(shí),都是將請求發(fā)到Tomcat上,Tomcat在將請求發(fā)到對(duì)應(yīng)的項(xiàng)目上。

    23、 詳細(xì)描述MVC

    基于java的web應(yīng)用系統(tǒng)采用MVC設(shè)計(jì)模型,即用Model(模型)、View(視圖)和Controller(控制)分離設(shè)計(jì),這是目前web應(yīng)用服務(wù)系統(tǒng)的主流設(shè)置方向。

    Model:處理業(yè)務(wù)邏輯的模塊。

    View:負(fù)責(zé)頁面顯示,顯示Model的處理結(jié)果給用戶,主要實(shí)現(xiàn)數(shù)據(jù)到頁面的轉(zhuǎn)換過程。

    Controller:負(fù)責(zé)每個(gè)請求的分發(fā),把Form數(shù)據(jù)傳遞給Model進(jìn)行處理,處理完成后,把處理結(jié)果返回給相應(yīng)的View顯示給用戶。

    轉(zhuǎn)載于:https://www.cnblogs.com/ftl1012/p/9584821.html

    總結(jié)

    以上是生活随笔為你收集整理的【转】Java学习---Java Web基础面试题整理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。