今天来讲javaweb的第三个阶段学习。

老规矩,首先先用一张思维导图来展现今天的博客内容。

ps:我的思维是用的xMind画的,如果你对我的思维导图感兴趣并且想看到你们跟详细的备注信息,请点击下载

另外:如果图看不清的话请右击---在新窗口中打开会清楚很多。

一、Servlet概述

1 Servlet是什么?

是sun公司提供一套规范,用于接受客户浏览器发出的请求,响应给客户浏览器。是运行在服务端一个小程序。

2 Servlet入门:Servlet是一个接口,要想实现Servlet功能必须实现该接口或者继承该接口的实现类。

已知实现类:GenericServlet

Servlet接口中的方法:

init(ServletConfig) 初始化

service(ServletRequest,ServletResponse) 核心方法

destroy() 销毁

二、Servlet编码步骤

主要目的:为了了解Servlet从无到有,到能运行访问的一个过程

第一步:编写

1 编写FirstServlet实现Servlet接口或者继承GenericServlet

第二步:编译    

2 编译FirstServlet

直接用javac命令编译servlet会有问题,需要设置classpath,加入servlet-api.jar

该jar存在于tomcat/lib/

    第三步:配置

3 配置Servlet,使其生效

配置Servlet,是针对应用而言的,在web.xml中配置

注意:web.xml文件必须另存为UTF-8格式编码的

    第四步:部署

4 部署到Tomcat,访问http://localhost:8080/firstservlet/FirstServlet

明确 规范(sun) 服务器(tomcat) 我们的应用之间的关系

三、Servlet执行过程

1 客户浏览器——Tomcat服务器——应用——应用的配置(web.xml)——Servlet——Servlet执行完成响应客户浏览器

四、Servlet编码方式

1 继承GenericServlet类,是javax.servlet包下的一个抽象类

案例:ServletDemo1 了解创建一个Servlet是两步,第一步建类,第二部映射

2 继承HttpServlet类,是javax.servlet.http包下面的一个抽象类,是GenericServlet的子类。

注意:(重要)我们在继承HttpServlet时,只需要覆盖doxxx的方法,常用就是doGet和doPost,不要覆盖service。

案例:ServletDemo2 继承自HttpServlet的ServletDemo2的查找顺序

五、Servlet生命周期

出生——活着——死亡,从生到死的一个过程(人有,内存中的对象也有)

出生:请求到达Servlet时,对象就创建出来,并且初始化成功。只出生一次,就放到内存中。

活着:服务器提供服务的整个过程中,该对象一直存在,每次只是方法service方法。

死亡:当服务停止时,或者服务器挂机时,对象消亡。

单例模式:只有一个对象实例。Servlet就是单例的,只有一个实例。

六、Servlet线程安全

1 Servlet不是线程安全的。

注意:在Servlet中尽量避免使用全局变量,但不是绝对。请参看HttpServlet的service(HttpServletRequest,HttpServletRequest)方法。

七、Servlet注意事项

        1 映射方式:

方式1:通配符+固定结尾格式 *.do

方式2:/开头+通配符             /servlet/*

方式3:指名道姓    (最常用)     /servlet/ServletDemo

方式1和方式2之间是有一定的区别:就是优先级的问题。

方式3的优先级最高,其次是以/开头的,最后才是*.do方式。

        2 多路径映射:

url-pattern可以映射多个地址

    3 配置启动服务时,自动创建servlet

load-on-startup元素标记容器

是否在启动的时候就加载这个servlet(实例化并调用其init()方法)。

使用:<load-on-startup>启动顺序,必须是正整数,且不能重复</load-on-startup>来设置服务器启动时创建servlet对象

    4 默认Servlet

当我们访问的资源,在web.xml中找不到对应的映射时,这个时候会去找默认的Servlet,该Servlet由服务器提供,Tomcat服务器的默认Servlet在:

apache-tomcat-7.0.57-src.zip\apache-tomcat-7.0.57-src\java\org\apache\catalina\servlets

一切都是Servlet。

八、Servlet参数配置:ServletConfig

        1 ServletConfig 是什么?

它是Servlet的配置参数对象,每个Servlet都一个自己的ServletConfig

        2 ServletConfig 怎么获取?

由服务器容器提供,我们直接使用即可。每次覆盖init方法的时候,注意:覆盖的是没有参数的init方法。

        3 如何配置ServletConfig参数?

<init-param>

<param-name></param-name>

<param-value></param-value>

</inti-param>

要写在<servlet>元素内

        4 如何使用ServletConfig得到配置好的参数

九、ServletContext

        1 ServletContext是什么?

它是应用的全局上下文对象,每个应用只有一个ServletContext对象。

每个应用都可以有多个Servlet,多个Servlet之间的通信就是通过ServletContent对象获取。

        2 如何获取ServletContext?

        3 ServletContext 生命周期

出生——活着——死亡

出生: 应用一加载,该对象就被创建出来了。只有一个实例对象。

(Servlet和ServletContext都是单例的)

活着:只要应用一直提供服务,该对象就一直存在。

死亡:应用被卸载(或者服务器挂了),该对象消亡。

        4 域对象的概念

该对象有一个作用域(就是使用的范围),是web应用中最大的作用域,叫application域。每个应用只有一个application域。

如何往域中存放参数及如何获取域中的参数

        5 如何获取全局参数

针对ServletContext配置的参数就是全局参数

Servlet类视图全图:

        6 ServletContext的一些细节

1 请求转发(基于ServletContext)

请求转发是服务器的行为,服务器内部自己去请求下一个地址,浏览器地址栏不会发生变化。

2 使用ServletContext获取文件路径,实现下载

使用的方法是context.getRealPath();

    3 读取配置文件的各种方式(.properties)

InputStream

ResourceBundle

ClassLoader

参看:day07_01_servlet/ServletDemo12

Javaweb学习笔记3—Serverlet相关推荐

  1. JavaWeb学习笔记(十)--HttpServletRequest

    1. HttpServletRequest简介 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中 2. Ht ...

  2. JavaWeb学习笔记-目录(待完成)

    JavaWeb学习笔记-目录(待完成) 01-基础加强(注解+反射) 02-mysql基础 03-mysql约束 04-mysql多表事务 05-jdbc 06-jdbc连接池JDBCTemplate ...

  3. JavaWeb学习笔记2 —— Web服务器简介

    JavaWeb学习笔记2 -- Web服务器简介 参考教程B站狂神https://www.bilibili.com/video/BV12J411M7Sj 相关技术 ASP: 微软:国内最早流行的就是A ...

  4. B站狂神说JavaWeb学习笔记

    JavaWeb学习笔记(根据b站狂神说java编写) 1.基本概念 1.1 前言 静态Web: 提供给所有人看数据不会发生变化! HTML,CSS 动态Web: 有数据交互,登录账号密码,网站访问人数 ...

  5. JavaWeb学习笔记(5)-B站尚硅谷

    文章目录 十四.书城项目第三阶段--优化 (1)页面jsp动态化 (2)抽取页面中相同的内容 A.登录成功的菜单 B.base.css.jQuery标签 C.每个页面的页脚 D.manager模块的菜 ...

  6. javaweb学习笔记2(jquery的使用,以及常用的方法,选择器,过滤器)

    javaweb学习笔记2 javascript正则表达式 regfxp对象 方式1: var putt=new RegExp("e");//表示要求字符串中必须包含字符串evar ...

  7. 【javaweb学习笔记】servlet-api,filter和Listener

    javaweb学习笔记 1. servlet-api 1.1 servlet初始化 1.2 ServletContext和context-param 2. 什么是业务层 3. IOC 3.1 耦合/依 ...

  8. 【Javaweb学习笔记】在Eclipse中创建Web项目

    [Javaweb学习笔记]在Eclipse中创建Web项目 哈喽大家好,这里是Java框架学习笔记专栏第二期 本期内容--在Eclipse中创建Web项目 前期回顾: 第一期--schema约束 笔者 ...

  9. java web孤傲苍狼,JavaWeb学习笔记

    我看的资料是孤傲苍狼的javaweb学习笔记,他写的真的很全,这或许就是社区力量吧!哪些问题不知道,上网搜一搜就有了,让自己不进步的敌人,只有懒惰了. 这是我接触JavaWeb的第二周,有一些自己的理 ...

最新文章

  1. mqttjar包_GitHub - a-voyager/MqttLib: Mqtt 通信封装库.
  2. 大厂产品专家是怎么做项目的?
  3. WordPress环境配置与安装
  4. 腾讯优图开源深度学习推理框架 TNN,助力 AI 开发降本增效
  5. mysql6获取不到连接_codesmith6.5连接Mysql提示“找不到请求的 .Net Framework Data Provider。可能没有安装。”解决方法...
  6. 不要轻易碰我,不然我就知道你有多软了 | Science Robotics
  7. php正则字母,PHP匹配连续的数字或字母的正则表达式
  8. javascript一维数组的排序
  9. 游学只缘图利国 求知理应做腾骧
  10. Velodyne 16线三维激光雷达
  11. matlab 方位角 经纬度,经纬度转方位角matlab程序
  12. Centos7设置开机自动运行脚本
  13. 基于Open vSwitch搭建虚拟路由器
  14. CVPR_2021_Fast-GANFIT: Generative Adversarial Networkfor High Fidelity 3D Face Reconstruction
  15. 敏捷团队要有一个《伊凡卡目标》——计划会的共识和每日站会的焦点
  16. Redis(十九),老男孩linux视频
  17. 2013年3月17日
  18. 济南职业学院计算机就业好吗,济南职业学院好不好?排名怎么样评价如何
  19. Avaya Aura System Manager 8.1.3.x Hot Fix for Log4j vulnerabilities.
  20. Vicor携创新产品“登陆”ODCC大会,赶紧看这里!

热门文章

  1. ResNet50网络结构
  2. python爬iptv直播源_GitHub - linnoreading/iptv-m3u: python 爬的直播源数据
  3. 根据文件MD5删除重复文件
  4. C语言/C++编程学习:C语言环境设置
  5. 实用帖!分享5个素材丰富的资源网站
  6. 通行时间可调的两路口交通灯设计实验(基于Multisim仿真)
  7. 云服务器和云虚拟主机有什么区别
  8. 微信PC电脑桌面端多账号登录微信多开方法
  9. 计算机一级考试内容有哪些?
  10. B站尚硅谷React入门教程