java-Servlet生命周期与jsp
- 容器如何处理请求资源路径?
比如,在浏览器地址栏输入: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,则查找对应的文件.
- 让一个servlet处理多种请求:
a) 采用后缀匹配,比如<url-pattern>*.do</url-pattern >
b) 分析请求资源路径,依据分析的结果进行不同的处理.
- 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) 相关的几个接口与类(了解):
- servlet接口:
init (servletConfig config)
service(?,?)
destroy()
注:httpservletrequest是servletrequest的子接口
Httpservletresponse是servletresponse的子接口
- GenericServlet抽象类
实现了servlet接口中的部分方法(init,destroy)
- Httpservlet
继承了GenericServlet抽象类,主要实现了service方法
- 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的更多相关文章
- java servlet 生命周期
Life Cycle in Detail:-1-When a server loads a servlet, it runs the servlet's init method. Even thoug ...
- JSP——MVC模式+Servlet生命周期
设计模式MVC模式 模型MODEL操作数据库的增删改查——javaBean 视图VIEW显示数据——JSP 控制器CONTROLLER响应用户的——servlet Model(模型),是程序的主体部分 ...
- Java开发之Servlet生命周期
Servlet会在服务器启动或第一次请求该Servlet的时候开始生命周期,在服务器结束的时候结束生命周期.无论请求多少次Servlet,最多只有一个Servlet实例.多个客户端并发请求Servle ...
- Java Servlet系列之Servlet生命周期
Servlet生命周期定义了一个Servlet如何被加载.初始化,以及它怎样接收请求.响应请求,提供服务.在讨论Servlet生命周期之前,先让我们来看一下这几个方法: 1. init()方法 在Se ...
- servlet生命周期与工作原理
→ Jsp的本质是Servlet,Servlet是服务器端的小程序,运行在服务器,用于处理及响应客户端的请求. Servlet和JSP的区别: servlet是特殊的Java类,必须继承HttpS ...
- Web---演示servlet技术(servlet生命周期),解决中文乱码问题
本节讲解决中文乱码问题的4种方法. 还有更好的方法,也就是用过滤器,这里就不演示了,博主目前也不会~呼♪(^∇^*)~过段时间才会学. servlet生命周期演示: index.jsp: <%@ ...
- Servlet第一篇【介绍Servlet、HTTP协议、WEB目录结构、编写入门Servlet程序、Servlet生命周期】
什么是Serlvet? Servlet其实就是一个遵循Servlet开发的java类.Serlvet是由服务器调用的,运行在服务器端. 为什么要用到Serlvet? 我们编写java程序想要在网上实现 ...
- Servlet生命周期与工作原理(转载)
Servlet生命周期分为三个阶段: 1,初始化阶段 调用init()方法 2,响应客户请求阶段 调用service()方法 3,终止阶段 调用destroy()方法 Servlet初始化阶段: 在 ...
- 【Servlet】(1)Servlet简介、Servlet底层原理、Servlet实现方式、Servlet生命周期
一.Servlet简介 1.Servlet定义: Servlet(Server Applet)是Java Servlet的简称,是为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交 ...
- servlet生命周期:
Servlet生命周期分为三个阶段: 1,初始化阶段 servlet实例创建时调用init()方法,在Servlet的整个生命周期内,init()方法只被调用一次. 2,响应客户请求阶段 调用ser ...
随机推荐
- Java包机制和JavaDoc
目录 包机制 JavaDoc 视频课程 包机制 包的本质就是文件夹 为了更好的组织类, Java提供了包机制, 用于区别类名的命名空间, 使项目看起来更加整洁 一般公司庸域名倒置作为包名 为了能够使用 ...
- 异常——JavaSE基础
异常 异常的分类 检查性异常 运行时异常:可能被程序员避免的异常,运行时异常可以在编译时被忽略 错误ERROR:错误不是异常 在Java中把异常当作对象来处理,并且定义了一个基类java.lang.T ...
- 实验一:在FW上配置静态路由实现互通
实验:在FW上配置静态路由实现互通 网络拓扑图 一.配置步骤 1.配置IP地址 R1: FW: ISP: 2.配置路由 ①在R2上面配置静态路由 ②在ISP上面配置静态路由 3.在FW上配 ...
- C语言学习之我见-strcpy()字符串复制函数
strcpy()函数,用于两个字符串值的复制. (1)函数原型 char * strcpy(char * _Dest,const char * _Source); (2)头文件 string.h (3 ...
- go-zero微服务实战系列(七、请求量这么高该如何优化)
前两篇文章我们介绍了缓存使用的各种最佳实践,首先介绍了缓存使用的基本姿势,分别是如何利用go-zero自动生成的缓存和逻辑代码中缓存代码如何写,接着讲解了在面对缓存的穿透.击穿.雪崩等常见问题时的解决 ...
- Python教程——常用的os操作详情
Python自动的os库是和操作系统交互的库,常用的操作包括文件/目录操作,路径操作,环境变量操作和执行系统命令等. 文件/目录操作 获取当前目录(pwd): os.getcwd() 切换目录(cd) ...
- Jenkins+Svn+Docker搭建持续集成环境 自动部署
一.准备工作: 两台服务器:192.168.206.212,192.168.206.213 自己新建一个maven项目 其中两台机子做下面的软件配置 212机子: 安装expect并配置: 安装jen ...
- Unsupported major.minor version 52.0 (unable to load class org.apache.kafka.clients.producer.Produce异常解决方法
在控制台输入java -version,查看自己的版本是多少,我的查出来是1.8的.随后将服务器上的改为1.8的就可以了.
- Java开发学习(八)----IOC/DI配置管理第三方bean、加载properties文件
前面的博客都是基于我们自己写的类,现在如果有需求让我们去管理第三方jar包中的类,该如何管理? 一.案例:数据源对象管理 本次案例将使用数据源Druid和C3P0来配置学习下. 1.1 环境准备 学习 ...
- 《A Neural Algorithm of Artistic Style》理解
在美术中,特别是绘画,人类掌握了通过在图像的内容和风格间建立复杂的相互作用从而创造独特的视觉体验的技巧.到目前为止,这个过程的算法基础是未知的,也没有现存的人工系统拥有这样的能力.然而在视觉感知的其他 ...