第1章 Servlet的生命周期

1.1.1 Servlet的生命周期概述

1.1.1.1 什么是生命周期

生命周期:一个对象从创建到销毁过程。

1.1.1.2 Servlet的生命周期(*****)

Servlet生命周期:Servlet对象从创建到销毁的过程。

  • Servlet何时被创建又是何时被销毁的?

Servlet中有init,service,destroy方法,这几个方法称为是Servlet生命周期相关的方法。

  • Servlet是在第一次被访问的时候会被实例化,只要Servlet一被实例化那么Servlet中的init方法就会执行(init只会执行一次)。任何一次从客户端发送来的请求,那么Servlet中的service方法就会执行(在service方法的内部根据请求的方式不同调用不同doXXX方法)。当Servlet从服务器中移除或者服务器关闭的时候Servlet对象被销毁,里面的destroy方法就会执行,然后垃圾回收就会将其回收掉。

1.1.1.3 代码演示Servlet的生命周期

1.1 Servlet的启动时加载

1.1.1 为什么使用启动时加载

Servlet对象是第一次被访问的时候会被创建的,init方法就会执行。假设在init方法中做了一些比较耗时的操作(比如:加载了一些配置文件并且解析可能需要花费3秒钟)。第一个用户第一次访问这个Servlet的时候,需要等待3秒钟。如何使第一个用户在第一次访问的时候不需要花费这么长时间?

1.1.2 什么是启动时加载

Servlet默认是在第一次访问的时候创建的对象,现在通过一个配置将Servlet的实例化的过程放在服务器启动的时候(让服务器启动的时候创建Servlet的对象)。如果现在这样做那么之前花费的时间就会在服务器启动的时候一起花费掉了。对于用户来讲就不需要额外花费这个时间。

1.1.3 配置完成启动时加载

1.1 Servlet的访问路径的配置

1.1.1 Servlet中的urlPattern的配置

1.1.1.1 <url-pattern>的配置方式

  • 完全路径匹配

    • 以 / 开始 比如:/ServletDemo1 /aaa/ServletDemo2

  • 目录匹配

    • 以 / 开始,以 /*结束 比如:/* /aaa/* /aaa/bbb/*

  • 扩展名匹配

    • n 不能以 / 开始,以*开始 比如:*.action *.do *.jsp

1.1.1.2 访问的优先级:

完全路径匹配  >  目录匹配  >  扩展名匹配

1.2 ServletConfig对象

1.2.1 ServletConfig对象的概述

ServletConfig用来获得Servlet的相关的配置的对象。

1.2.1.1 获得ServletConfig对象

1.2.1.2 ServletConfig对象的API

  • 获得Servlet的初始化参数
  • 获得ServletContext对象
  • 获得Servlet的名称

1.2.1.3 演示ServletConfig的API

  • 配置初始化参数

    • 配置

  • 实现

1.3 ServletContext对象之获取web项目信息

1.3.1 ServletContext对象概述

1.3.1.1 什么是ServletContext

ServletContext:Servlet的上下文对象。ServletContext对象对Servlet之前和之后的内容都知道。这个对象一个web项目只有一个。在服务器启动的时候为每个web项目创建一个单独的ServletContext对象。

1.3.2 ServletContext对象的作用

1.3.2.1 作用一:用来获取web项目信息

因为一个web项目只有一个ServletContext对象,所以这个对象对整个项目的相关内容都是了解的。

  • 方法:

    • 获取文件的MIME类型:

    • 获取web项目请求工程名:

    • 获取web项目的初始化参数:

1.1 ServletContext对象之读取web项目下文件

1.1.1 ServletContext对象的作用

1.1.1.1 作用二:读取web项目下的文件

之前使用IO流就可以读取文件(java项目中)。现在是一个web项目,web项目需要发布到tomcat下才能访问的。获取web项目下的文件如果使用传统的IO就会出现问题(原因:路径中使用的是相对路径,相对的是JRE环境)。

1.1.1.2 读取文件的代码实现

1.4 ServletContext对象之作为域对象存取数据

1.4.1 域对象概述

1.4.1.1 什么是域对象

域对象:指的是将数据存入到域对象中,这个数据就会有一定的作用范围。域指的是一定的作用范围。

1.4.2 ServletContext作为域对象

1.4.2.1 ServletContext作为域对象的API

l 存入数据的方法:

l 获取数据的方法:

l 移除数据的方法:

1.4.2.2 ServletContext作为域对象的作用范围

ServletContext是在服务器启动的时候为每个web项目单独创建一个ServletContext对象。当web项目从服务器中移除,或者是关闭服务器的时候ServletContext对象会被销毁。向ServletContext中保存的数据一直存在(当服务器关闭的时候ServletContext对象被销毁,然后里面数据才会失效)。范围:整个web应用。

1.4.3 ServletContext域对象代码演示

1.4.3.1 代码演示

1.1 Response对象的概述

1.1.1 Response对象的概述

1.1.1.1 什么是Response

开发的软件是B/S结构的软件,可以通过浏览器访问服务器的软件。从浏览器输入一个地址访问服务器(将这个过程称为是请求)。服务器接收到请求,需要进行处理,处理以后需要将处理结果显示回浏览器端(将这个过程称为是响应)。

1.1.1.2 画图说明Response对象

1.5 Response对象的API

1.5.1 Response对象的API

1.5.1.1 Response关于响应行的方法

  • 设置响应的状态码

    • 200 正确
    • 302 重定向
    • 304 查找本地缓存
    • 404 请求资源不存在
    • 500 服务器内部错误

1.5.1.2 Response关于响应头的方法

  • set开头的方法:针对一个key对应一个value的情况。

    • 举例:比如有一个头 content-Type:text/html  setHeader(“content-Type”,”text/plain”);
    • 最终得到头的结果:content-Type:text/plain

  • add开头的方法:针对一个key对应多个value的情况。

    • 举例:比如有一个content-Type:text/html   addHeader(“content-Type”,”text/plain”);
    • 最终得到头的结果:content-Type:text/html,text/plain

1.5.1.3 Response关于响应体的方法

1.5.1.4 Response其他的API

  • 重定向的方法

  • 设置浏览器打开页面时候采用的字符集

  • 设置响应字符流的缓冲区字符集

  • 服务器向浏览器回写Cookie的方法

1.6 Response对象的API的代码演示

1.6.1 Response对象API的代码演示

1.6.1.1 设置状态码

1.6.1.2 完成重定向

重定向:302状态码和Location响应头结合使用的效果。

  • 实际开发中可以使用

response.sendRedirect(“/web01/ResponseDemo2”);替换重定向两句写法

1.6.1.3 定时刷新效果

1.7 页面定时跳转的扩展

1.7.1 使用JS完成读秒的效果

1.7.1.1 在HTML中完成页面跳转

  • 多学一招:

1.7.1.2 使用JS完成读秒效果

第2章 Response对象响应的中文乱码处理

2.0.1 Response向页面响应中文

2.0.1.1 使用字节流响应中文

  • 编写代码

****使用上述代码向页面输出中文是否会有乱码?

  • 不一定

    • 其实这个乱码的产生与中文转成字节数组及浏览器打开方式(打开的时候采用的默认字符集)有关
  • 解决:
    • 将中文转成字节数组的时候和浏览器默认打开的时候采用的字符集一致即可。

2.0.1.2 使用字符流响应中文

  • 编写代码

****使用上述代码向页面输出中文是否会产生乱码?

  • 一定乱码
  • 原因:
    • 字符流是有缓冲区的,response获得字符流,response设计默认的缓冲区编码是ISO-8859-1。这个字符集不支持中文的。
  • 解决:
    • 设置response获得字符流缓冲区的编码和设置浏览器默认打开时候采用的字符集一致即可。

字符流向页面响应中文,有一种简化的方式:

 

2.1 Request对象的概述及API的介绍

2.1.1 Request对象的概述

2.1.1.1 什么是Request对象

开发的软件都是B/S结构软件,从浏览器向服务器提交一些数据,将这些内容进行封装就封装成了一个请求对象(Request对象)。

2.1.2 Request对象的API

2.1.2.1 获得客户机信息

  • 获得请求的方式

  • 获得请求路径后的提交参数的字符串

  • 获得请求路径的URL和URI

  • 获得客户机的IP地址

2.1.2.2 获得请求头的方法

  • 获得一个key对应一个value的请求头

  • 获得一个key对应多个value的请求头

2.1.2.3 获得请求参数的方法

  • 获得提交的参数(一个name对应一个value)

  • 获得提交的参数(一个name对应多个value)

  • 获得提交的参数,将提交的参数的名称和对应的值存入到一个Map集合中

2.1.2.4 Request作为域对象存取数据的方法

  • 向request域中存数据

  • 从request域中获取数据

  • 从request域中移除数据

2.2 Request对象的API的代码演示

2.2.1 Request对象的API的代码演示

2.2.1.1 Request对象获取客户机信息

2.2.1.2 Request获得请求头的信息

1.1 Request对象接收表单请求参数

1.1.1 Request对象接收表单请求参数

1.1.1.1 编写一个静态页面

1.1.1.2 接收请求参数

1.1 Request对象接收表单请求参数的中文乱码处理

1.1.1 Request对象接收中文数据

1.1.1.1 POST方式接收中文

1.1.1.2 GET方式接收中文

Servlet讲解的更多相关文章

  1. java web 中的servlet讲解

    首先,解释一下解释一下什么是servlet?说一说Servlet的生命周期? servlet有良好的生存期的定义,包括加载和实例化.初始化.处理请求以及服务结束.这个生存期由javax.servlet ...

  2. 学Android开发,入门语言java知识点

    学Android开发,入门语言java知识点 Android是一种以Linux为基础的开源码操作系统,主要使用于便携设备,而linux是用c语言和少量汇编语言写成的,如果你想研究Android,就去学 ...

  3. Ant 之bulid.xml详解

    ANT build.xml文件详解(一) Ant的概念 可能有些读者并不连接什么是Ant以及入可使用它,但只要使用通过Linux系统得读者,应该知道 make这个命令.当编译Linux内核及一些软件的 ...

  4. JSP第二篇【内置对象的介绍、4种属性范围、应用场景】

    什么是JSP内置对象 JSP引擎在调用JSP对应的jspServlet时,会传递或创建9个与web开发相关的对象供jspServlet使用.JSP技术的设计者为便于开发人员在编写JSP页面时获得这些w ...

  5. JSP(二):JSP九大内置对象、四个作用域对象

    jsp的九大内置对象:        内置对象:            jsp文件在转译成其对应的Servlet文件的时候自动生成的并声明的对象.我们在jsp页面中直接使用即可.        注意: ...

  6. Ant之build.xml详解---可用

    Ant的概念 :在Eclipse中使用Ant Ant是Java平台下非常棒的批处理命令执行程序,能非常方便地自动完成编译,测试,打包,部署等等一系列任务,大大提高开发效率. Ant和make命令很像. ...

  7. Servlet、Servlet容器等内容讲解

    转载自http://blog.csdn.net/iAm333 对于Servlet.Servlet容器以及一个Servlet容器-Tomcat这些概念讲解的挺清晰的,转载下 之前在开源中国看到一篇文章& ...

  8. servlet 如何处理多请求访问以及线程讲解

    servlet 如何处理多请求访问以及线程讲解 场景:js循环500次请求同一个后台接口,接口内部逻辑:1.查询商品数量,2.扣减商品数量 ,那么该接口是否需要考虑多线程并发安全问题? 分析: 1.先 ...

  9. Servlet基础(一) Servlet简介 关键API介绍及结合源码讲解

    Servlet基础(一) Servlet基础和关键的API介绍 Servlet简介 Java Servlet是和平台无关的服务器端组件,它运行在Servlet容器中. Servlet容器负责Servl ...

随机推荐

  1. BooStrap4文档摘录: 1. Layout

    文档:  https://getbootstrap.com/docs/4.1/layout/overview/ w3c的案例:很直观: https://www.w3schools.com/bootst ...

  2. torchnet package (1)

    torchnet package (1) torchnet torchnet torchnet是用于torch的代码复用和模块化编程的框架,主要包含四个类 Dataset 以不同的方式对数据进行预处理 ...

  3. 微信小程序引入md5.js

    今天给大家安利一下微信小程序引入md5.js的方法,不多说 md5.js在下面 直接复制到项目的utils/md5.js即可 /* * A JavaScript implementation of t ...

  4. POJ-3744-概率dp+矩阵幂(分段)

    Scout YYF I Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10214   Accepted: 2980 Desc ...

  5. 解决PCI Geomatica 无法卸载的问题

    之前安装过PCI Geomatica 2016,非正常卸载,应该有一定残留,但我已经尽可能将注册表中包含PCI.Geomatica.Geomatics等关键字的条目删除干净了. 在重新安装新版本201 ...

  6. jquery插件实现鼠标经过图片右侧显示大图的效果(类似淘宝)

    这个插件的名字elevatezoom,网址为http://www.elevateweb.co.uk/image-zoom,在github上的项目首页为https://github.com/elevat ...

  7. idea常用实用快捷键

    Ctrl+Alt+方向键(左键,右键),返回上次查看的位置.(这个快捷键和window本身快捷键冲突,需要关闭windows 对应快捷键功能,参考博客:https://blog.csdn.net/u0 ...

  8. UE4 游戏中csv配置文件使用

    本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接: http://blog.csdn.net/cartzhang/article/details/76549463 作者:ca ...

  9. 项目中一个Jenkins权限配置的过程

    需求:需要不同账号登录,只看到自己需要看到的job,比如: test01账号登录看到tes01t_job test02账号登录,只看到test02_job 分析:目的是不同项目,不希望看到其他项目或者 ...

  10. 使用jquery获取url以及jquery获取url参数的方法(转)

    使用jquery获取url以及使用jquery获取url参数是我们经常要用到的操作 1.jquery获取url很简单,代码如下 1.window.location.href; 其实只是用到了javas ...