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. Android 实现开机自启APP

    原文地址:Android 实现开机自启APP - Stars-One的杂货小窝 公司有个项目,需要实现自启动的功能,本来想着是设置桌面启动器的方式去实现,但是设备是华为平板(EMUI系统),不允许设置 ...

  2. Kubernetes client-go 源码分析 - ListWatcher

    概述ListWatch 对象的创建GetterListWatchList() & Watch() 概述 源码版本信息 Project: kubernetes Branch: master La ...

  3. cuda在ubuntu的安装使用分享

    前言 之前给大家分享过opencv在jetson nano 2gb和ubuntu设备中使用并且展示了一些人脸识别等的小demo.但是对于图像处理,使用gpu加速是很常见 .(以下概念介绍内容来自百科和 ...

  4. Java绘图基础

    <零基础学Java> Java绘图基础 绘图是高级程序设计中非常重要的技术,例如,应用程序需要绘制闪屏图像.背景图像.组件外观Web程序可以绘制统计图.数据库存储的图像资源等. Graph ...

  5. 8.shell编程之免交互

    shell编程之免交互 目录 shell编程之免交互 Here Document免交互 免交互定义 Here Document变量设定 多行的注释 expect expect 定义 expect基本命 ...

  6. IE让我首次遭受了社会的毒打

    2022年6月15日,微软终止对IE的支持,自此IE走入历史,可以说这是一个时代的终结. 自己在 2011 年刚从业时,IE 在国内的市场占有率可是遥遥领先的,下图来自于 StatCounter 网站 ...

  7. 教你如何用网页开发APP

    用到的工具: HBuilderX app开发版1.首先你得网站必须是上线的,然后明确这一点后,点击打开HBuilderX.在文件里找到新建项目,选择wap2App,将下面信息填写完整,然后创建. 2. ...

  8. python基础知识-day6(函数知识)

    1.函数的特点 函数式的编程范式 面向对象的编程范式 所谓函数,就是把重复的代码单独的分离出来,放在一个公共的地方,以后可以一只调用,这样就可以解决多次重复来编写. 2.函数的定义 1 def fun ...

  9. Spring框架系列(5) - 深入浅出SpringMVC请求流程和案例

    前文我们介绍了Spring框架和Spring框架中最为重要的两个技术点(IOC和AOP),那我们如何更好的构建上层的应用呢(比如web 应用),这便是SpringMVC:Spring MVC是Spri ...

  10. rhel安装程序

    Linux下软件分类     rpm软件包,包管理器 yum     deb软件包,包管理器 apt     源代码软件包            一般为".tar.gz".&quo ...