必威体育Betway必威体育官网
当前位置:首页 > IT技术

Javaweb学习笔记3—Serverlet

时间:2019-08-17 11:12:09来源:IT技术作者:seo实验室小编阅读:81次「手机版」
 

serverlet



今天来讲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

相关阅读

C#学习笔记(三)—–C#高级特性:dynamic

C#高级特性:动态绑定 动态绑定 动态绑定将类型绑定(类型解析、成员和操作过程)从编译时推迟到了运行时。在编译时,如果程序员知

机器学习-学习笔记-梯度下降-SGD/BGD

根据Andrew Ng的Lecture notes, 我重新整理了梯度下降(including LMS/BGDSGD)的相关知识。 首先,引入一个例子, 假设我们现在有一个数

jeesite 4.0 学习笔记(一)

本人小白一个,公司要开发一个下单系统,项目周期比较短,两周时间。重新开发已经是不可能的了。部门的工程师建议用jeesite快速开发框

BEM学习笔记

参考文章,在此一并拜谢,我们之所以看得远,是因为站在巨人肩膀上: 大漠的博客 BEM BEM 楔子 X(学) Y(展) Z(结) 楔

杨晓峰Java核心36讲学习笔记

最近在极客时间上订阅了Oracle首席工程师杨晓峰的Java核心技术36讲, 接下来会对每一课的学习: 记下学习笔记 有不懂的地方继续深入

分享到:

栏目导航

推荐阅读

热门阅读