1. 程式人生 > >javaweb常見易錯問題大匯總

javaweb常見易錯問題大匯總

tomcat服務 posit 傳遞 文本文件 瀏覽器支持 character 存在 表單 red

1、如何修改tomcat訪問端口? Answer: conf/server.xml

2、如何配置tomcat Manager訪問用戶? Answer: conf/tomcat-users.xml 主要應用調試管理上,上線系統中該功能一定關閉掉

3、發布工程到tomcat的三種方式 Answer: 虛擬目錄配置 1) 拷貝網站目錄到 tomcat/webapps (將網站目錄打成war包 zip格式壓縮包) 2) 配置conf/server.xml <Host>中配置 <Context path="" docBase="" /> 3) 獨立配置文件 conf下 新建Catalina目錄 在Catalina目錄下新建主機目錄 在目錄下新建xml(文件名就是虛擬目錄path)

4、在tomcat配置虛擬主機的步驟? Answer: 1) 在conf/server.xml 配置 <Host name="域名" appBase="虛擬主機位置" > 2) 修改c:/windows/system32/drivers/etc/hosts文件 * 配置hosts時,每行前面不能# 3) 為虛擬主機配置ROOT(三種方式)

5、tomcat啟動時端口被占用如何處理 Answer: * Tomcat服務器啟動時需要多個端口 1) 查看一下 哪個端口被占 8005 2) Fport 查看哪個端口被占用了 (DOS命令) netstat /ano tasklist 3) 通過任務管理關閉 (windows服務 httpd) ----- 任務管理器無法關閉服務,通過服務管理停止服務

6、Servlet的生命周期 Answer: init(ServletConfig) service(ServletRequest,ServletResponse) destroy 這三個方法什麽時間執行 init默認第一訪問時,加載Servlet調用 (配置<load-on-startup>修改隨服務器啟動加載) service 每次http請求,調用 ---- 多線程調用方式 destroy 服務器停止時 調用

7、編寫Servlet步驟 Answer: 1) class extends HttpServlet 2) 覆蓋doGet和doPost (如果代碼邏輯一樣,互相調用) 3) 配置web.xml <servlet> <servlet-mapping>

8、service和doGet、doPost的關系 Answer: service Servlet生命周期定義的 ,而實現類HttpServlet 定義doGet和doPost HttpServlet覆蓋了service方法,根據頁面請求方式調用相應doGet和doPost

9、為什麽建議覆蓋無參數init方法,而不覆蓋init(ServletConfig)方法 Answer: 有參數init對ServletConfig進行一些操作,在有參數init方法中調用了無參數init,為了簡化編程,直接覆蓋無參數init

10、ServletConfig和ServletContext有何區別 Answer: ServletConfig為每個Servlet提供一些初始化參數信息,ServletContext每個web應用只創建一個實例,它可以完成在多個web資源中共享數據,為整個web應用提供初始化信息,提供請求分發方法

11、轉發和重定向有何區別 Answer: 在javaweb開發中轉發和重定向都是資源訪問方式,轉發是在服務器內部進行的,只有一次請求和一次響應,客戶端路徑不會改變,轉發只能訪問本站點內部資源。 重定向 基於兩次請求和兩次響應,服務器通知客戶端重定向到某個資源,客戶端路徑改變,重定向也可以定向到本站點外部資源 request.getRequestDispatcher.forward response.sendRedirect 開發中應用:可以用重定向的地方(重定向本站點內)都可以使用轉發,當你需要通過請求傳遞數據時(request.setAttribute),必須使用轉發

12、常用狀態碼200、302、304、404、500都是什麽含義 Answer: 200 正常 302 重定向 304 緩存 404 找不到 500 服務器出錯

13、如何防止網頁盜鏈 Answer: 通過request.getHeader("referer")

14、如何設置網頁的過期時間 Answer: response.setDateHeader("expires",毫秒值); 過期時間毫秒值:當前時間+還有多長時間過期

15、response中setCharacterEncoding和setContentType有何區別 Answer: setCharacterEncoding設置響應中字符編碼,但是不會通知客戶端 setContentType 用來設置發送給客戶端數據文件類型,同時指定編碼格式,瀏覽器會根據指定編碼格式查看文件

16、編寫一個下載Servlet,下載中文名稱的文本文件註意事項? Answer: 文本文件是瀏覽器支持的類型,response.setHeader("content-disposition","attachment;filename=xxx"); 如果文件名稱為中文,在filename=xxx 拼接文件名稱時,需要對中文文件名 URLEncoder編碼

17、網站登錄註冊時為什麽需要驗證碼技術? Answer: 防止一些惡意×××

18、如何解決用戶提交請求數據的亂碼問題 Answer: post --- request.setCharacterEncoding get ---- 手動轉碼 URL/new String 、 修改tomcat默認解碼集 URIEncoding=xxx

19、http://url?name=zhangsan+lisi ----------使用request.getParameter("name")的獲得結果 Answer: zhangsan lisi

20、isCommitted有何含義,當其為true時,可以執行下面的哪個方法 forward、redirect、include Answer: isCommited用來判斷響應輸出內容是否已經到達客戶端 ,如果為true 不能進行forward redirect;可以進行include操作

1、為什麽要使用Cookie和Session技術 Answer: HTTP協議本身是無狀態的,服務器要管理客戶端狀態,Cookie和Session兩種管理客戶狀態技術

2、Cookie技術的原理? Answer: 1) 客戶端訪問服務器資源 2) 服務器指定向客戶端寫出Cookie (response) ---- 在http響應中包含cookie頭信息 3) 客戶端收到服務器返回cookie信息後,將cookie默認保存瀏覽器內存中 (通過設置cookie maxAge 瀏覽器將cookie保存到硬盤上) 4) 客戶端下次訪問服務器時,自動攜帶cookie信息

3、Cookie的生命周期? Answer: 默認Cookie是會話Cookie,當會話結束(瀏覽器關閉) Cookie清除 如果設置Cookie maxAge 就會根據設置時間,計算cookie過期時間,當cookie過期後,瀏覽器清除cookie

4、會話Cookie和持久Cookie區別 Answer: 會話cookie 內存裏,持久cookie 硬盤裏

5、什麽是第一方Cookie和第三方Cookie Answer: 第一方Cookie:訪問A 產生A Cookie 第三方Cookie:訪問A 產生B Cookie

6、Session和Cookie的區別 Answer: Cookie信息保存客戶端,Session信息保存到服務器端,Session技術基於Cookie實現,將session唯一標識sessionid以cookie形式寫回客戶端

7、Session的生命周期(Session什麽時間創建,什麽時間銷毀) Answer: 創建session : request.getSession 銷毀session : 1) 服務器關閉 2) session過期(服務器端過期) 3) session.invalidate session過期時間兩種設置方式:1) session.setMaxInactiveInterval(秒) 2) 配置web.xml <session-config> 單位分鐘

8、Session的實現原理 Answer: 為每個會話創建一個單獨session對象,每個對象有一個唯一的session id, session id以cookie形式寫回客戶端,從而完整session對象追蹤

9、關閉瀏覽器是否就銷毀了Session Answer: 不是 默認如果cookie沒有持久化,關閉瀏覽器銷毀客戶端內存中cookie(session id), 服務器session仍然存在!

10、禁用Cookie,Session就無法使用了嗎 Answer: URL重寫

11、session.removeAttribute 和 session.invalidate區別 Answer : removeAttribute 從當前session中移除一個數據,invalidate銷毀當前session對象,移除其中所有數據

12、防止表單防刷新原理(令牌機制) Answer: 客戶端表單生成時,生成一個唯一標示(令牌),同時保村令牌到session和表單隱藏元素內,當表單提交時,取出表單的令牌號和session中令牌號比對,一致則表單提交有效。session中令牌號使用一次後,就將清除。

13、一次性驗證碼的原理 Answer: 生成驗證碼時,同時保存驗證碼到session ,用戶提交驗證碼後,就和session中比較

14、JSP的運行原理? Answer: JSP在被訪問時,首先服務器(tomcat)加載, 由服務器翻譯成相應Servlet程序,編譯執行

15、JSP和Servlet區別? Answer: JSP是翻譯成Servlet執行的,Servlet是java程序,編寫java代碼比較方便,JSP支持HTML語法,所以主要用來生產動態網頁。

16、JSP的九個內置對象是什麽? Answer: page request session application response pageContext out config exception

17、JSP中的四種數據範圍 Answer: page request session application

18、out和response.getWriter區別 Answer: out向瀏覽器輸出,基於response.getWriter完成的。但是out和response.getWriter有著分別緩存區,向瀏覽器輸出內容時,先輸出response.getWriter內容,再輸出out內容

19、如何設置web工程的錯誤友好頁面 Answer: 錯誤頁面 :1、在JSP內部通過errorPage isErrorPage配置 2、在web.xml 配置<error-page> 設置錯誤頁面 JSP內部錯誤頁面只能解決500錯誤,web.xml還解決404錯誤

20、include指令和jsp:include區別 Answer: include指令 靜態引入,在JSP源碼階段引入,引入後一起完成翻譯過程 jsp:include 動態引入,在程序運行時,引入目標資源,引入目標資源運行結果

javaweb常見易錯問題大匯總