1. 基本知识:

    java Servlet是和平台无关的服务端组件,它运行在Servlet容器中,Servlet容器负责Servlet和客户的通信以及调用Servlet方法,Servlet和客户的通信采用“请求/响应”模式。

    Servlet是一种独立平台和协议的服务端的java应用程序,处理请求的信息并将其发送到客户端,Servlet的客户端可以提出请求并获得该请求的响应,它可以是任意的java应用程序、浏览器、或其他设备。

    Servlet可以生成动态的web页面,它担当web浏览器或其他HTTP客户程序发出的请求、与HTTP服务器上的数据库或应用程序之间交互的中间层,对所有

    的客户端请求,只需要创建一次Servlet实例,因此节约的大量的内存。

  2. 功能:

    • 创建并返回基于客户请求的动态HTML页面
    • 创建可嵌入到现有的HTML页面中的部分HTML页面
    • 与其他服务器资源进行通信
  3. Servlet容器响应客户请求的过程

    ————> ————>ServletRequest

    客户—Servlet容器—Servlet

    <———— <————ServletResponse

    步骤:

    ①Servlet引擎检查是否已经装载并创建了该Servlet实例对象,如果是执行第四步,否则执行第二步。

    ②装载并创建该Servlet的一个实例对象:调用该Servlet构造器。

    ③调用Servlet实例对象的init()方法。

    ④创建一个用于封装请求的ServletRequest对象和一个代表响应消息的ServletResponse对象,然后调用Servlet

    的service()方法并将请求和响应的对象作为参数传递进去。

    ⑤Web应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destory()方法。

  4. Servlet生命周期方法(以下方法都是Servlet容器负责调用)

    • 构造器:只被调用一次,只有第一次请求Serlet时,创建Servlet实例,调用构造器。这说明Servlet是单实例的。
    • init():只调用一次,在创建好实例之后立即调用,用于初始化当前Servlet
    • service():被多次调用,每次请求都会调用service(),实际用于响应请求
    • destory():只被调用一次,在当前Servlet所在的web应用程序被卸载前调用,用于释放当前Servlet所占用的资源。
  5. load-down-startup参数:可以指定创建Servlet实例的时机。

    为负数则在第一次请求时创建,为0则在Servlet容器加载时创建实例,数越小,创建越早

    配置在Servlet节点中:
<!-- 配置和映射Servlet -->
<servlet>
<!-- 这个名字随意起 -->
<servlet-name>hello</servlet-name>
<!-- 全类名:servlet.HelloServlet 实际的物理文件-->
<servlet-class>servlet.HelloServlet</servlet-class>
<!-- 指定Servlet实例创建的时机 -->
<load-on-startup>1</load-on-startup>
</servlet>

6 . Servlet注册与运行

Servlet程序必须通过Servlet容器来启动,并且存储目录有特殊要求,需要存储在/WEB-INF/classes目录中。

Servlet程序必须在web应用程序的web.xml文件中进行注册和映射他、其访问路径,才可以被Servlet引擎加载和被外界访问。

一个Servlet元素用于注册一个Servlet,它包含两个重要子元素<servlet-name>和<servlet-class>

分别用于设置Servlet的注册名称和完整类名(全类名)。

一个<servlet-mapping>元素用于映射一个已注册Serlvet的对外访问路径,它包含两个<servlet-name>和<servlet-pattern>于指定Servlet注册名称和Servlet对外访问路径。

例如:

 <!-- 注册Servlet -->
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>firstServlet.HelloServlet</servlet-class>
</servlet>
<!-- 映射Servlet路径 -->
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping> <servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello1</url-pattern>
</servlet-mapping>

注意:若是手动访问Servlet,则直接<url-pattern>中的值但是在开发过程之中,Servlet是表单提交时自动访问,所以一般情况下<url-pattern>中的值为from表单中action的值

7 . Servlet元素的其他子节点:

  <!-- 配置初始化参数,且节点必须在load-on-startup之前 -->
<servlet>
<init-param>
<param-name>user</param-name>
<param-value>root</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>1230</param-value>
</init-param>
</servlet>

8 . 细节

一个<servlet>节点可以配多个<servlet-mapping>,即多个<servlet-mapping>元素的子元素<servlet-name>

设置值可以是同一个Servlet的注册名。

在Servlet映射到的URL中也可以使用通配符,但是只能使用两种固定格式一种是.扩展名,另一种是/开头并以/*结尾

 <servlet-mapping>
<servlet-name>AnyName</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AnyName</servlet-name>
<url-pattern>/action/*</url-pattern>
</servlet-mapping>

Servlet(3)—Servlet的更多相关文章

  1. [Servlet] 初识Servlet

    什么是Servlet? 定义 Servlet的全称是 Server Applet,顾名思义,就是用 Java 编写的服务器端程序. Servlet 是一个 Java Web开发标准,狭义的Servle ...

  2. httpServletRequest对象、filter、servlet、servlet容器、catalina、tomcat、以及web容器之间的关系

    学习servlet的时候经常感到疑惑 HttpServletRequest是服务器创建的?还是servlet容器创建的? 过滤器是服务器创建的?还是servlet容器创建的? serlet容器和tom ...

  3. Servlet/JSP-01 Servlet及其生命周期

    一.起步 1.新建一个类继承Servlet接口 public class HelloServlet implements Servlet { @Override public void destroy ...

  4. 报javax.servlet.ServletException: Servlet.init() for servlet springmvc threw exception异常 的解决方案

    后台错误信息如下: javax.servlet.ServletException: Servlet.init() for servlet springmvc threw exception org.a ...

  5. HTTP协议 Servlet入门 Servlet工作原理和生命周期 Servlet细节 ServletConfig对象

    1 HTTP协议特点   1)客户端->服务端(请求request)有三部份     a)请求行--请求行用于描述客户端的请求方式.请求的资源名称,以及使用的HTTP协议版本号 请求行中的GET ...

  6. 【Servlet】Servlet应用的get、post访问及和JSP的配合使用

    Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面. 它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用 ...

  7. javax.servlet.ServletException: Servlet execution threw an exception 异常解决之一

    配置JDBC连接的JDBC.properties文件不存在(那天很奇怪配置文件不存在了,我也没有去移动那个文件.诡异呀)也会导致这个异常. 然后就报javax.servlet.ServletExcep ...

  8. javaWeb学习总结(3)- Servlet总结(servlet的主要接口、类)

    Servlet总结01——servlet的主要接口.类 (一)servlet类 Servlet主要类.接口的结构如下图所示: 要编写一个Servlet需要实现javax.servlet.Servlet ...

  9. 什么是Servlet,Servlet的作用,生命周期,如何创建、配置Servlet

    什么是Servlet,作用是? servlet是一个基于java技术的WEB组件,运行在服务器端,我们利用 sevlet可以很轻松的扩展WEB服务器的功能,使它满足特定的应用需要.servlet由se ...

  10. Servlet概述-servlet学习之旅(一)

    Servlet概述 servlet是server+applet的缩写.applet是运行于客户端浏览器的java小程序,java诞生的时候,因为applet而闻名于世,但是现在已经没有多少热使用了,而 ...

随机推荐

  1. eclipse4.2版本下面安装ADT,安装已经完成了,但没有ADT的那个图标显示

    如果安装过程没错,直接在Eclipse ->window->customize Perpective->Command Groups Availability 勾选andorid 选 ...

  2. Collection接口的常用方法

    [添加功能] boolean add(Object obj); //添加一个元素. boolean addAll(Collection c); //添加一个集合的元素(在后面追加). [删除功能] v ...

  3. 006 python操作符

    一:数值操作符 1.操作符 2.不同点 上面有了一个说法,这个 / 与其他的编程不同. 这个是精确的除法. 3.连续赋值 这种用法,第一次遇见,就记录下来. 4.注意点 重要的是要注意优先级的问题 二 ...

  4. Spring日记_02之搭建一个新项目

    程序 表现层 业务层 持久层 从持久层开始写 总结如何搭建一个项目 1.新建一个Maven项目 2.可能新建之后会有错,右键Deployment Descriptor: note, 选择Generat ...

  5. Centos7使用yum命令安装Mysql5.6.X

    首先:具体的安装步骤在mysql官方文档上都有详细的描述. 文档虽然是英文,不过很容易理解,我就不一一翻译了. 官方文档地址:https://dev.mysql.com/doc/refman/5.6/ ...

  6. day20 模块-sys,time,collection

    所有常用模块的用法:  http://www.cnblogs.com/Eva-J/articles/7228075.html 前情回顾: # 常用模块 # 常用模块 —— 东西多 # 异常处理 # 什 ...

  7. 非对称加密算法-RSA算法

    一.概述 1.RSA是基于大数因子分解难题.目前各种主流计算机语言都支持RSA算法的实现 2.java6支持RSA算法 3.RSA算法可以用于数据加密和数字签名 4.RSA算法相对于DES/AES等对 ...

  8. Scala-Unit6-final/type关键字、样例类&样例对象

    一.关键字 1.final关键字 用final修饰的类:不能被继承 用final修饰的方法:不能被重写 注意:(1)在Scala中变量不需要用final修饰,因为val与var已经限制了变量是否可变 ...

  9. 20165220 Java第四周学习总结

    教材学习内容总结 super:使用关键字super来访问和调用被子类隐藏的成员变量和方法. 接口:用关键字interface来定义一个接口.接口由类来实现以便使用接口中的方法,用关键字implemen ...

  10. [ 高危 ] hash碰撞DOS漏洞

    这是一个很神奇的漏洞 hotel.meituan.com订单页面,POST提交的是一串json数据.当把这串数据换成json碰撞数据 后,服务器原本 100毫秒可以响应的数据包,变成需要30秒才能响应 ...