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 ...
随机推荐
- Dropbox是同步盘,Box.net是网盘(所以要学习Box)
自从能无缝用Dropbox后,确实得瑟了很久,但只有可怜巴巴的2G空间,搞不出什么妖蛾子,dropbox的好用,世所共知.百度云盘2T的空间,我却不敢把重要的东西放在里面. 在还没有优盘的时候,我常常 ...
- sql server使用公用表表达式CTE通过递归方式编写通用函数自动生成连续数字和日期
问题:在数据库脚本开发中,有时需要生成一堆连续数字或者日期,例如yearly report就需要连续数字做年份,例如daily report就需要生成一定时间范围内的每一天日期.而自带的系统表mast ...
- 干货!Git 如何使用多个托管平台管理代码
考虑到github不能免费创建私有仓库原因,最近开始在使用码云托管项目,这样避免了连接数据库的用户密码等信息直接暴露在公共仓库中.今天突然想到一个点,就是能不能同时把代码推送到github和码云上呢? ...
- MySQL字符集乱码详解
对于MySQL数据库中出现乱码经常是新手碰到的一个头痛的问题,不知道为什么经常出现中文乱码. 1.对于所谓的数据库中乱码,其实这中说法是错误的,只是我们不认识服务器给我们的字符.其实还是原来的字符?那 ...
- CQRS之旅——旅程8(后记:经验教训)
旅程8:后记:经验教训 我们的地图有多好?我们走了多远?我们学到了什么?我们迷路了吗? "这片土地可能对那些愿意冒险的人有益."亨利.哈德逊 这一章总结了我们旅程中的发现.它强调了 ...
- 如何使用JavaScript导入和导出Excel文件
本文由葡萄城技术团队于原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. JavaScript是一个涵盖多种框架.直译式.可以轻松自定义客户端的脚本 ...
- Python笔记【1】_字符串学习
#!/usr/bin/env/python #-*-coding:utf-8-*- #Author:LingChongShi #查看源码Ctrl+左键 #字符串:通常有单引号“'”.双引号“" ...
- c#基础四
写入一个XML文件 using System; using System.Collections.Generic; using System.Linq; using System.Text; usin ...
- SPOJ MINSUB - Largest Submatrix(二分+单调栈)
http://www.spoj.com/problems/MINSUB/en/ 题意:给出一个n*m的矩阵M,和一个面积k,要使得M的子矩阵M'的最小元素最大并且面积大于等于k,问子矩阵M'的最小元素 ...
- IDEA安装Scala
Scala的安装 使用scala必须有jdk windows下开发工具的安装(我这里使用的是IDEA) 打开IDE 进入这个页面,如果没有进入这个界面,而直接进入项目的话 请点击https://blo ...