1. 容器如何处理请求资源路径?

比如,在浏览器地址栏输入:ip地址路径/abc.html.

Step1.默认访问的是一个servlet,会从web.xml中查找有没有匹配的servlet.
                web.xml url-pattern

匹配规则:

(1) 精确匹配: <url-pattern>/abc.html</url-pattern>

(2) 统配符匹配:使用*号匹配0到多个字符. 
<url-pattern>/*</url-pattern>

(3) 后缀匹配:以*.开头,后接任意的字符
<url-pattern>*.do</url-pattern >
匹配所有以.do结尾的请求

Step2.如果没有匹配的servlet,则查找对应的文件.

  1. 让一个servlet处理多种请求:

a) 采用后缀匹配,比如<url-pattern>*.do</url-pattern >

b) 分析请求资源路径,依据分析的结果进行不同的处理.

  1. Servlet声明周期:

(1) 什么是servlet的声明周期?
容器如何创建servlet实例(对象),如何对其进行初始化处理,如何调用其方法处理请求,以及如何销毁其实例的整个过程(容器如何管理servlet).

(2) 生命周期分成几个阶段?
A.实例化:

1) 什么是实例化?
容器调用servlet的构造器创建对应的对象;

2) 容器在什么时候实例化?
2.1)默认情况下,容器在收到请求之后,才会创建其实例.
2.2)容器只会创建一个实例(单例).
2.3)容器启动之后立即创建其实例需要额外配置.

B.初始化

1)什么是初始化?
实例化之后容器调用该实例的init方法(该方法之后调用一次).

2)GenericServlet已经提供了init方法的实现
会将容器传递过来的servletconfig对象保存下来,并提供一个getConfig方法

3)初始化参数
3.1配置出书画参数(wen.cml)
3.2调用servletconfig提供的getinitparameter方法

4)可以重写genericservlet提供的init方法来实现自己的初始化逻辑,注意:建议覆盖init(),而不是init(config)

C.调用(就绪)

1).什么是就绪?
容器收到请求之后,会调用servlet实例的service方法处理请求

2).httpservlet已经实现了service方法.
依据请求类型类调用对应的do的方法;比如get请求调用doget方法,post请求会调用dopost方法.

3)可以重写httpservlet的service方法或者重写httpservlet的doget.dopost方法写处理逻辑.

D.销毁

1)什么是销毁.
容器在删除servlet实例前,会调用该实例的destroy方法(destroy方法只会执行一次).

2)可以override genericservlet提供的destroy方法来实现自己的销毁处理逻辑.

(3) 相关的几个接口与类(了解):

  1. servlet接口:

init (servletConfig config)

service(?,?)

destroy()

注:httpservletrequest是servletrequest的子接口

Httpservletresponse是servletresponse的子接口

  1. GenericServlet抽象类

实现了servlet接口中的部分方法(init,destroy)

  1. Httpservlet

继承了GenericServlet抽象类,主要实现了service方法

  1. Jsp(java server page)

(1)jsp是什么?
    sun公司制定的一种服务器端动态页面技术规范.
    注:jsp是一个以.jsp为后缀的文件,该文件的内容主要是html和少量的java代码,容器会将这个文件转化成一个对应的servlet然后执行(即jsp的本质就是一个servlet).

(2)如何写jsp?
       1.写一个以.jsp为后缀的文件.

2.在该文件里,可以添加如下内容:

2.1.html(css,js):直接写

2.2.java代码:

a.java代码片段<%  “java代码”  %>

b.jsp表达式<%= “java表达式” %>

3.隐含对象:

a.什么是隐含对象?
jsp文件里面可以直接使用的对象(比如out,request,response等)

b.问什么可以直接使用?
容器会自动添加获得这些对象的代码.

4.指令:

a.什么是指令?
通知容器,在将jsp文件转化为servlet类时,做一些额外的处理,比如导包.

b.page指令:

import属性:指定要导入的包,比如: <%@page import="java.util.Date"%>

(3)jsp是如何运行的?

阶段一:容器先将jsp文件转换成一个对应的servlet类(.java文件)
html(css,js)---->service方法里,使用out.write输出.
<%  %>----->service方法里照搬.

<%= “java表达式” %>---->service在out里面输出

阶段二:容器调用该servlet来处理请求(包括编译,实例化…).

java-Servlet生命周期与jsp的更多相关文章

  1. java servlet 生命周期

    Life Cycle in Detail:-1-When a server loads a servlet, it runs the servlet's init method. Even thoug ...

  2. JSP——MVC模式+Servlet生命周期

    设计模式MVC模式 模型MODEL操作数据库的增删改查——javaBean 视图VIEW显示数据——JSP 控制器CONTROLLER响应用户的——servlet Model(模型),是程序的主体部分 ...

  3. Java开发之Servlet生命周期

    Servlet会在服务器启动或第一次请求该Servlet的时候开始生命周期,在服务器结束的时候结束生命周期.无论请求多少次Servlet,最多只有一个Servlet实例.多个客户端并发请求Servle ...

  4. Java Servlet系列之Servlet生命周期

    Servlet生命周期定义了一个Servlet如何被加载.初始化,以及它怎样接收请求.响应请求,提供服务.在讨论Servlet生命周期之前,先让我们来看一下这几个方法: 1. init()方法 在Se ...

  5. servlet生命周期与工作原理

    →   Jsp的本质是Servlet,Servlet是服务器端的小程序,运行在服务器,用于处理及响应客户端的请求. Servlet和JSP的区别: servlet是特殊的Java类,必须继承HttpS ...

  6. Web---演示servlet技术(servlet生命周期),解决中文乱码问题

    本节讲解决中文乱码问题的4种方法. 还有更好的方法,也就是用过滤器,这里就不演示了,博主目前也不会~呼♪(^∇^*)~过段时间才会学. servlet生命周期演示: index.jsp: <%@ ...

  7. Servlet第一篇【介绍Servlet、HTTP协议、WEB目录结构、编写入门Servlet程序、Servlet生命周期】

    什么是Serlvet? Servlet其实就是一个遵循Servlet开发的java类.Serlvet是由服务器调用的,运行在服务器端. 为什么要用到Serlvet? 我们编写java程序想要在网上实现 ...

  8. Servlet生命周期与工作原理(转载)

    Servlet生命周期分为三个阶段: 1,初始化阶段  调用init()方法 2,响应客户请求阶段 调用service()方法 3,终止阶段 调用destroy()方法 Servlet初始化阶段: 在 ...

  9. 【Servlet】(1)Servlet简介、Servlet底层原理、Servlet实现方式、Servlet生命周期

    一.Servlet简介 1.Servlet定义: Servlet(Server Applet)是Java Servlet的简称,是为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交 ...

  10. servlet生命周期:

    Servlet生命周期分为三个阶段: 1,初始化阶段  servlet实例创建时调用init()方法,在Servlet的整个生命周期内,init()方法只被调用一次. 2,响应客户请求阶段 调用ser ...

随机推荐

  1. django框架12

    内容概要 csrf相关装饰器 基于中间件思想编写项目 auth认证模块 auth模块方法大全 auth扩展表字段 项目开发流程 bbs数据表分析 内容详情 csrf相关装饰器 基于中间件思想编写项目 ...

  2. 2021.05.03【NOIP提高B组】模拟 总结

    比较水的一场比赛,却不能 AK T1 有 \(n\) 次,每次给 \(A_i,B_i\) 问以 \(i\) 结尾的 \(A,B\) 的匹配中最大和的最小值 问最大和的最小值,却不用二分. 如果暴力排序 ...

  3. python中 OS模块中 os.path.join() 函数用法简介

    基础用法 os.path.join() 用于拼接文件的路径,可以传入多个待拼接的路径 若各个路径之间不存在 " / ", 则其会自动为各个路径之间增加连接符 " / &q ...

  4. 【Azure 应用服务】App Service 开启了私有终结点(Private Endpoint)模式后,如何来实现公网Git部署呢?

    问题描述 因为中国区的App Service对外(公网访问)需要进行ICP备案,所以很多情况下,Web应用部署到App Service后,都是通过Application Gateway(应用程序网关) ...

  5. mybatis查询mysql 数据库中 BLOB字段,结果出现乱码

    起因 mybatis-plus 通过Mapper 查询数据,映射出来的BLOB字段中的yml数据中文是乱码的 --- DefaultValue: '' Formula: '' HintContent: ...

  6. Java递归实现评论多级回复

    最近工作需要做一个评论功能,除了展示评论之外,还需要展示评论回复,评论的回复的回复,这里就用到了递归实现评论的多级回复. 评论实体 数据库存储字段: id 评论id.parent_id 回复评论id. ...

  7. BetterScroll源码阅读顺便学习TypeScript

    开头 TypeScript已经出来很多年了,现在用的人也越来越多,毋庸置疑,它会越来越流行,但是我还没有用过,因为首先是项目上不用,其次是我对强类型并不敏感,所以纯粹的光看文档看不了几分钟就心不在焉, ...

  8. [MRCTF2020]Ezpop-1|php序列化

    1.打开题目获取到源代码信息,如下: Welcome to index.php <?php //flag is in flag.php //WTF IS THIS? //Learn From h ...

  9. 一文搞懂 Netty 发送数据全流程 | 你想知道的细节全在这里

    欢迎关注公众号:bin的技术小屋,如果大家在看文章的时候发现图片加载不了,可以到公众号查看原文 本系列Netty源码解析文章基于 4.1.56.Final版本 在<Netty如何高效接收网络数据 ...

  10. Kingbase重新数据初始化,设置大小写

    KingbaseV8数据库安装完成后,删除/opt/Kingbase/ES/V8/data下所有内容,重新在其他目录初始化数据库,设置为忽略大小写 [kingbase@dbserver bin]$ . ...