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. Python 爬取淘宝商品信息和相应价格

    !只用于学习用途! plt = re.findall(r'\"view_price\"\:\"[\d\.]*\"',html) :获得商品价格和view_pri ...

  2. 个人网站建设(适合Java初学者)(一)

    概述 作为一个在八本学校在校生,没有实验室,也没有项目可做.一直想做一个个人博客,一年前学完javaweb之后做了一个简单的博客,ui惨不忍睹就算了,还有各种bug.酝酿了很久,寒假用了将近一个月时间 ...

  3. POJ-1789 Truck History---最小生成树Prim算法

    题目链接: https://vjudge.net/problem/POJ-1789 题目大意: 用一个7位的string代表一个编号,两个编号之间的distance代表这两个编号之间不同字母的个数.一 ...

  4. linux系统环境与文件权限

    默认有6个命令交互通道和一个图形界面交互通道,默认进入到的是图形界面通道 命令交互模式切换:ctrl+alt+f1---f6 图形交互界面 ctrl+alt+f7 1.图形界面交互模式 - termi ...

  5. python自定义函数可以向前引用不用声明

    #有些编程语言不够"聪明",向这类向前引用的方式会导致报错,但Python足够"醒目",这段代码是正确的! def next():     print('我在n ...

  6. 告知服务器意图的http方法

    1.GET 用来获取资源,返回已有的结果 2.POST 传输实体主体,返回处理过后的结果 3.PUT 向服务器传输文件,返回是否成功的状态码 4.DELETE 删除服务器文件,返回是否成功的状态码 5 ...

  7. Xshell实现Windows上传文件到Linux主机

    我是怎么操作的: 1.打开一台本地Linux虚拟机,使用mount 挂载Windows的共享文件夹到Linux上,然后拷贝数据到Linux虚拟机里面:(经常第一步都不顺利,无法挂载Windows的文件 ...

  8. [LeetCode] Redundant Connection II 冗余的连接之二

    In this problem, a rooted tree is a directed graph such that, there is exactly one node (the root) f ...

  9. [LeetCode] Valid Palindrome II 验证回文字符串之二

    Given a non-empty string s, you may delete at most one character. Judge whether you can make it a pa ...

  10. 原生http请求封装

    满血复活,今天开始开始更新博客.随着es6的普遍应用,promise属性也随之用之普遍,我们在一些项目中,为了避免引入一些http库,节省空间,就简单将原生http请求做了封装处理,封装代码如下:(其 ...