今天来讲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学习笔记总结 目录篇

    JavaWeb学习笔记一: XML解析 JavaWeb学习笔记二 Http协议和Tomcat服务器 JavaWeb学习笔记三 Servlet JavaWeb学习笔记四 request&resp ...

  2. javaweb学习笔记整理补课

    javaweb学习笔记整理补课 * JavaWeb: * 使用Java语言开发基于互联网的项目 * 软件架构: 1. C/S: Client/Server 客户端/服务器端 * 在用户本地有一个客户端 ...

  3. 【JAVAWEB学习笔记】06_jQuery基础

    接05的学习笔记. 四.使用JQ完成省市二级联动 1.需求分析 使用jquery完成省市二级联动 2.技术分析 2.1数组的遍历操作 方式一: $(function(){ // 全选/ 全不选 $(& ...

  4. javaweb学习笔记(二)

    一.javaweb学习是所需要的细节 1.Cookie的注意点 ① Cookie一旦创建,它的名称就不能更改,Cookie的值可以为任意值,创建后允许被修改. ② 关于Cookie中的setMaxAg ...

  5. Javaweb学习笔记(一)

    一.javaweb学习是所需要的细节 1.发送响应头相关的方法 1).addHeader()与setHeader()都是设置HTTP协议的响应头字段,区别是addHeader()方法可以增加同名的响应 ...

  6. JavaWeb学习笔记之Servlet(一)

    1. 引子: 当我们开始进入JavaWeb开发的学习时,我们就必须要和Servlet和HTTP这两个词进行打交道了,尤其是Servlet.即使到了后面使用JSP (我们知道JSP其本身就是一个Serv ...

  7. 【JAVAWEB学习笔记】09_MySQL多表&JDBC(包含MySQL数据库思维导图)

    今天晨读单词: order:订单constraint:(强制)约束foreign key:外键references:指向orderitem:订单项join:加入resourceBundle:资源捆绑c ...

  8. Javaweb学习笔记——(二十三)——————AJAX、XStream、JSON

    AJAX概述     1.什么是AJAX         ajax(Asynchronous JavaScript and xml) 翻译成中文就是"异步JavaScript和xml&quo ...

  9. Javaweb学习笔记——(二十一)——————过滤器

    过滤器     过滤器概述         1.什么是过滤器:             过滤器javaweb三大组件之一,它与Serlvet很相似,不过它过滤器是用来拦截请求的,而不是处理       ...

随机推荐

  1. 一步一步学Silverlight 2系列(21):如何在Silverlight中调用JavaScript

    概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...

  2. Erlang-VM节点启动名冲突问题

    今天在启动聊天的ErlangVM后,在日志中发现错误信息: Protocol 'inet_tcp': the name chatserver@127.0.0.1 seems to be in use ...

  3. 「LuoguP4779」 【模板】单源最短路径(标准版)

    Description 2018 年 7 月 19 日,某位同学在 NOI Day 1 T1 归程 一题里非常熟练地使用了一个广为人知的算法求最短路. 然后呢? 100→60: Ag→Cu: 最终,他 ...

  4. Autolayout UIScrollView

    http://www.cocoachina.com/ios/20141011/9871.html Xcode6中如何对scrollview进行自动布局(autolayout)   Xcode6中极大的 ...

  5. 让ie支持css3的一些htc文件

    1. Dean Edwards的IE7.js (以及 IE8.js, IE9.js)这个玩意估计是试图让IE支持CSS3属性的鼻祖,还算蛮强大,就是性能开销较大,要解析很多文件脚本,给DOM添加大量的 ...

  6. Java基本数据类型与包装类型(转)

    基本数据类型的包装类 为什么需要包装类? Java并不是纯面向对象的语言.Java语言是一个面向对象的语言,但是Java的基本数据类型却不是面向对象的.但是我们在实际使用中经常需要将基本数据转化成对象 ...

  7. Cardboard对像的公共方法与属性

    一.  public Pose3D EyePose(Eye eye)/// The transformation from head to eye. 获取眼睛在头部坐标系中的局部transform: ...

  8. 3DMAX 8 角色建模2 身体

    身体 20 25 60 分段 3 2 3 位置直接设置到-12.5 0 0,删除内部面,实例镜像出另一半x偏移25 1 身体大体形状 ,,,, 2 背阔肌 , 3腹肌 4 臀部 ,, 5 肩部 调整点 ...

  9. poj 3415 Common Substrings【SA+单调栈】

    把两个串中间加一个未出现字符接起来,然后求SA 然后把贡献统计分为两部分,在排序后的后缀里,属于串2的后缀和排在他前面属于串1的后缀的贡献和属于串1的后缀和排在他前面属于串2的后缀的贡献 两部分分别作 ...

  10. UVA - 10817 Headmaster's Headache

    题目大意:有一些老师,每一位都有自己的工资以及教授的课程.共s<=8个课程.其中的一些老师必须选择,问你保证每节课至少有一个老师的最少总工资. 题解: 首先很容易想到状态压缩,搞一个3进制的数, ...