Java開發面試題-Java Web篇

轉自:iyangdi

1、Tomcat優化經驗

1、去掉對web.xml的監視,把jsp提前編輯成Servlet

有富餘物理內存情況下,加大tmocat使用的jvm的內存

2、服務器資源配置
1)CPU的性能,在高併發的情況下,直接影響處理速度
2)大數據處理下,對內存需求大,可以用-Xmx -Xms -XX:MaxPermSize等對內存不同功能塊進行劃分
經常性內存不足,會導致經常性full GC,影響性能

3)對大數據文件進行磁盤讀取,磁盤常常是性能瓶頸,最好用緩存

3、利用緩存和壓縮
1)靜態頁面最好緩存,這樣不用每次從磁盤訪問
nginx可以做緩存服務器,緩存圖片、css、js等資源,減少後端tomcat訪問

2)開啓gzip壓縮能加快網絡傳輸速度,可以將壓縮工作交給前端Ngix來完成,減少tmocat工作

4、採用集羣

橫向擴展,組建tomcat集羣能有效提升性能

5、優化tomcat的參數

主要是優化連接配置,關閉客戶端dns等


2、Http中Get和Post的區別

http://blog.csdn.net/yipiankongbai/article/details/24025633
Http定義了與服務器交互的不同方法
最基本的是:GET\POST\PUT\DELETE\HEAD
GET\HEAD是安全的方法,一般只是請求服務器的數據
而POST是不安全的,因爲可能修改服務器的數據

3、什麼是Servlet

sevelet有良好的生命週期
包括:加載、實例化、初始化、處理請求、服務結束

其生命週期由javax.servlet.Servlet接口的init、service、destroy表達


是開發動態web資源的技術
通常將實現了servlet的類叫Servlet
步驟:
1、編寫java類,實現servlet接口
2、將該類部署到web服務器

Sevlet運行過程:
它由web服務器調用,當web服務器接收到客戶端的訪問請求
1、web服務器檢查是否已經裝載並創建了該Servlet的實例對象
2、若沒有,則裝載並創建Servlet實例
3、調用實例對象的init()
4、創建一個用與封裝HTTP請求消息的HttpServletRequest對象和
相應消息對象HttpServletResponse,再調用service(),將請求和響應傳入
5、web應用程序被停止or重啓前,Servlet引擎將卸載Servlet,在卸載前調用destroy()

瀏覽器發送一個HTTP請求,請求被Web容器分配給特定的Servlet處理
Servletz本質就是擁有一系列可以處理HTTP請求的方法的對象,常見方法doGet()/doPost()
web容器包含多個Servlet,特定的HTTP請求由那個Servlet處理由web.xml決定

Sevlet生命週期:
1、web容器加載servlet,開始生命週期
2、調用init()初始化
3、調用service(),該方法會根據請求的不同調用不同的do**()
4、結束服務時,調用destroy()

實現:

extends HttpServlet


4、forward()和redirect()

http://blog.csdn.net/tenor/article/details/4077079
forward():
容器中控制權的轉向,是服務器內部重定向
他是直接讀取url中的內容顯示,所以地址欄地址不會變
其request值不變
更高效、便於隱藏實際鏈接

redirect():
告訴客戶端,重新發送請求鏈接,地址欄顯示轉發後的地址
等於客戶端會發送兩次request
若要請求跳轉別的服務器資源,只能用此

Request範圍的對象,能被forward訪問,不能被redirect訪問

5、request.getAttribute() 和 request.getParameter() 區別?

http://blog.csdn.net/zhaohongjuan/article/details/53641160
getParameter:
取得的是通過容器的實現來取得類似Post、get方式傳入的數據取得的是通過容器的實現來取得類似Post、get方式傳入的數據
數據從web客戶端流轉到服務端

getAttribute:
在web容器內部流轉,僅僅是請求處理階段
要get,先要set
在進行轉發的時候,可以通過設置attribute來實現Request範圍的數據共享

6、頁面間對象傳遞的方法

http://www.jb51.net/article/105355.htm
request
session
application
cookie

url(url參數)
form(提交表單)

url/form:只能傳字符串
request/session/application/cookie:可傳對象

url/request:在請求頁面獲得數據
session/application/cookie:多頁面共享

session/cookie:保存用戶相關信息
session:保存到服務器內存
cookie:保存到客戶端內存

application:保存所有用戶相關的信息,保存在服務器內存

7、JSP vs Sevlet

JSP:
1、是Sevlet的擴展,本質是Sevlet的簡易形式
2、編譯後是"類servlet"
3、java和html組合成.jsp的文件

jsp側重視圖
Servlet側重控制邏輯

8、MVC 的各個部分都有那些技術來實現?如何實現?

Model:業務邏輯,通過JavaBean,EJB組件實現
View:表示層,JSP頁面產生
Controller:控制層,一般是一個Servlet
以上組件可以交互和重用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章