Servlet

1.什么是Servlet

Servlet(java 服务器小程序)

  1. 他是由服务器端调用和执行的(一句话:是Tomcat解析和执行)

  2. 他是用java语言编写的, 本质就是Java类

  3. 他是按照Servlet规范开发的(除了tomcat->Servlet weblogic->Servlet)

  4. 功能强大,可以完成几乎所有的网站功能

2.开发方式

  1. 编写一个类去实现 Servlet 接口 / 编写一个类去继承 HttpServlet 类 (在实际项目中,继承 HttpServlet 类开发 Servlet 程序,更加方便)

  2. 根据业务需要重写 doGet 或 doPost 方法

  3. 在 web.xml/注解 中去配置 servlet 程序的访问地址

  4. 当然IDEA也可以直接右键create new servlet自动完成以上过程

3.浏览器调用 Servlet 流程分析

4.在web.xml定义一个servlet

<servlet>  
<servlet-name>t1</servlet-name>  
<servlet-class>类</servlet-class>  
<!-- 如果需要自动加载,加下面一句 -->  
<load-on-startup>1</load-on-startup>  
</servlet>  

<load-on-startup>标记web容器是否在启动的时候就加载这个servlet

当值为0或者大于0时,表示web容器在应用启动时就加载这个servlet;

当是一个负数时或者没有指定时,则指示容器在该servlet被选择时才加载;

正数的值越小,启动该servlet的优先级越高。

5.Servlet 注意事项和细节

  1. Servlet 是一个供其他 Java 程序(Servlet 引擎)调用的 Java 类,不能独立运行

  2. 针对浏览器的多次 Servlet 请求,通常情况下,服务器只会创建一个 Servlet 实例对象, 也就是说 Servlet 实例对象一旦创建,它就会驻留在内存中,为后续的其它请求服务,直至 web 容器退出/或者 redeploy 该 web 应用,servlet 实例对象才会销毁

  3. 在 Servlet 的整个生命周期内,init 方法只被调用一次。而对每次请求都导致 Servlet 引 擎调用一次 servlet 的 service 方法

  4. 对于每次访问请求,Servlet 引擎都会创建一个新的 HttpServletRequest 请求对象和一个 新的 HttpServletResponse 响应对象,然后将这两个对象作为参数传递给它调用的 Servlet 的 service()方法,service 方法再根据请求方式分别调用 doXXX 方法

  5. 如果在元素中配置了一个<load-on-startup>元素,那么 WEB 应用程序在启动时, 就会装载并创建 Servlet 的实例对象、以及调用 Servlet 实例对象的 init()方法

6.ServletConfig

基本介绍:

  1. ServletConfig 类是为 Servlet 程序的配置信息的类

  2. Servlet 程序和 ServletConfig 对象都是由 Tomcat 负责创建

  3. Servlet 程序默认是第 1 次访问的时候创建,ServletConfig 在 Servlet 程序创建时,就创建一个对应的 ServletConfig 对象

ServletConfig 类能干什么:

  1. 获取 Servlet 程序的 servlet-name (下文中的DBServlet)

  2. 获取xml中配置好的初始化参数 init-param中的param-name和value

  3. 获取 ServletContext 对象

    一言以蔽之:获取在web.xml中配置好的信息和ServletContext

     <servlet>
           <servlet-name>DBServlet</servlet-name>
           <servlet-class>DBServlet</servlet-class>
           <init-param>
               <param-name>username</param-name>
               <param-value>root</param-value>
           </init-param>
           <init-param>
               <param-name>pwd</param-name>
               <param-value>20030515</param-value>
           </init-param>
    </servlet>
       <servlet-mapping>
           <servlet-name>DBServlet</servlet-name>
           <url-pattern>/dbservlet</url-pattern>
       </servlet-mapping>

7.ServletContext

基本介绍:

  1. ServletContext 是一个接口,它表示 Servlet 上下文对象

  2. 一个 web 工程,只有一个 ServletContext 对象实例

  3. ServletContext 对象 是在 web 工程启动的时候创建,在 web 工程停止的时销毁

  4. ServletContext 对象可以通过 ServletConfig.getServletContext 方法获得对 ServletContext 对象的引用,也可以通过 this.getServletContext()来获得其对象的引用。

  5. 由于一个 WEB 应用中的所有 Servlet 共享同一个 ServletContext 对象,因此 Servlet 对象 之间可以通过 ServletContext 对象来实现多个 Servlet 间通讯。ServletContext 对象通常也被 称之为域对象。

ServletContext 能干什么 :

  1. 获取 web.xml 中配置的上下文参数 context-param (信息和整个 web 应用相关,而不是属于某个Servlet)

  2. 获取当前的工程路径,( 比如 /servlet )

  3. 获取工程部署后在服务器硬盘上的绝对路径 注意是out目录下的,因为访问资源都是访问编译后的源文件

    ( 比 如 : D:\hspedu_javaweb\servlet\out\artifacts\servlet_war_exploded)

  4. 像 Map 一样存取数据, 多个 Servlet共享数据

8.HttpServletRequest

基本介绍:

  1. HttpServletRequest 对象代表客户端的请求

  2. 当客户端/浏览器通过 HTTP 协议访问服务器时,HTTP 请求头中的所有信息都封装在这个对象中

  3. 通过这个对象的方法,可以获得客户端这些信息。

HttpServletRequest 能干什么:

获取封装好的 HTTP 请求消息中的各类元素(请求头、附带的数据等)

请求转发

请求转发指一个 web 资源收到客户端请求后,通知服务器去调用另外 一个 web 资源进行处理

请求转发注意事项和细节

  1. 浏览器地址不会变化(地址会保留在第 1 个 servlet 的 url)

  2. 在同一次 HTTP 请求中,进行多次转发,仍然是一次 HTTP 请求

  3. 在同一次 HTTP 请求中,进行多次转发,多个 Servlet 可以共享 request 域/对象的数据(因 为始终是同一个 request 对象)

  4. 可以转发到 WEB-INF 目录下(后面做项目使用)

  5. 不能访问当前 WEB 工程外的资源

JavaWeb之Servlet详解(以及浏览器调用 Servlet 流程分析图)的更多相关文章

  1. Servlet详解

    原文出处:http://blog.csdn.net/q547550831/article/details/50458456 Servlet详解 基本概述 Session在计算机中,尤其是在网络应用中, ...

  2. Java Servlet详解(体系结构+注解配置+生命周期)

    Java Servlet详解(注解配置+生命周期) 什么是Servlet : (Server applet)? 顾名思义:服务端的小程序 Servlet只是一个接口,定义了Java被浏览器访问到(To ...

  3. jsp/servlet学习二之servlet详解

    Servlet API概览 Servlet API有一下四个java包: 1,javax.servlet,其中包含定义servlet和servlet容器之间契约的类和接口. 2,javax.servl ...

  4. Servlet详解(转)

    我们通过浏览器访问一个网页的过程,实际上是浏览器(例如IE)通过HTTP协议(参见附录B)和Web服务器(也叫做HTTP服务器)进行交互的过程. 也就是说,用户要访问网络资源,首先需要在网络上架设We ...

  5. Java 详解 JVM 工作原理和流程

    Java 详解 JVM 工作原理和流程 作为一名Java使用者,掌握JVM的体系结构也是必须的.说起Java,人们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成:Java ...

  6. [推荐]ORACLE PL/SQL编程详解之三:PL/SQL流程控制语句(不给规则,不成方圆)

    原文:[推荐]ORACLE PL/SQL编程详解之三:PL/SQL流程控制语句(不给规则,不成方圆) [推荐]ORACLE PL/SQL编程详解之三: PL/SQL流程控制语句(不给规则,不成方圆) ...

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

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

  8. Java Web(一) Servlet详解!!

    这篇文章到上一篇,距离的有点遥远呀,隔了大概有两个月把,中间在家过了个年,哈哈~ 现在重新开始拾起,最近在看一本个人觉得很棒的书,<Java Web 整合开发王者归来>,现在写的这一系列基 ...

  9. (转)Java Web(一) Servlet详解!!

    https://www.cnblogs.com/whgk/p/6399262.html 这篇文章到上一篇,距离的有点遥远呀,隔了大概有两个月把,中间在家过了个年,哈哈~ 现在重新开始拾起,最近在看一本 ...

  10. web开发(一)-Servlet详解

    在网上看见一篇不错的文章,写的详细. 以下内容引用那篇博文.转载于<http://www.cnblogs.com/whgk/p/6399262.html>,在此仅供学习参考之用. 一.什么 ...

随机推荐

  1. Defi开发简介

    Defi开发简介 介绍 Defi是去中心化金融的缩写, 是一项旨在利用区块链技术和智能合约创建更加开放,可访问和透明的金融体系的运动. 这与传统金融形成鲜明对比,传统金融通常由少数大型银行和金融机构控 ...

  2. 线性规划与整数规划—R实现

    线性规划的R语言实现 R语言在针对各类优化模型时都能快速方便的求解,对运输问题.生产计划问题.产销问题和旅行商问题等都有专门的R包来解决.线性规划与整数规划的区别主要在于对决策变量的取值约束有所不同. ...

  3. python之操作注册表

    与注册表操作相关的函数可以分为打开注册表.关闭注册表.读取项值.c添加项值.添加项,以及删除项等几类. 描述 HKEY_CLASSES_ROOT,是HKEY_LOCAL_MACHINE\Softwar ...

  4. 基于kubeasz部署高可用k8s集群

    在部署高可用k8s之前,我们先来说一说单master架构和多master架构,以及多master架构中各组件工作逻辑 k8s单master架构 提示:这种单master节点的架构,通常只用于测试环境, ...

  5. ChatGPT在工业领域的研究与应用探索-数据与工况认知

    1.      ChatGPT发展现状... 2 2.      ChatGPT如何与工业相结合... 2 3.      ChatGPT在工业领域的研究与应用... 3 1.   ChatGPT发展 ...

  6. [双目视差] 立体匹配算法推理 - SGBM算法(二)

    文章目录 立体匹配算法推理 - SGBM算法(二) 一.SGM算法 二. 后处理 立体匹配算法推理 - SGBM算法(二) 一.SGM算法 SGM算法的全称为Semi-Global Matching, ...

  7. UIOTOS:一款无门槛的前端0代码搭建工具

    什么是UIOTOS? UIOTOS中文名称前端大师,是一款基于图形技术的前端0代码工具,支持通过连线和嵌套无门槛来搭建各类复杂的的交互界面,包括后台管理系统.组态数据大屏等,实现跟代码开发媲美的效果. ...

  8. Solon 统一的返回结果调整

    使用 "统一的渲染控制" 可以对输出做统一的控制外...还可以借助路由拦截器 RouterInterceptor ,对 mvc 返回结果做提交确认机制(即可修改)进行控制(相对来讲 ...

  9. MySQL-分组函数ROLLUP的基本用法

    一.ROLLUP简介 ROLLUP是GROUP BY子句的扩展. ROLLUP选项允许包含表示小计的额外行,通常称为超级聚合行,以及总计行. 通过使用ROLLUP选项,可以使用单个查询生成多个分组集. ...

  10. 数据库定时备份linux篇

    目录 1 序言 2 crond 相关知识点 2.1 crond 是什么? 2.2 crontab 进行定时任务设置 2.2.1 crontab 指令选项说明 2.2.2 crontab 指令使用格式 ...