国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

【圖片抓取】003-JAVA WEB(上)

jiekechoo / 456人閱讀

摘要:圖片抓取上本項目主要講述項目的搭建和啟動過程,為以后繼續(xù)圖片抓取的業(yè)務展示做基礎。用于處理請求和響應的攔截處理。這樣相比容器直接發(fā)到處理,大大減少了代碼重復工作而且方便統(tǒng)一管理。上下文關系從上圖可以看出主要在和兩部分做工作。

【圖片抓取】003-JAVA WEB(上)

本項目主要講述java web項目的搭建和啟動過程,為以后繼續(xù)圖片抓取的業(yè)務展示做基礎。項目中采用tomcat+spring mvc+spring jdbc+mysql,以最簡單的方式搭建;其實java web也在不停的發(fā)展,使用spring boot可能會更簡單有效的搭建web,結(jié)合nodejs實現(xiàn)前后臺分離,再較大項目中比較省力。spring boot再方便其實也沒有脫離傳統(tǒng)web的工作機制,配合本項目簡單描述下web的啟動過程。

web 容器啟動


tomcat可以簡單分3個階段,啟動初始化->服務運行(接收,響應http請求)->服務結(jié)束;web服務的主體就是接收響應http請求既上右邊部分(filter+servlet);有時候我們可能要在服務運行前做一些準備工作,讀取配置文件,啟動一些非http服務線程等;有時候還需要在web服務停止時做一些事情,釋放資源等等,這些就要在啟動初始化和服務結(jié)束階段能執(zhí)行我們的代碼,這2個階段都要用到listener。

1. listener監(jiān)聽器

從web.xml我們可以看出,配置了ContextLoaderListener。需要實現(xiàn)2個方法contextInitialized(ServletContextEvent sce)和contextDestroyed(ServletContextEvent sce),這2個方法分別會在tomcat啟動和結(jié)束時執(zhí)行。如果需要的話,通過方法參數(shù)ServletContextEvent,我們可以把listener的處理結(jié)果放到ServletContextEvent或者從ServletContextEvent拿取數(shù)據(jù),通過ServletContextEvent可以和servlet進程做數(shù)據(jù)交互。

2. filter

Filter用于處理http請求和響應的攔截處理。http請求可以粗略分為3個階段,

* web容器,接收到http請求后,根據(jù)web.xml里配置的路徑,匹配Filter和servlet。
* Filter處理鏈,容器把http請求轉(zhuǎn)入filter處理,filter可以在真正業(yè)務處理前做預處理,像日志管理,權(quán)限管理等公共的http處理;
* http業(yè)務數(shù)據(jù)處理,servlet真正的業(yè)務處理,這里只關心業(yè)務邏輯,系統(tǒng)公共的處理,我不關心,加入后面權(quán)限認證規(guī)則變化,或增加別的處理規(guī)則,在filter做;業(yè)務邏輯不動,我不動。


這樣相比容器直接發(fā)到servlet處理,大大減少了代碼重復工作而且方便統(tǒng)一管理。

3. servlet

servlet是http的業(yè)務處理核心,包括spring mvc也是在servlet里,封裝實現(xiàn)自己的處理流程。

spring 上下文關系


從上圖可以看出spring主要在listener和servlet兩部分做工作。spring mvc對應的分了兩大類,既controller標簽和非controller的其它標簽(servcie,component等);之前項目上看到有人寫的web.xml,經(jīng)常看到 contextloaderlistener和dispatcher都是匹配 spring-*.xml,或者xml配置掃描時,沒有區(qū)分controller;這樣會導致部分spring bean初始化2次,產(chǎn)生一些不容易發(fā)現(xiàn)bug。
結(jié)合web容器啟動,spring會首先實例化contextloaderlistener,把service,component,或者xml里指定的bean;contextloaderlistener啟動完成后,再初始化dispatcher servlet;dispatcher servlet繼承contextloaderlistener實例化的bean,這里推測這些bean也是通過ServletContextEvent傳入的,具體可看下源碼,看源碼,看源碼,所有的匹配dispatch servlet的配置的url都走向了這里,可以理解成web容器里又放了一個容器,這樣spring就可以自定義的擴展,細化http請求的階段,像interceptor
日志打印執(zhí)行filter和interceptor示例

其它

示例代碼
不知這幾篇文章是否對大家有所幫助,希望各位看官多提意見,多多交流。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/69068.html

相關文章

  • 一文學會 - Fiddler抓包快速實戰(zhàn)

    摘要:無論對開發(fā)人員或者測試人員來說,都是非常有用的工具。只顯示指定的多個顯示多個相關的情況下,使用英文分號隔開,見下圖。使用瀏覽器獲取圖片屬性需要注意的是刷新是使用強制刷新,這樣會重新請求資源。 ...

    Imfan 評論0 收藏0
  • 爬蟲 - 收藏集 - 掘金

    摘要:在這之前,還是有必要對一些概念超輕量級反爬蟲方案后端掘金前言爬蟲和反爬蟲日益成為每家公司的標配系統(tǒng)。 爬蟲修煉之道——從網(wǎng)頁中提取結(jié)構(gòu)化數(shù)據(jù)并保存(以爬取糗百文本板塊所有糗事為例) - 后端 - 掘金歡迎大家關注我的專題:爬蟲修煉之道 上篇 爬蟲修煉之道——編寫一個爬取多頁面的網(wǎng)絡爬蟲主要講解了如何使用python編寫一個可以下載多頁面的爬蟲,如何將相對URL轉(zhuǎn)為絕對URL,如何限速,...

    1fe1se 評論0 收藏0
  • 基于 Electron 的爬蟲框架 Nightmare

    摘要:話題精華即為知乎的高票回答。下面的項目中還包含了另外一個爬取的知乎的動態(tài)。 作者:William本文為原創(chuàng)文章,轉(zhuǎn)載請注明作者及出處 Electron 可以讓你使用純 JavaScript 調(diào)用 Chrome 豐富的原生的接口來創(chuàng)造桌面應用。你可以把它看作一個專注于桌面應用的 Node.js 的變體,而不是 Web 服務器。其基于瀏覽器的應用方式可以極方便的做各種響應式的交互,接下來介...

    Harriet666 評論0 收藏0
  • 前端面試題(五)(安全、性能優(yōu)化)

    摘要:可能造成危害利用已通過認證的用戶權(quán)限更新設定信息等利用已通過認證的用戶權(quán)限購買商品利用已通過的用戶權(quán)限在留言板上發(fā)表言論。二說說你說了解的前端性能優(yōu)化方面減少請求合并文件精靈減少查詢查詢完成之前瀏覽器不能從這個主機下載任何任何文件。 一、說說你所知道的web安全及防護措施 常用攻擊手段:SQL注入、XSS(Cross Site Script),跨站腳本攻擊、CSRF(Cross Sit...

    tuomao 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<