摘要:图片抓取上本项目主要讲述项目的搭建和启动过程,为以后继续图片抓取的业务展示做基础。用于处理请求和响应的拦截处理。这样相比容器直接发到处理,大大减少了代码重复工作而且方便统一管理。上下文关系从上图可以看出主要在和两部分做工作。
【图片抓取】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示例
示例代码
不知这几篇文章是否对大家有所帮助,希望各位看官多提意见,多多交流。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/69068.html
摘要:无论对开发人员或者测试人员来说,都是非常有用的工具。只显示指定的多个显示多个相关的情况下,使用英文分号隔开,见下图。使用浏览器获取图片属性需要注意的是刷新是使用强制刷新,这样会重新请求资源。 ...
摘要:在这之前,还是有必要对一些概念超轻量级反爬虫方案后端掘金前言爬虫和反爬虫日益成为每家公司的标配系统。 爬虫修炼之道——从网页中提取结构化数据并保存(以爬取糗百文本板块所有糗事为例) - 后端 - 掘金欢迎大家关注我的专题:爬虫修炼之道 上篇 爬虫修炼之道——编写一个爬取多页面的网络爬虫主要讲解了如何使用python编写一个可以下载多页面的爬虫,如何将相对URL转为绝对URL,如何限速,...
摘要:话题精华即为知乎的高票回答。下面的项目中还包含了另外一个爬取的知乎的动态。 作者:William本文为原创文章,转载请注明作者及出处 Electron 可以让你使用纯 JavaScript 调用 Chrome 丰富的原生的接口来创造桌面应用。你可以把它看作一个专注于桌面应用的 Node.js 的变体,而不是 Web 服务器。其基于浏览器的应用方式可以极方便的做各种响应式的交互,接下来介...
摘要:可能造成危害利用已通过认证的用户权限更新设定信息等利用已通过认证的用户权限购买商品利用已通过的用户权限在留言板上发表言论。二说说你说了解的前端性能优化方面减少请求合并文件精灵减少查询查询完成之前浏览器不能从这个主机下载任何任何文件。 一、说说你所知道的web安全及防护措施 常用攻击手段:SQL注入、XSS(Cross Site Script),跨站脚本攻击、CSRF(Cross Sit...
阅读 3338·2021-11-22 15:22
阅读 2862·2021-10-12 10:12
阅读 2156·2021-08-21 14:10
阅读 3822·2021-08-19 11:13
阅读 2841·2019-08-30 15:43
阅读 3223·2019-08-29 16:52
阅读 438·2019-08-29 16:41
阅读 1427·2019-08-29 12:53