Servlet(Server Applet),全称Java Servlet,是用Java编写的服务器端程序。指任何实现了这个Servlet接口的类或者实现Servlet接口的类,当然或者实现接口继承方法的的类。Servlet是一个特殊的Java类。

其实就是运行在服务器上的java类,但是没有main方法。servlet中的方法由服务器在相应情况下调用执行,比如Tomcat服务器上的servlet,当浏览器发出请求并且请求方式为GET时,被请求的servlet的doGet方法就会被Tomcat或者其他服务器调用执行。

因为这些服务器软件能监听http请求,解析http头信息,头信息里写有用户想看你的哪个页面,然后这些软件再打开你的程序对应的页面跑一下得出结果再返回给用户。
要是你写的web程序把这个监听的东西也写上,可以不用依赖tomcat等软件的,只要符合http协议的过程。tomcat也是完全有java编写而成的,由大量的类构成。

Servlet是JavaWeb三大组件之一(Servlet、Filter、Listener)
Servlet是用来处理客户端请求的动态资源
Servlet的任务有:
获取请求数据
处理请求
完成响应

1.实现一个Servlet有三种方式

实现javax.servlet.Servlet接口;

继承javax.servlet.GenericServlet类;

继承javax.servlet.http.HttpServlet类;继承与javax.servlet.GeneticServlet

2.配置Servlet的主要标签

<servlet>

<servlet-name></servlet-name>

<servlet-class></servlet-class>

</servlet>

<servlet-mapping>

<servlet-name></servlet-name>

<url-pattern></url-pattern>

</servlet-mapping>

3.servlet的生命周期

实例化:服务器进行servlet的实例化(一次)Servlet是在第一次被访问时由服务器创建的。(通过配置文件 找到类,再通过反射机制,单例模式,创建唯一一个servlet对象)。

初始化:服务器调用servlet的init方法进行初始化。(一次)在Servlet被创建后,服务器会马上调用Servlet的void init(ServletConfig)方法。

请求的处理:服务器调用servlet的service方法,然后根据请求方式调用doXXX方法(多次)当服务器每次接收到请求时,都会去调用Servlet的service()方法来处理请求。

服务终止:服务器调用servlet的destroy方法销毁servlet实例。(一次)在服务器被关闭时,服务器会去销毁Servlet。

与servlet生命周期有关的三个方法

void init(ServletConfig);

  void service(ServletRequest,ServletResponse);

   void destroy();

4.servlet初始化参数的配置和使用

<servlet>

<init-param>

<param-name>key</param-name>

<param-value>value</param-value>

</init-param>

</servlet>

初始化参数的使用:

一般在Servlet的init方法中使用config对象的getInitParameter(String key)方法来获取初始化参数。

上下文参数的配置:

<web-app>

<context-param>

<param-name>key</param-name>

<param-value>value</param-value>

</context-param>

</web-app>

上下文参数的使用:

在Servlet中先通过getServletContext()方法获得ServletContext对象,然后调用

该对象的getInitParameter(String key)方法获得上下文参数。

6.高效率,线程不安全

servlet到底是什么?的更多相关文章

  1. servlet是什么?servlet到底是啥?

    #说实话 这个鬼servlet我听说过它好多年了,但是我真的不知道它到底是干啥用的.内心里总觉得这是个很复杂的,绝对是让人难以理解的东西,我真的感觉自己很抗拒它,不想知道,不想去了解.可是我还是不得不 ...

  2. Servlet到底是单例还是多例你了解吗?

    为一个Java Web开发者,你一定了解和学习过Servlet.或许还曾在面试中被问到过Servelt是单例还是多例这个问题. 遇到这个问题,你是否曾深入了解过,还是百度或者Google了一下,得到答 ...

  3. Servlet和JAVA BEAN 分析探讨

    在JSP中调用JAVA类和使用JavaBean有什么区别? 可以像使用一般的类一样使用JavaBean,Bean只是一种特殊的类.特殊在可以通过<jsp:useBean   />调用Jav ...

  4. 浅谈JavaWEB入门必备知识之Servlet入门案例详解

    工欲善其事.必先利其器,想要成为JavaWEB高手那么你不知道servlet是一个什么玩意的话,那就肯定没法玩下去,那么servlet究竟是个什么玩意?下面,仅此个人观点并通过一个小小的案例来为大家详 ...

  5. servlet与Javabean之间的区别

    在JSP中调用JAVA类和使用JavaBean有什么区别? 可以像使用一般的类一样使用JavaBean,Bean只是一种特殊的类.特殊在可以通过<jsp:useBean/>调用JavaBe ...

  6. 浅谈Tomcat和Servlet

    本文浅谈下对Tomcat和Servlet总体的理解,初学时有用过一段时间,但当时疲于应对如何xml配置和使用,对他们的理解就像是一个黑匣子.现在回顾一下帮助自己加深网络的理解.开始还是先推荐我看的文章 ...

  7. JavaWeb开发之详解Servlet及Servlet容器

    自JavaEE诞生伊始,Servlet容器和Servlet技术,就构成了JavaEE应用的核心,配合其它组件,它们完善了Java企业级开发的全套解决方案.小到一个静态博客网站,大到分布式的集群应用,都 ...

  8. 以登录实现理解Servlet+jsp+JavaBean开发

    写在前面:菜鸟拙见,望请纠正 学过servlet的都知道,书本上一直说servlet一直作为控制器使用,它不实现view层,也不做具体的事务处理,那servlet到底是干什么的哪?怎么合理的用它呐?? ...

  9. Web基础之Servlet

    Servlet Servlet : server applet,直译服务小程序.那Servlet到底是什么呢? Servlet说白了其实就是一个接口,接口的作用是什么?规范呗,这个接口规定了下面三个问 ...

随机推荐

  1. 数据库表映射到MyEclipse的实体对象

    第一步:新增一个项目 第二步:在项目中新增一个包 第三步:将项目变为SSH (1)加Hibernate 选中项目点击右键,选择MyEclipse→project Facets→ 选择Hiberbate ...

  2. Ip地址查询

    $url = 'http://ip.taobao.com/service/getIpInfo.php?ip=115.239.211.112'; $info = file_get_contents($u ...

  3. php设计模式--单例模式

    单例模式(Singleton Pattern 单件模式或单元素模式) 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 单例模式是一种常见的设计模式,在计算机系统中,线程池.缓 ...

  4. UIImagePickerController在ios10环境一打开就crash的问题

    在之前的系统环境下,UIImagePickerController都可以顺利打开.但是自从手机升级了ios10以后,每次打开相机和照片库都会直接崩溃. 通过google搜索找到StackOverflo ...

  5. Win7 64位 VS2015环境编译Libpng

    第3次编译Libpng依然想不起任何东西,为了不浪费第4次的时间... http://libmng.com/pub/png/libpng.html http://www.zlib.net/ 解压两个压 ...

  6. git ignore

    我最初将整个项目push到远程仓库,但是项目代码里面有大文件,从而传输太费时间了. 看网上的说法,可以通过ignore文件达到不提交某些文件的效果,尝试了一下发现不行. 后来尝试清除缓存 $ git ...

  7. AsyncOperation变成同步的代码

    template <typename TResult> TResult PerformSynchronously(Windows::Foundation::IAsyncOperation& ...

  8. 超级编辑器--VIM的常见操作

    如下,都是我常用的 删除单词:  d + w 关闭vim窗口:   :q   或者 shift + zz 全部向左移: shift + v  --->  shift + <   ---&g ...

  9. UITableViewCell和UITableView的学习

    一:自定义UITableViewCell: 先来看UITableView.h: - (void)registerNib:(UINib *)nib forCellReuseIdentifier:(NSS ...

  10. [转] 多进程下数据库环境的恢复:DB_REGISTER

    http://www.cnblogs.com/promise6522/archive/2012/05/09/2493542.html