SpringMVC面试题:什么是Servlet?
一、什么是servlet?
servlet是一个Java编写的程序,此程序是基于http协议的,在服务器端(如Tomcat)运行的,是按照servlet规范编写的一个Java类。
客户端发送请求至服务器端,服务器端将请求发送至servlet,servlet生成响应内容并将其传给服务器
即,我们在浏览器点击链接和按钮产生的消息不是发送给servlet的,而是发送给web容器(如Tomcat、jetty)的,web容器接受消息后不知道怎么处理,转交给我们编写的servlet处理,那么web容器怎么和servlet交流呢,于是就有了servlet接口(因为接口是定义一种规范的良好表达形式)。我们只需要编写Java类符合servlet规范,那么就能被web容器识别,并被容器管理。
Servlet = Server + Applet
二、servlet的作用:
处理客户端的请求并将其结果发送到客户端
三、servlet的生命周期
servlet的生命周期由servlet容器来控制,分为三个阶段:
初始化阶段:
1、servlet容器加载servlet类,把servlet类的.class文件中的数据读到内存中。
2、servlet容器创建一个servletConfig对象。servletConfig对象包含了servlet的初始化配置信息。
3、servlet容器创建一个servlet对象。
4、servlet容器调用servlet对象的init方法进行初始化。
运行阶段:
1、servlet容器接收到一个请求时,servlet容器会针对这个请求创建servletRequest和servletResponse对象。
2、然后调用service方法。并将这两个参数传递给service方法。service方法通过servletRequest对象获得请求的信息。并处理该请求。
3、再通过servletResponse对象生成这个请求的响应结果。然后销毁servletRequest和servletResponse对象。不管这个请求时post提交的还是get提交的,这一种这个请求都会由service方法来处理。
销毁阶段:
当web应用被终止时,servlet容器会先调用servlet对象的destroy方法,然后在销毁servlet对象,同时也会销毁与servlet对象相关联的servletConfig对象。我们可以在destroy方法的实现中,释放servlet所占用的资源,如关闭数据库连接,关闭文件输入输出流等。
四、servlet怎么处理一个请求?
当用户从浏览器向服务器发起一个请求,通常会包含如下信息:http://hostname: port /contextpath/servletpath,hostname 和 port 是用来与服务器建立 TCP 连接,而后面的 URL 才是用来选择服务器中那个子容器服务用户的请求。那服务器是如何根据这个 URL 来达到正确的 Servlet 容器中的呢?
Tomcat中这件事很容易解决,因为这种映射工作有专门的一个类来完成,这个类保存了Tomcat的container容器中所有子容器的信息。当 Request 进入 Container 容器之前,它要访问那个子容器这时就已经确定了。
当用户发送一个请求到某个servlet的时候,servlet容器会创建一个servletRequest和servletResponse对象。在servletRequest对象中封装了用户的请求信息,然后servlet容器把servletRequest和servletResponse对象传递给用户所请求的servlet,servlet把处理好的结果卸载servletResponse中,然后servlet容器把响应结果传给用户。
五、servlet和jsp的区别
1、jsp经编译后就是servlet。
2、jsp更擅长页面表现,servlet更擅长逻辑编辑
3、jsp位于MVC设计模式的视图层,而servlet位于控制层
六、servlet里的过滤器
过滤器的作用
1、任何系统或网站都要判断用户是否登录。
2、网络聊天系统或论坛,功能是过滤非法文字
3、统一解决编码
怎么创建一个过滤器:
1、生成一个普通的class类,实现Filter借口(javax.servlet.Filter)
2、重写接口里面的三个方法:init,doFilter和destroy
3、然后在web.xml配置过滤器
servlet中的监听器
对Request的监听,对session的监听,对application的监听
七、参考
SpringMVC 中文官网:http://www.springmvc.cn/
SpringMVC面试题:什么是Servlet?的更多相关文章
- SpringMVC 面试题
SpringMVC 面试题 什么是Spring MVC ?简单介绍下你对springMVC的理解? Spring MVC是一个基于MVC架构的用来简化web应用程序开发的应用开发框架,它是Spring ...
- 腾讯这套SpringMvc面试题你了解多少?(面试必备)
1.什么是 SpringMvc? 答:SpringMvc 是 spring 的一个模块,基于 MVC 的一个框架,无需中间整合层来整 2.Spring MVC 的优点: 答: 1)它是基于组件技术的. ...
- 腾讯这套SpringMVC面试题你懂多少(面试题和答案)
1.什么是 SpringMvc? 答:SpringMvc 是 spring 的一个模块,基于 MVC 的一个框架,无需中间整合层来整 2.Spring MVC 的优点: 答:1)它是基于组件技术的.全 ...
- springMVC: java.lang.ClassNotFoundException: javax.servlet.jsp.jstl.core.Config
springMVC开发web的时候,报错:java.lang.ClassNotFoundException: javax.servlet.jsp.jstl.core.Config 原因:未引入jstl ...
- SpringMVC核心——参数获取与Servlet资源获取问题
一.SpringMVC 使用 @PathVariable.@RequestParam.@RequestHeader.@CookieValue 等来解决参数获取问题. 1. @PathVariable: ...
- Java面试题_第二阶段(Servlet、HTTP、Session、JSP、 Ajax、Filter、JDBC、Mysql、Spring)
1.1. 描述Servlet调用过程? 答案: (1)在浏览器输入地址,浏览器先去查找hosts文件,将主机名翻译为ip地址,如果找不到就再去查询dns服务器将主机名翻译成ip地址. (2)浏览器根据 ...
- SpringMVC相关试题
1.下列相关Spring自动装配的说法中,错误的是( ). (选择一项) A:在Spring配置文件中,可以通过<bean>元素的autowire属性指定自动装配方式B: autowire ...
- Java面试题总结系列 Servlet
Servlet技术主要是为了使用Web上的HTTP协议而设计的.servlet是在WEB服务器上运行的程序.Java Servlet可以用于处理客户请求或生成动态Web网页.先一个实例.然后解释. 先 ...
- SpringMVC是如何逐步简化Servlet的编程的
转自:https://www.cnblogs.com/winterfells/p/8476759.html Servlet和JSP是开发java Web应用程序的两种基本技术,Spring MVC是S ...
随机推荐
- Attention is all you need及其在TTS中的应用Close to Human Quality TTS with Transformer和BERT
论文地址:Attention is you need 序列编码 深度学习做NLP的方法,基本都是先将句子分词,然后每个词转化为对应的的词向量序列,每个句子都对应的是一个矩阵\(X=(x_1,x_2,. ...
- 《解读window核心编程》 之 进程
1. 进程是执行文件的运行时形态.包括两部分:内核数据(对应内核对象).地址空间(包括执行文件代码和栈堆等动态内存). 2. 把VC的“系统-子系统”值删除掉,即不指定 ...
- 各种 MacBook 和 5K iMac 屏幕分辨率对比
苹果全新 12寸超薄 MacBook 比曾经最薄的 MacBook Air 更薄,不过却配备了Retina 显示屏.12寸 Retina MacBook 上的显示屏分辨率为2304*1440,虽然不如 ...
- Web性能优化分析
如果你的网站在1000ms内加载完成,那么会有平均一个用户停留下来.2014年,平均网页的大小是1.9MB.看下图了解更多统计信息. 直击现场 <HTML开发MacOSApp教程> ht ...
- Js判断当前浏览者的操作系统
function validataOS(){ var userAgent = navigator.userAgent; if(userAgent.indexOf('Window')>0){ re ...
- Ionic Framework 4 介绍
Ionic Framework 4是一个开源UI工具包,用于使用Web技术(HTML,CSS和JavaScript)构建高性能的高质量移动和桌面应用程序.Ionic Framework专注于前端用户体 ...
- Python基础(六) 函数
.函数 函数是对动作的封装 2.1函数的基本结构 #函数的定义 def 函数名(): #函数提 pass #函数的执行 函数名() 2.2参数初识 #形参 def hanshu(aaa): #参数相当 ...
- 3014C语言_运算符
第四章 运算符 4.1 分类 C语言的运算符范围很广,可分为以下几类: 1.算术运算符:用于各类数值运算.包括加(+).减(-).乘(*).除(/).求余(%).自增(++).自减(--)共七种. 2 ...
- 仿写confirm和alert弹框
在工作中,我们常常会遇到原生的样式感觉比较丑,又和我们做的项目风格不搭.于是就有了仿写原生一些组件的念头,今天我就带大家仿写一下confirm和alert样式都可以自己修改. 有些的不好的地方请指出来 ...
- 容器化之Docker小知识普及
Docker确实是个好东西,相当于一个小型虚拟机,里面环境隔离只要有对应的镜像就能运行业务应用.运行基础应用.能跑数据库等等,还能跑linux等等. Docker 从狭义上来讲就是一个进程,从广义上来 ...