讀《java web整合開發》筆記

這次讀了一本很厚的《java web整合開發 王者歸來》做得一些筆記

JSP部分

1、編譯後的JSP跟HttpServlet一樣,都是javax.servlet.Servlet接口的子類,因此JSP是另一種形式的Servlet。
2、JSP包含的技術:javaBean、自定義標籤庫、EL表達式、JSTL、
3、在JavaEE5.0規範中,如果一個Web應用只含有JSP程序以及HTML頁面,圖片等靜態資源,則部署Web應用時不需要web.xml。
4、JSP先部署源代碼,後編譯爲.class文件。先部署後編譯。該.class文件便是JSP對應的Servlet。
5、JSP元素與模板數據:模板數據:HTML代碼、元素:Java(包括腳本與元素)。
6、JSP腳本:可以出現在JSP文件中的任何地方。
7、JSP聲明方法與屬性(全局變量)時,不能直接使用<% %>以及<%=%>聲明,而是使用<%! %>。
8、JSP中的return語句:return之後,後面的代碼便不再運行,因此注意保持輸出的HTML代碼的完整性。本例中輸出的HTML代碼便不完整,沒有</body>、</html>等結束標籤。
9、jsp指令格式:<@directive{attribute=value}* >;
10、在HTML文件中,空行是不影響顯示效果的。但是如果輸出的是XML文件,則可能會有問題,因爲某些XML解析器不允許XML文件前面有空行,如果有空行,則可能會解析出錯,這是必須禁止輸出空行。
11、include指令:格式:<%@include file="relativeURL"%>
12、<%@include file="relativeURL"%>與<%@include page="relativeURL"%>的不同點是:前者屬於先包含後編譯,後者則屬於先運行後包含。
13、taglib指令:包含兩個屬性:1、prefix標籤前綴;2、URL類庫地址
14、合理使用作用域(page,request、session、application),可以很輕鬆地實現豐富的效果。例如:統計訪問次數:session能夠記錄某個特定用戶都 訪問人數,而application可以記錄總的訪問人數。
15、在Servlet規範中,errorPage與isErrorpage被設計爲一種處理異常的機制,但實際應用中經常失效,更常用的辦法是使用Filter捕捉異常,或者使用Struts、Spring、WebWork等框架的ExceptionHandler機制捕捉異常。
16、JSP配置:同配置Servlet配置一樣,只是使用標籤不一樣。
17、JSP中支持EL表達式(語法:${})。EL表達式能方便地操作javaBean、設置集合等,並支持簡單的運算,但是EL表達之不能直接訪問普通的方法,以及靜態的屬性。

Servlet部分

1、<url-pattern>中允許使用通配符“*”,“?”,“*”代表任意長度的字符,“?”問號代表任意字符;
2、常量信息更傾向於寫在配置文件裏面,需求發生變化時,只需要修改配置文件就可以;
3、/WEB-INF文件夾有一個特性:任何人不能通過瀏覽器直接獲取下面的文件,即使他知道準確的位置及名稱;
4、<context-param>所有的Servlet都能夠讀取的參數,即文檔參數;
5、Servlet主要處理業務邏輯,例如讀取數據庫、權限檢查、業務處理等;
6、JDNI:java命名與目錄接口(java Naming and Directory Interface);
7、不經過FORM提交而直接輸入網址,獲取單擊連接的方式訪問Servlet也被看做是GET方式提交數據。
8、文件上傳,文件上傳以二進制提交,而非ASCll方式提交,因此Servlet不能用request.getparameter()方式獲取文件:<form action="servlet/UploadServlet" method="post" enctype="multipart/form-data"></form>
9、一些開源框架比如Struts集成了Apache Common FileUpload類庫來實現文件上傳
10、人性化的設計;
11、Servlet單實例多線程;
12、返回上一頁:onclick="history.go(-1)";
13、支持@PreConstruct與@PreDestroy註解的服務器需要支持到Servlet2.5及以上規範,Tomcat5.X僅支持Servlet2.4規範,因此不支持@PreConstruct與@PreDestroy。部署Web應用時,一定要留意,否則會遇到意想不到的程序錯誤;
14、當執行forward動作的時候不能有任何輸出到達客戶端,否則會拋出IllegalStateException。也就是在forward之前儘量不要使用out.println()語句像客戶端輸出結果。
15、狀態碼:1XX:信心狀態碼、2XX:正確狀態碼、3XX:重定向、4XX:請求錯誤、5XX:服務器錯誤;
16、當使用Redirect跳轉Servlet時,跳轉是在客戶端實現的,也就是說客戶端瀏覽器實際上請求了2次服務器,第一次獲取了重定向的網址,第2次訪問真實的地址;
17、自動刷新技術:response.setHeader("Refresh","1000,URL=baidu.com");
18、Servlet不是線程安全的,多線程讀寫會導致數據不同步問題。建議Servlet中的只讀屬性最好定義爲final類型;

過濾器(Filter)

1、Filter和Listener是Servlet規範裏的兩個高級特性,不用於處理客戶端請求,而是對request、response進行修改或者對context、session、request事件進行監聽。
2、doFilter( )方法中一定要執行chain.doFilter(request,response),否則request不會交給後面的Filter或者Servlet。
3、一個Web程序可以配置多個Filter,這多個Filter的執行順序有先後之分,規則是<filter-mapping>配置在前面的Filter執行要早於配置在後面的Filter,另外要注意,可能多個Filter會相互影響。
4、Filter可用於處理:權限驗證,日誌記錄,數據壓縮,數據加密,格式轉換,圖像處理等。
5、字符編碼Filter是java Web程序中做常用的Filter。基本上所有的java Web編碼方式都是用該Filter方式實現的。
6、日誌Filter的好處是可卸載,如果不需要記錄日誌,只需要將Filter配置註釋掉即可。
7、使用異常捕獲Filter後,Servlet中可以直接拋出業務異常,而不用擔心在客戶端顯示Tomcat自帶的異常信息頁面。
8、Filter是現在流行的AOP編程思想的一種體現。
9、不要侷限自己的思維,發揮想象,Filter能夠勝任的工作還有很多,而不僅僅是教材上面的例子。
10、Filter可能會相互影響,因爲他們有執行的先後順序之分。



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