当前位置: 首页 > 编程日记 > 正文

Spring学习八

1: Tomcat容器四个等级?

Container, Engine,  Servlet容器, Context

真正管理Servlet的容器是Context容器:一个context对应一个web工程。

<Context path="/projectOne " docBase="D:\projects\projectOne"  source=“XXX”  reloadable="true" />

2:Servet是如何被加载的?

Context 容器才是真正运行 Servlet 的 Servlet 容器

A: 创建 Servlet 对象:

DispatcherServlet需要被实例化才能让Spring MVC 工作。

如果 Servlet 的 load-on-startup 配置项大于 0,那么在 Context 容器启动的时候就会被实例化.

B: 初始化 Servlet:  Servlet 的 init

这样 Servlet 对象就初始化完成了。

3:  Servlet体系结构:

Servlet 主动关联的是三个类,分别是 ServletConfig、ServletRequest 和 ServletResponse。

ServletConfig 是在 Servlet 初始化时就传给 Servlet 了,而后两个是在请求达到时调用 Servlet 时传递过来的。

ServletConfig 接口中声明的方法发现,这些方法都是为了获取这个 Servlet 的一些配置属性,而这些配置属性可能在 Servlet 运行时被用到。

而 ServletContext 又是干什么的呢? Servlet 的运行模式是一个典型的“握手型的交互式”运行模式。所谓“握手型的交互式”就是两个模块为了交换数据通常都会准备一个交易场景,这个场景一直跟随个这个交易过程直到这个交易完成为止。这个交易场景的初始化是根据这次交易对象指定的参数来定制的,这些指定参数通常就会是一个配置类。所以对号入座,交易场景就由 ServletContext 来描述,而定制的参数集合就由 ServletConfig 来描述。而 ServletRequest 和 ServletResponse 就是要交互的具体对象了,它们通常都是作为运输工具来传递交互结果。

Servlet 类时通常使用的都是 HttpServletRequest 和 HttpServletResponse,它们继承了 ServletRequest 和 ServletResponse

4: DispatcherServlet  ContextLoaderListener 关系?

ContextLoaderListener初始化的上下文加载的Bean是对于整个应用程序共享的,不管是使用什么表现层技术,一般如DAO层、Service层Bean;

DispatcherServlet初始化的上下文加载的Bean是只对Spring Web MVC有效的Bean,如Controller、HandlerMapping、HandlerAdapter等等,该初始化上下文应该只加载Web相关组件。

对于contextConfigLocation参数,有2个地方可以配置:
1)context-param 是全局性配置
2)servlet下的init-param 是局部性配置
若以上两处都设置了一个相同的bean配置文件路径,那么该文件内配置的bean会被初始化2次,所以一个配置文件只能选择一种配置位置
项目中使用spring框架有2种方式:
1)listener下的ContextLoaderListener 是一种引入方式,默认读取/WEB-INF/applicationContext.xml
2)若是spring-web项目,DispatcherServlet 也是一种引入方式,默认读取/WEB-INF/${servlet-name}-servlet.xml

ContextLoaderListener中创建ApplicationContext主要用于整个Web应用程序需要共享的一些组件,比如DAO,数据库的ConnectionFactory等。而由DispatcherServlet创建的ApplicationContext主要用于和该Servlet相关的一些组件,比如Controller、ViewResovler等。

对于作用范围而言,在DispatcherServlet中可以引用由ContextLoaderListener所创建的ApplicationContext,而反过来不行。

5:  Session与 Cookie 关系

6: Servlet中的listener:

整个 Tomcat 服务器中 Listener 使用的非常广泛,它是基于观察者模式设计的,Listener 的设计对开发 Servlet 应用程序提供了一种快捷的手段,能够方便的从另一个纵向维度控制程序和数据。目前 Servlet 中提供了 5 种两类事件的观察者接口,它们分别是:4 个 EventListeners 类型的,ServletContextAttributeListener、ServletRequestAttributeListener、ServletRequestListener、HttpSessionAttributeListener 和 2 个 LifecycleListeners 类型的,  

ServletContextListener、HttpSessionListener

它们基本上涵盖了整个 Servlet 生命周期中,你感兴趣的每种事件。这些 Listener 的实现类可以配置在 web.xml 中的 <listener> 标签中。当然也可以在应用程序中动态添加 Listener,需要注意的是 ServletContextListener 在容器启动之后就不能再添加新的,因为它所监听的事件已经不会再出现。掌握这些 Listener 的使用,能够让我们的程序设计的更加灵活。

转载于:https://www.cnblogs.com/liufei1983/p/7586847.html

相关文章:

作业六:图像编码相关概念

7.1&#xff0e;信息量&#xff1a;信息源发出的所有消息中该消息出现概率的倒数的对数。信息熵&#xff1a;对信息源X的各符号的自信息量取统计平均。 7.6如图所示&#xff1a;哈夫曼编码最终结果为&#xff1a;X11,X201,X3000,X4001。编码效率为95%。 7.8根据公式&#xff…

linux命令find命令详解

find 查找文件 find 哪里 什么类型 什么名字 -maxdepth 最大的深度 查找目录的最大深度 find -maxdepth 1 -type d -type 找什么类型的 f file 文件 d directory 目录 -name 什么名字 -mtime 根据修改时间找出对应的文件 7 7天前 -7 7天后 find命令一般与 |xargs 一起…

一次次小进步,从毕业开始,你到现在飞跃了几次了,程序人生也不容易?

01. 会写最简单的程序&#xff0c;能编译通过了&#xff0c;是一次飞跃。02. 会写C/S程序了&#xff0c;能用那些常用的控件&#xff0c;对属性事件有了解了&#xff0c;会用了&#xff0c;是一次飞跃。03. 会写B/S程序了&#xff0c;也是一次飞跃。04. 你彻底理解了分层的理念…

什么是JAVA内容仓库(Java Content Repository)(3)

开发我们的例子程序 jackrabbit已经配置好了&#xff0c;现在让我们来创建我们的示例程序。这个例子程序将调用JCR-170 API。很显然&#xff0c;我们需要做两件事情&#xff1a;一个是作为后台的对数据进行增删改查&#xff08;持久层&#xff09;&#xff0c;另一个是开发相对…

Cygwin-添加到右键菜单脚本--一键安装、卸载

平时习惯用一些linux命令来完成工作&#xff0c;在Windows上有cygwin和gitbash两个选择。这两个我都装了。 相对来说cygwin支持的功能更多一些&#xff0c;但是它没有默认绑定到右键菜单。为此&#xff0c;我想到用万能的注册表解决这个事情。网上搜索了一下&#xff0c;把我眼…

在博客园安家了

终于找到自己的网上家园了。。哈哈。。 虽然早就注册了博客园&#xff0c;不过一直都在忙。没有时间整理。以后我会把自己学到的东西慢慢的发表到网上&#xff0c;和大家交流。 也会把一些自我感觉经典的东西放在园子中&#xff0c;方便大家学习。 总之&#xff0c;我以后会加油…

***WindowsXP常用的七种方法

第一招、屏幕保护 在Windows中启用了屏幕保护之后&#xff0c;只要我们离开计算机(或者不操作计算机)的时间达到预设的时间&#xff0c;系统就会自动启动屏幕保护程序&#xff0c;而当用户移动鼠标或敲击键盘想返回正常工作状态时&#xff0c;系统就会打开一个密码确认框&#…

小程序全局状态管理,在页面中获取globalData和使用globalSetData

GitHub: https://github.com/WozHuang/mp-extend 主要目标 微信小程序官方没有提供类似vuex、redux全局状态管理的解决方案&#xff0c;但是在一个完整的项目中各组件的数据一致性是必须要保证&#xff0c;因此需要开发一个能够实现小程序全局状态管理的解决方案。 设计思路 参…

谈 三层结构与MVC模式的区别

谈 三层结构与MVC模式的区别 在CSDN和园子里有朋友谈到三层与MVC的区别&#xff0c;以前也有人抛出这个问题&#xff0c;本人对来公司面试的朋友也偶乐会提这方面的问题。 那么我也来讲讲我对这两者的理解吧。 首先对这个题目&#xff0c;本身是存在问题的&#xff0c;…

学习自定义组件

React入门介绍-ReactDOM.render() 蚂蚁设计-组件 React入门-ReactDOM.render()介绍 node.js和npm的关系

如何焊接电路板

今天主要想给大家分享一下焊接电路板的经验&#xff0c;作为一个电子工程师&#xff0c;焊接电路板是一个基本活&#xff0c;要不你很多东西都要麻烦到别人&#xff0c;这样就不好了&#xff0c;而今天要分享的是如何焊接贴片&#xff0c;在焊接从多的电路板中&#xff0c;我想…

加入新e时代建站网后,我可以做什么

加入原动力建站网后&#xff0c;您便开始了自由而浪漫的原动力建站网生活。您可以&#xff1a;选择自由的时间学习&#xff0c;跟您的上级交流&#xff0c;请教&#xff1b;选择自由的时间工作&#xff1b;自由的发展&#xff0c;整个互联网任您自由发挥&#xff1b;从实践中学…

[BZOJ2502]清理雪道 有上下界网络流(最小流)

2502: 清理雪道 Time Limit: 10 Sec Memory Limit: 128 MBDescription 滑雪场坐落在FJ省西北部的若干座山上。从空中鸟瞰&#xff0c;滑雪场可以看作一个有向无环图&#xff0c;每条弧代表一个斜坡&#xff08;即雪道&#xff09;&#xff0c;弧的方向代表斜坡下降的方向。你的…

学习API网关遇到的名词

VPC浅谈 VPC全称“虚拟私有云”&#xff0c;是一个公共云计算资源的动态配置池。虚拟私有云在概念上类似于虚拟专用网&#xff0c;需要使用加密协议、隧道协议和其他安全程序&#xff0c;在民营企业和云服务提供商之间传输数据。一个虚拟专用网可以被用来在公共网&#xff0c;…

RXJAVA之变换操作

RXJAVA提供了以下变换操作&#xff0c;对Observable的消息进行变换操作&#xff1a; 1.window 定期将来自Observable的数据分拆成一些Observable窗口&#xff0c;然后发射这些窗口&#xff0c;而不是每次发射一项。 Observable<String> observable Observable.just(&quo…

java中xxe漏洞修复方法

java中禁止外部实体引用的设置方法不止一种&#xff0c;这样就导致有些开发者修复的时候采用的错误的方法 之所以写这篇文章是有原因的&#xff01;最早是有朋友在群里发了如下一个pdf&#xff0c; 而当时已经是2019年1月末了&#xff0c;应该不是2018年7月份那个引起较大轰动的…

模式6--ReadWriteLock

来至《java多线程设计模式》 自己提供一个逻辑锁代替JDK的物理锁synchronized 优点&#xff1a;1.对read操作不进行共享互斥&#xff0c;可以进行多个read操作&#xff0c;提高系统性能 2.适合read》write的情况 package Sample;public final class ReadWriteLock {private int…

使用 XSL 样式表无法查看 XML 输入。请更正错误然后单击 刷新按钮,或以后重试。...

使用 XSL 样式表无法查看 XML 输入。请更正错误然后单击 刷新按钮&#xff0c;或以后重试。 无法显示 XML 页。 使用 XSL 样式表无法查看 XML 输入。请更正错误然后单击 刷新按钮&#xff0c;或以后重试。 ----------------------------------------------------------------…

JDK的安装与系统环境变量的配置

一、下载JDK 用户进入到Java SE的下载网页后&#xff0c;根据自己所用的操作系统&#xff08;Windows、Linux&#xff09;和位数&#xff08;32位、64位&#xff09;选择不同的链接进行下载。本例是在Windows系统的32位机器上开发的&#xff0c;所以下载的是jdk-8u161-windows-…

docker redis 多个实例

Docker运维笔记-Docker端口映射 - 恶性佛 - CSDN博客https://blog.csdn.net/qq_29994609/article/details/51730640 利用 Docker 在一台机器上部署多个 Redis 实例 - HeatDeath的博客 - CSDN博客https://blog.csdn.net/HeatDeath/article/details/80364340 Docker命令详解 - iV…

Dojo QuickStart 快速入门教程 (1) Why Dojo

Dojo 是一个用来构建 Web 应用的 JavaScript 工具包&#xff0c;当然是开源的。它的目标是通过提供一组特别构造的 API 和一系列辅助工具&#xff0c;使你能在较短的时间里把想法变为实现&#xff0c;同时改善你的日常 Web 开发体验。它是快速的(lightning fast)、健壮的(light…

css3-transform

转载于:https://www.cnblogs.com/cyany/p/7594143.html

C#操作注册表

using Microsoft.Win32 ;以下从‘读’‘写’‘删除’‘判断’四个事例实现对注册表的简单操作 1.读取指定名称的注册表的值 private string GetRegistData(string name) { string registData; RegistryKey hkml Registry.LocalMachine; RegistryKey software hkml.OpenSubKey…

Red Hat Linux 安装教程

一、下载链接 链接&#xff1a;https://pan.baidu.com/s/1JShQmOrgGG5_uaqPUuaHLg 提取码&#xff1a;ture 二、安装步骤 1、打开虚拟机&#xff0c;单击“创建新的虚拟机”&#xff1b; 2、在出现的“新建虚拟机向导”窗口中&#xff0c;选择默认的“典型&#xff08;推荐&…

Spring中利用applicationContext.xml文件实例化对象和调用方法

Spring中实例化对象和调用方法入门 1.jar包和xml的准备 已上传至百度云盘&#xff0c;链接: https://pan.baidu.com/s/1CY0xQq3GLK06iX7tVLnp3Q  提取码: shjd &#xff1b; 2.在eclipse中创建javaweb项目 1.第一次创建javaWEB项目操作步骤 1&#xff09;eclipse中运行javaWE…

图形文件元数据管理工具exiv2

图形文件元数据管理工具exiv2图形文件通常都包含多种元数据&#xff0c;如Exif、IPTC、XMP。这些信息往往是渗透人员收集的目标。为了便于管理这些信息&#xff0c;Kali Linux内置了专用工具exiv2。该工具支持24种文件格式&#xff0c;包括JPEG、TIFF、PNG、GIF、PSD、TGA、BMP…

什么是LAN(局域网)

一、局域网 局域网&#xff08;Local Area Network&#xff09;&#xff0c;简称LAN&#xff0c;是指在某一区域内由多台计算机互联成的计算机组。“某一区域”指的是同一办公室、同一建筑物、同一公司和同一学校等&#xff0c;一般是方圆几千米以内。局域网可以实现文件管理、…

网络编程-粘包

粘包问题的产生 TCP流式协议 基于数据流的协议 接收方产生粘包问题 1.接收方不清楚数据有多长只接收了数据的一部分 2.接收方多读取了数据 发送方产生的粘包问题 操作系统没有及时发送前一次的数据&#xff0c;导致两次数据粘在一起 粘包问题的根本原因是接收方不清楚数据的长度…

Linq基础知识小记二

书写Linq查询有两种方法,第一种是通过方法语法(也就是扩展方法),第二种是查询表达式语法. 1、方法语法 方法语法就是通过扩展方法和Lambda表达式来创建查询 (1)、链式查询 这种查询方式很多语言都支持,通过一段实例,介绍Linq的链式查询.需求如下:找出字符串数组中含有字母e的字…