1. 程式人生 > >JAVA面試之JavaWeb部分(一)

JAVA面試之JavaWeb部分(一)

1、 forward 和 redirect 的區別

  • forward是伺服器的轉向,就是請求轉發, redirect是客戶端的跳轉, 就是重定向
  • forward瀏覽器的地址不會發生改變
  • forward是一次請求中完成。redirect是重新發起請求
請求轉發的特點:

1》只請求一次,而且屬於內部跳轉
2》位址列不會發生變化
3》不允許訪問外部資源
4》絕對路徑的/代表的是根目錄之後
5》效率偏高
請求轉發的語法:

request.getRequestDispacher(地址).forward(請求物件,響應物件)

重定向的特點:

1》整個過程發出兩次請求
2》位址列會發生變化,並跳轉到最新的頁面,位址列也是最新頁面的地址
3》允許訪問外部資源

,因為伺服器已經響應回了瀏覽器,而且瀏覽器也發出了新的請求,由於HTTP是無狀態的所以兩次請求沒有聯絡,第二次請求可以隨意去任何網頁
4》絕對路徑的/代表的是埠號之後
5》效率偏低,因為有兩次請求,相對來說效率低
重定向語法:
response.sendRedirect(地址)

2、JSP 和 Servlet的異同(傳送門

在這裡插入圖片描述

Servlet的由來

省略

JSP的由來

實際上它也是從Servlet繼承而來。只不過它在Servlet當中又新增/修改了一些方法,作了新的封裝。具體到Tomcat Web應用伺服器中,它通過一個多重繼承,分別從Java的HttpJspPage和HttpServlet兩個類那裡繼承和實現一些方法,然後封裝一個叫做HttpJspBase的類從而實現了一個通用化的JSP類,使用者在開發自己的JSP時,只需要從HttpJspBase繼承一個自己的類(如圖中Hello_jsp類),然後根據需要去實現相應的方法即可。

發展史和聯絡

JSP是Servlet的擴充套件,在沒有JSP之前,就已經出現了Servlet技術。Servlet是利用輸出流動態生成HTML頁面,包括每一個HTML標籤和每個在HTML頁面中出現的內容。
每一個JSP頁面都會轉換成Servlet,可以在Tomcat的apache-tomcat-7.0.37\work\Catalina\localhost\myapp\org\apache\jsp目錄下找到如下檔案:indexd.java和index.class。 這是jsp檔案對應生成的Servlet的java和位元組碼.class檔案

3、JSP的九大內建物件,七大動作指令,四個作用域和三個編譯指令
傳送門

Application,Config,Exception,Out,PageContent,Page,Request,Respsonse,Sesstion

常用的有Request和response的一個頁面重定向方法(上面的第一點)

request有幾個常用的方法:

  • request.setAttribute(String key, Object obj) :通過鍵值對來儲存資料,可以通過
  • request.getAttribute(String name)來獲取儲存的資料。
  • request.getParameter(String name):根據標籤的name屬性取得標籤value的值,一種值傳遞方式
  • request.setCharacterEncoding(“字符集”):設定字符集
  • request.getRequestDispatcher(“index.jsp”).forward(request, response):表示請求轉發,進行頁面跳轉,跳轉到某個jsp頁面,** 可傳值**

response的一個常用的方法:

  • response.sendRedirect(“main.jsp”):表示頁面的重定向,但是不能傳值,上個頁面的儲存的資料在經過response的頁面重定向後無法取到資料,所以它只是起一個頁面跳轉的功能

JSP的四大作用域

  • Application: 表示的是整個瀏覽器的範圍只要伺服器沒有關閉,它就一直存在比如網站的統計。
  • Sesstion: 表示建立一次會話,在關閉瀏覽器之前會話一直存在
  • Page: 當前頁面,跳出當前頁面之後就失效
  • request: 表示一次請求,在請求的範圍內有效。