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. Linux详解(基础、环境配置、项目部署入门)

    Linux(CentOS 7)操作系统 消息队列(Kafka.RabbitMQ.RocketMQ),缓存(Redis),搜索引擎(ES),集群分布式(需要购买多台服务器,如果没有服务器我们就只能使用虚 ...

  2. 通过一次生产case深入理解tomcat线程池

    最近生产上遇到一个case,终于想明白了原因,今天周末来整理一下 生产case 最近测试istio mesh的预热功能(调用端最小连接数原则) 来控制调用端进入k8s刚扩出来的容器的流量 因为刚启动的 ...

  3. frp 用于内网穿透的基本配置和使用

    frp 用于内网穿透的基本配置和使用 今天是端午节,先祝端午安康! frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP.UDP.HTTP.HTTPS 等多种协议.可以将内网服务以安全.便 ...

  4. Java泛型知识总结

    泛型 前言 在没有泛型之前,程序员必须使用Object编写适用于多种类型的代码.很繁琐,也不安全. 泛型的引入使Java有了一个很强的类型系统,允许设计者详细地描述变量和方法的类型要如何变化. 在普通 ...

  5. 【Java面试】Mysql为什么使用B+Tree作为索引结构

    一个工作8年的粉丝私信了我一个问题. 他说这个问题是去阿里面试的时候被问到的,自己查了很多资料也没搞明白,希望我帮他解答. 问题是: "Mysql为什么使用B+Tree作为索引结构" ...

  6. ExtJS直接加载HTML页面

    ExtJS直接加载HTML页面 说明 ExtJS组件很不错,但再完美也有需要其他组件的时候,比如有时候就需要引入已经写好的HTML页面.主要的方法如下. 测试环境:ExtJS 7.4 使用html配置 ...

  7. 前端ES6 特性兼容查询

    ES6 http://kangax.github.io/compat-table/es6/ ES5 http://kangax.github.io/compat-table/es5/ ES 2016+ ...

  8. 文件上传漏洞靶场分析 UPLOAD_LABS

    文件上传漏洞靶场(作者前言) 文件上传漏洞 产生原理 PASS 1) function checkFile() { var file = document.getElementsByName('upl ...

  9. sublime_text 3安装Emmet时出现PyV8警告

    使用Emmet是需要在PyV8依赖下才可以的.1. 下面是下载网址:PyV8下载地址 下载自己系统版本的压缩包,然后解压,自己创建一个名为PyV8文件夹.将解压后的文件放入该文件夹里. 打开首选项里的 ...

  10. 关于vue cli 使用iview 自定义主题遇到的坑

    定制主题,这里讲变量覆盖 当你老老实实的把上面文档中的代码一一复制粘贴到项目文件中时,发现了还没装less,所以你就 npm install less –savenpm install less-lo ...