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 ...
随机推荐
- Qt项目里的源代码默认都是Unicode,原因大概是因为qmake.conf里的定义
MAKEFILE_GENERATOR = MINGWQMAKE_PLATFORM = win32 mingwCONFIG += debug_and_release debug_and_release_ ...
- Delphi 项目失败的总结
随着项目的失败,这些天一直在总结失败的原因,到底是为什么? 一.技术层面 1.少用指针类型,多用类. 虽然指针类型能有效的节约内存和加快运行速度,但指针远没有类来得 ...
- QT运行cmd指令(两种办法:QProcess.start然后waitForFinished,运行cmd /c命令)
QProcess p(); p.start("route");//写入要运行的指令即可 p.waitForStarted(); p.waitForFinished(); qDebu ...
- c#透明panel
先看下效果 纯透明的pane,然后设置一个半透明的图片,可以看出来显示了父控件的button 看代码 public partial class PanelEx : Panel { protected ...
- Excel导入导出各种方式分析
1.引言 1.1解决哪些问题 现在很多公司用的导出基本上采用的通过gridView导出excel,此种导出存在以下几种问题 1.数据量大的时候有时导出有时会让浏览器卡死,因为导出的excel不是真 ...
- SQL server 2008 防火墙设置
zh以前应为有特殊需求,需要在副武器外连接数据库,需要打开TCPIP服务. 但是因为有防火墙,经常连接不成功. 根据网上的资料总结,写了一个小的bat,来解决这个问题: @echo ========= ...
- 30442数据操纵语言DML
5.5 SQL的数据操纵功能 5.5.1 数据插入 使用CREATE语句创建的数据表还只是一个“空壳”,表中没有任何数据.利用SQL语言提供的INSERT语句可以完成向数据表插入数据的任务. INSE ...
- Python时间戳的一些使用
Python时间戳的一些使用 为什么写下这篇文档? 由于我本身是做Python爬虫的,在爬取网站的过程当中,会遇到形形色色的验证码,目前对于自己而言,可能简单的验证码可以进行自己识别 发现大多数的网站 ...
- aspose授权亲测可用配套代码
支持excel,word,ppt,pdf using Aspose.Cells; using Aspose.Words.Saving; using ESBasic; using OMCS.Engine ...
- java获取系统类型与版本
System的properties中有很多系统属性: System.out.println(System.getProperty("os.name")); System.out.p ...