摘要:圖片抓取上本項目主要講述項目的搭建和啟動過程,為以后繼續圖片抓取的業務展示做基礎。用于處理請求和響應的攔截處理。這樣相比容器直接發到處理,大大減少了代碼重復工作而且方便統一管理。上下文關系從上圖可以看出主要在和兩部分做工作。
【圖片抓取】003-JAVA WEB(上)
本項目主要講述java web項目的搭建和啟動過程,為以后繼續圖片抓取的業務展示做基礎。項目中采用tomcat+spring mvc+spring jdbc+mysql,以最簡單的方式搭建;其實java web也在不停的發展,使用spring boot可能會更簡單有效的搭建web,結合nodejs實現前后臺分離,再較大項目中比較省力。spring boot再方便其實也沒有脫離傳統web的工作機制,配合本項目簡單描述下web的啟動過程。
web 容器啟動
tomcat可以簡單分3個階段,啟動初始化->服務運行(接收,響應http請求)->服務結束;web服務的主體就是接收響應http請求既上右邊部分(filter+servlet);有時候我們可能要在服務運行前做一些準備工作,讀取配置文件,啟動一些非http服務線程等;有時候還需要在web服務停止時做一些事情,釋放資源等等,這些就要在啟動初始化和服務結束階段能執行我們的代碼,這2個階段都要用到listener。
從web.xml我們可以看出,配置了ContextLoaderListener。需要實現2個方法contextInitialized(ServletContextEvent sce)和contextDestroyed(ServletContextEvent sce),這2個方法分別會在tomcat啟動和結束時執行。如果需要的話,通過方法參數ServletContextEvent,我們可以把listener的處理結果放到ServletContextEvent或者從ServletContextEvent拿取數據,通過ServletContextEvent可以和servlet進程做數據交互。
2. filterFilter用于處理http請求和響應的攔截處理。http請求可以粗略分為3個階段,
* web容器,接收到http請求后,根據web.xml里配置的路徑,匹配Filter和servlet。 * Filter處理鏈,容器把http請求轉入filter處理,filter可以在真正業務處理前做預處理,像日志管理,權限管理等公共的http處理; * http業務數據處理,servlet真正的業務處理,這里只關心業務邏輯,系統公共的處理,我不關心,加入后面權限認證規則變化,或增加別的處理規則,在filter做;業務邏輯不動,我不動。
這樣相比容器直接發到servlet處理,大大減少了代碼重復工作而且方便統一管理。
servlet是http的業務處理核心,包括spring mvc也是在servlet里,封裝實現自己的處理流程。
spring 上下文關系
從上圖可以看出spring主要在listener和servlet兩部分做工作。spring mvc對應的分了兩大類,既controller標簽和非controller的其它標簽(servcie,component等);之前項目上看到有人寫的web.xml,經常看到 contextloaderlistener和dispatcher都是匹配 spring-*.xml,或者xml配置掃描時,沒有區分controller;這樣會導致部分spring bean初始化2次,產生一些不容易發現bug。
結合web容器啟動,spring會首先實例化contextloaderlistener,把service,component,或者xml里指定的bean;contextloaderlistener啟動完成后,再初始化dispatcher servlet;dispatcher servlet繼承contextloaderlistener實例化的bean,這里推測這些bean也是通過ServletContextEvent傳入的,具體可看下源碼,看源碼,看源碼,所有的匹配dispatch servlet的配置的url都走向了這里,可以理解成web容器里又放了一個容器,這樣spring就可以自定義的擴展,細化http請求的階段,像interceptor。
日志打印執行filter和interceptor示例
示例代碼
不知這幾篇文章是否對大家有所幫助,希望各位看官多提意見,多多交流。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/69068.html
摘要:無論對開發人員或者測試人員來說,都是非常有用的工具。只顯示指定的多個顯示多個相關的情況下,使用英文分號隔開,見下圖。使用瀏覽器獲取圖片屬性需要注意的是刷新是使用強制刷新,這樣會重新請求資源。 ...
摘要:在這之前,還是有必要對一些概念超輕量級反爬蟲方案后端掘金前言爬蟲和反爬蟲日益成為每家公司的標配系統。 爬蟲修煉之道——從網頁中提取結構化數據并保存(以爬取糗百文本板塊所有糗事為例) - 后端 - 掘金歡迎大家關注我的專題:爬蟲修煉之道 上篇 爬蟲修煉之道——編寫一個爬取多頁面的網絡爬蟲主要講解了如何使用python編寫一個可以下載多頁面的爬蟲,如何將相對URL轉為絕對URL,如何限速,...
摘要:話題精華即為知乎的高票回答。下面的項目中還包含了另外一個爬取的知乎的動態。 作者:William本文為原創文章,轉載請注明作者及出處 Electron 可以讓你使用純 JavaScript 調用 Chrome 豐富的原生的接口來創造桌面應用。你可以把它看作一個專注于桌面應用的 Node.js 的變體,而不是 Web 服務器。其基于瀏覽器的應用方式可以極方便的做各種響應式的交互,接下來介...
摘要:可能造成危害利用已通過認證的用戶權限更新設定信息等利用已通過認證的用戶權限購買商品利用已通過的用戶權限在留言板上發表言論。二說說你說了解的前端性能優化方面減少請求合并文件精靈減少查詢查詢完成之前瀏覽器不能從這個主機下載任何任何文件。 一、說說你所知道的web安全及防護措施 常用攻擊手段:SQL注入、XSS(Cross Site Script),跨站腳本攻擊、CSRF(Cross Sit...
閱讀 3347·2021-11-22 15:22
閱讀 2871·2021-10-12 10:12
閱讀 2167·2021-08-21 14:10
閱讀 3833·2021-08-19 11:13
閱讀 2852·2019-08-30 15:43
閱讀 3233·2019-08-29 16:52
閱讀 451·2019-08-29 16:41
閱讀 1439·2019-08-29 12:53