Day34 servlet

三、如何使用Servlet

1、继承GenericServlet类(通用)

(1)GenericServlet类有一个关键的设计,定义了一个私有的ServletConfig成员变量,在init()方法中,由Servlet容器传入ServletConfig对象与之匹配。

(2)GenericServlet类中唯一一个抽象方法是Service方法,子类必须实现Service方法,以为用户提供特定的服务。

2、继承HttpServlet类,是GenericServlet的子类,重写了Service方法,提供了HTTP的相关服务实现。用户需要做的事,根据实际情况,重写doPost()、doGet()等方法。

 

Servlet是JavaWeb三大组件之一(Servlet、Filter、Listener),且最重要

1.1.1 Servlet入门(重点)

方式1:实现Sevrlet接口(了解)

方式2:

编写servlet步骤:

Servlet规范要求:Servlet程序需要编写实现类,并在web.xml进行配置

l 继承javax.servlet.http.HttpServlet

l 复写doGet()和doPos()t方法

l 配置web.xml文件

1.1.1.1 Servlet的执行的流程详解

1.1.1.2 Request获得请求参数(掌握)

1.1.2 Request接收请求参数

1.1.2.1 Request接收请求参数的概述

请求参数

方法名

描述

String getParameter(String name)

获得指定参数名对应的值。如果没有返回null,如果只有多个获得第一个。

例如:username=jack

1.1 Servlet生命周期(重点)

l 概念:Servlet生命周期就是Servlet对象从创建到销毁的过程

n 何时创建:用户第一次访问servlet是创建

n 何时销毁:项目从服务器中移除或者服务器停止

l Servlet规定,所有的servlet必须实现javax.servle.Servlet接口

l void init(ServletConfig config):初始化方法

* 初始化方法

* 执行时机:默认第一次访问的时候

* 执行次数:一生只一次(单例)

* 执行者:服务器(tomcat)

l void service(ServletRequest request,ServletResponse response):服务方法

* 服务方法

* 执行时机:每次访问的时候

* 执行次数:访问一次执行一次

* 执行者:服务器

l void destroy():销毁方法

* 销毁方法

* 执行时机:项目被移除的时候或者服务器正常关闭的时候

* 执行次数: 一生只一次

* 执行者:服务器

1.2 ServletConfig介绍(了解)

l 概念

n servlet的配置对象,一个servlet对应一个servlet配置对象

l 作用

n 获得servlet名称  <servlet-name>ConfigServlet</servlet-name>

n 获得servlet的初始化参数

n 获得上下文对象(全局管理者ServletContext)

l 创建(ServletConfig的生命周期):

服务器创建servlet的同时,也创建了当前servlet的配置对象,通过servlet的init方法传递给当前servlet

获取servletconfig.

servlet中通过了 getServletConfig()

常见的api(了解)

方法名

返回值类型

描述

getInitParameter(name)

String

获得Servlet的初始化参数的

getInitParameterNames()

Enumeration

获得所有Servlet的初始化参数的名称

getServletContext()

ServletContext

获得ServletContext对象的引用

getServletName()

String

获得Servlet在web.xml中配置的name的值。

及<servlet-name>标签配置内容。

、如何保证Servlet线程安全

1、保证变量作用域合理,线程私有的变量要定义在方法中。

2、共享变量要用保证线程安全,可以使用加锁、atomic类、volatile关键字实现。

Servlet 执行流程 生命周期 ServletConfig 线程安全的更多相关文章

  1. Servlet执行流程和生命周期【慕课网搬】

    Servlet执行流程(GET方式为例) 首先用户客户端浏览器发出Get方式(点击超链接方式)向浏览器发出请求. 服务器接收到客户端点击超链接,接收到GET请求之后,服务器到WEB.xml中<s ...

  2. Servlet执行流程和生命周期

    Servlet执行流程 Get方式请求HelloServlet ---> <a href="servlet/HelloServlet"> ↓ 服务器在配置文档中查 ...

  3. Servlet生命周期与线程安全

    上一篇介绍了Servlet初始化,以及如何处理HTTP请求,实际上在这两个过程中,都伴随着Servlet的生命周期,都是Servlet生命周期的一部分.同时,由于Tomcat容器默认是采用单实例多线程 ...

  4. jsp当做第二个servlet request的生命周期 请求 响应 不管中间经历多少个servlet 只要最后一个serlvt执行后 则生命周期结束 request的域消失

    jsp当做第二个servlet  request的生命周期   请求 响应  不管中间经历多少个servlet 只要最后一个serlvt执行后 则生命周期结束  request的域消失

  5. Java Web学习总结(9)——servlet和Jsp生命周期解读

    一.servlet的工作工程 Servlet是运行在Servlet容器(有时候也叫Servlet引擎,是web服务器和应用程序服务器的一部分,用于在发送的请求和响应之上提供网络服务,解码基于MIME的 ...

  6. servlet反射、生命周期、接口

    什么是Servlet Servlet是JavaWeb的三大组件之一,它属于动态资源.Servlet的作用是处理请求,服务器会把接收到的请求交给Servlet来处理,在Servlet中通常需要: l  ...

  7. Servlet配置及生命周期

    1.设置Ecilipse快捷  file new 2.创建Servlet程序 1). 创建一个 Servlet 接口的实现类.              public class HelloServl ...

  8. 面试之jsp、Servlet相关知识——生命周期, 区别等

    1.servlet生命周期 所谓生命周期,指的是servlet容器如何创建servlet实例.分配其资源.调用其方法.并销毁其实例的整个过程. 阶段一: 实例化(就是创建servlet对象,调用构造器 ...

  9. servlet简介及生命周期

    Servlet 简介 Servlet 是什么? Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上 ...

随机推荐

  1. SpringCloud的服务注册中心(二)注册中心服务端和两个微服务应用客户端

    一.构建EurekaServer工程 1.pom.xml 2.application.yml 3. EurekaServerApp.java 4.启动EurekaServer 二.构建部署 Eurek ...

  2. 为什么我不推荐你使用vue-cli创建脚手架?

    最近在知乎看到一个问题,原问题如下: "很奇怪,为什么现在能找到自己手动创建vue脚手架的文章非常少,而且大家似乎对webpack4的热情并不高,对于想基于vue2.0+webpack4搭建 ...

  3. kafka之zookeeper 节点

    1.zookeeper 节点 kafka 在 zookeeper 中的存储结构如下图所示:

  4. Oracle处理XML字段时遇到的ORA-31013: XPATH 表达式无效问题

    select extractValue(ed.info_id, '/Root/ExpandProfile/PhoneNumber') as phone, extractValue(ed.info_id ...

  5. python/进程线程的总结

    python/进程线程的总结 一.进程和线程的描述: 进程:最小的资源管理单位 线程:最小的执行单位 执行一个进程时就默认执行一个线程(主线程) 进程和线程的工作方式: 串行: 假如共有A.B.C任务 ...

  6. 数据结构 Python实现

    参考博客:浅谈算法和数据结构: 一 栈和队列   Python数据结构--栈.队列的实现(一)    Python数据结构--栈.队列的实现(二)    Python数据结构--链表的实现 数据结构 ...

  7. Codeforces Round #436 (Div. 2) D. Make a Permutation!

    http://codeforces.com/contest/864/problem/D 题意: 给出n和n个数(ai <= n),要求改变其中某些数,使得这n个数为1到n的一个排列,首先保证修改 ...

  8. SpringBoot(四):banner的控制

    banner在springboot中是一个支持可配(banner的样式,banner的颜色,banner的内容).是否显示. 1)banner显示内容配置: 默认springboot如果在src/re ...

  9. 框架学习笔记之Mybatis(二)

    一.动态sql 通过mybatis提供的标签,实现sql语句的拼接. 1.where <select id="findUserList" parameterType=&quo ...

  10. RTKLIB源码解析(一)——单点定位(pntpos.c)

    RTKLIB源码解析(一)--单点定位(pntpos.c) 标签: GNSS RTKLIB 单点定位 [TOC] pntpos int pntpos (const obsd_t *obs, int n ...