Java Web不能不懂的知識

一、傳說中java的class文件能夠一次編譯處處運行,那麼源代碼採用GBK仍是UTF-8會有影響麼?

不會有影響。java

由於Java源代碼經過編譯後,生成的class文件爲字節碼。它能夠被看做是包含一個執行程序的二進制文件,須要在JVM進行執行。web

而GBK、UTF-8等爲字符編碼格式,針對的是字符,如Java源代碼,中文,英文等文字。spring

二、若是lib有2個不一樣版本的jar,例如spring2.5,spring3,還能安心幹活麼?

可能會引發jar包衝突。api

Tomcat下Jar包加載順序:

1. $java_home/lib 目錄下的java核心api 

2. $java_home/lib/ext 目錄下的java擴展jar包

3. java -classpath/-Djava.class.path所指的目錄下的類與jar包

4. $CATALINA_HOME/common目錄下按照文件夾的順序從上往下依次加載

5. $CATALINA_HOME/server目錄下按照文件夾的順序從上往下依次加載

6. $CATALINA_BASE/shared目錄下按照文件夾的順序從上往下依次加載

7. 咱們的項目路徑/WEB-INF/classes下的class文件

8. 咱們的項目路徑/WEB-INF/lib下的jar文件

在同一個文件夾下,jar包是按順序從上到下依次加載
由ClassLoader的雙親委託模式加載機制咱們能夠知道,假設兩個包名和類名徹底相同的class文件再也不同一個
jar包,若是一個class文件已經被加載java虛擬機裏了,那麼後面的相同的class文件就不會被加載了。

三、若是classes有個class文件不當心被打到jar包去,遺忘在lib目錄,之後更新classes會不會炸了?

不會有影響,由於class文件會先加載。當新的class文件更新至classes文件夾內之後會被先讀取。tomcat

四、log4j.xml放到conf目錄會有問題麼? 有什麼區別沒有?

log4j啓動時,默認會尋找source folder下的log4j.xml配置文件,若沒有,會尋找log4j.properties文件,加載配置。配置文件放置位置正確,不用在程序中手動加載log4j配置文件。若是將配置文件放到了config文件夾下,在build Path中設置下就行了。服務器

讀取路徑改成:異步

PropertyConfigurator.configure("config/log4j.properties");jsp

五、有人寫了個Niubility的類放在yy.war, 爲何我就調用不到呢,明明同一個貓上跑的?

Tomcat不支持跨應用調用類,可是容許跨應用訪問數據。在tomcat下,context元素有一個crossContext屬性,若是配置爲true,則能夠實如今同一個tomcat下的多個web應用之間實現ServletContext對象訪問。ui

六、據說有servlet3支持異步可厲害了,但放個demo到tomcat6會掛了,我lib明明有高大上的servlet-api.jar?

七、據說web.xml裏邊能夠配置監聽器listener,但它監聽什麼?

Servlet的監聽器Listener,它實現了javax.servlet.ServletContextListener 接口,由服務器端程序實現相關業務邏輯,包括作一些初始化的內容添加工做、設置一些基本的內容、好比一些參數或者是一些固定的對象等等。編碼

隨web應用的啓動而啓動,只初始化一次,隨web應用的中止而銷燬。也就是說,它能捕捉到服務器的啓動和中止,在啓動和中止觸發裏面的方法作相應的操做!
它必須在web.xml 中配置才能使用。

web.xml 的加載順序是:context-param -> listener -> filter -> servlet

八、爲何不建議把jsp放在war的根目錄下?

由於war的根目錄下文件能夠直接經過url直接進行訪問。那麼用戶能夠在不具有權限的狀況下,能夠對jsp文件進行訪問,看到部分相關內容。

相關文章
相關標籤/搜索