一、什么是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?的更多相关文章

  1. SpringMVC 面试题

    SpringMVC 面试题 什么是Spring MVC ?简单介绍下你对springMVC的理解? Spring MVC是一个基于MVC架构的用来简化web应用程序开发的应用开发框架,它是Spring ...

  2. 腾讯这套SpringMvc面试题你了解多少?(面试必备)

    1.什么是 SpringMvc? 答:SpringMvc 是 spring 的一个模块,基于 MVC 的一个框架,无需中间整合层来整 2.Spring MVC 的优点: 答: 1)它是基于组件技术的. ...

  3. 腾讯这套SpringMVC面试题你懂多少(面试题和答案)

    1.什么是 SpringMvc? 答:SpringMvc 是 spring 的一个模块,基于 MVC 的一个框架,无需中间整合层来整 2.Spring MVC 的优点: 答:1)它是基于组件技术的.全 ...

  4. springMVC: java.lang.ClassNotFoundException: javax.servlet.jsp.jstl.core.Config

    springMVC开发web的时候,报错:java.lang.ClassNotFoundException: javax.servlet.jsp.jstl.core.Config 原因:未引入jstl ...

  5. SpringMVC核心——参数获取与Servlet资源获取问题

    一.SpringMVC 使用 @PathVariable.@RequestParam.@RequestHeader.@CookieValue 等来解决参数获取问题. 1. @PathVariable: ...

  6. Java面试题_第二阶段(Servlet、HTTP、Session、JSP、 Ajax、Filter、JDBC、Mysql、Spring)

    1.1. 描述Servlet调用过程? 答案: (1)在浏览器输入地址,浏览器先去查找hosts文件,将主机名翻译为ip地址,如果找不到就再去查询dns服务器将主机名翻译成ip地址. (2)浏览器根据 ...

  7. SpringMVC相关试题

    1.下列相关Spring自动装配的说法中,错误的是( ). (选择一项) A:在Spring配置文件中,可以通过<bean>元素的autowire属性指定自动装配方式B: autowire ...

  8. Java面试题总结系列 Servlet

    Servlet技术主要是为了使用Web上的HTTP协议而设计的.servlet是在WEB服务器上运行的程序.Java Servlet可以用于处理客户请求或生成动态Web网页.先一个实例.然后解释. 先 ...

  9. SpringMVC是如何逐步简化Servlet的编程的

    转自:https://www.cnblogs.com/winterfells/p/8476759.html Servlet和JSP是开发java Web应用程序的两种基本技术,Spring MVC是S ...

随机推荐

  1. Qt项目里的源代码默认都是Unicode,原因大概是因为qmake.conf里的定义

    MAKEFILE_GENERATOR = MINGWQMAKE_PLATFORM = win32 mingwCONFIG += debug_and_release debug_and_release_ ...

  2. Delphi 项目失败的总结

    随着项目的失败,这些天一直在总结失败的原因,到底是为什么? 一.技术层面        1.少用指针类型,多用类.            虽然指针类型能有效的节约内存和加快运行速度,但指针远没有类来得 ...

  3. QT运行cmd指令(两种办法:QProcess.start然后waitForFinished,运行cmd /c命令)

    QProcess p(); p.start("route");//写入要运行的指令即可 p.waitForStarted(); p.waitForFinished(); qDebu ...

  4. c#透明panel

    先看下效果 纯透明的pane,然后设置一个半透明的图片,可以看出来显示了父控件的button 看代码 public partial class PanelEx : Panel { protected ...

  5. Excel导入导出各种方式分析

    1.引言 1.1解决哪些问题   现在很多公司用的导出基本上采用的通过gridView导出excel,此种导出存在以下几种问题 1.数据量大的时候有时导出有时会让浏览器卡死,因为导出的excel不是真 ...

  6. SQL server 2008 防火墙设置

    zh以前应为有特殊需求,需要在副武器外连接数据库,需要打开TCPIP服务. 但是因为有防火墙,经常连接不成功. 根据网上的资料总结,写了一个小的bat,来解决这个问题: @echo ========= ...

  7. 30442数据操纵语言DML

    5.5 SQL的数据操纵功能 5.5.1 数据插入 使用CREATE语句创建的数据表还只是一个“空壳”,表中没有任何数据.利用SQL语言提供的INSERT语句可以完成向数据表插入数据的任务. INSE ...

  8. Python时间戳的一些使用

    Python时间戳的一些使用 为什么写下这篇文档? 由于我本身是做Python爬虫的,在爬取网站的过程当中,会遇到形形色色的验证码,目前对于自己而言,可能简单的验证码可以进行自己识别 发现大多数的网站 ...

  9. aspose授权亲测可用配套代码

    支持excel,word,ppt,pdf using Aspose.Cells; using Aspose.Words.Saving; using ESBasic; using OMCS.Engine ...

  10. java获取系统类型与版本

    System的properties中有很多系统属性: System.out.println(System.getProperty("os.name")); System.out.p ...