Servlet执行流程
时间:2022-07-26
本文章向大家介绍Servlet执行流程,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Servlet执行流程
本文主要解释服务器在收到客户端的请求后在服务器内部的执行过程。
什么是映射
客户端通过URL地址访问服务器中的资源,所以Servlet程序要是想被外界访问,必须把servlet映射到一个URL地址上,这个工作在web.xml文件中使用元素和元素完成。
元素用于注册Servlet
它包含两个主要的子元素:
设置Servlet的注册名称
:设置Servlet的完整类名。
元素用于映射一个已注册的Servlet的一个对外访问路径
它含有两个子元素:
:指定Servlet的注册名
:Servlet的对外访问路径。
index.html用来设置第一页面。
<welcome-file-list>
<welcome-file>index.html</welcome-file> <!-- 设置访问首页,index.html可以改成你要进入的网站首页-->
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<description></description>
<display-name>StudentListServlet</display-name>
<servlet-name>StudentListServlet</servlet-name>
<servlet-class>com.it.servlet.StudentListServlet</servlet-class> <!-- 本类在工程中完整的包名 -->
</servlet>
<servlet-mapping>
<servlet-name>StudentListServlet</servlet-name>
<url-pattern>/StudentListServlet</url-pattern>
</servlet-mapping>
浏览器请求
当浏览器发出访问服务器资源的请求时,用户主要通过一下步骤来访问服务器的资源。
Servlet访问流程
- 浏览器通过URL地址里的请求信息来访问服务器的/xxxx
- 通过访问路径(url-pattern)来找到已经注册的servlet名称。
- 根据映射找到相应的Servlet。
- 根据名称找到service所在的tomcat中的路径。
上述就是Servlet内部执行流程,主要是通过servlet容器对url进行匹配。
注意: url-pattern属性内容可以自定义 两个子元素中的servlet-name属性必须一致,否则报错 获取工程中完整的包名,可右键该servlet的java文件,选择copy qualified name然后粘贴即可。 在开发时,新建servlet的同时,软件就已经在web.xml文件中自动注册,所以在开发中尽量不要动web.xml文件,否则可能因误操作出异常。
模糊匹配
精确匹配:/first
/first.index.html
模糊匹配:
/* http://localhost:8080/myshop/任意路径
/test/* http://localhost:8080/myshop/test/任意路径
.后缀名 http://localhost:8080/myshop/任意路径后缀名
注意:
- servlet的路径映射必须以/开头或*开头
- servlet的路径映射中,不能同时存在两种"模糊匹配"的规则。例如 /test/*.do 会报错。
- 当浏览器的路径同时匹配多个servlet的时候 a)精确度越高的URL(最像url的)优先被匹配。 b)以后缀名结尾的URl优先级最低。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- # 全网最细 | 21张图带你领略集合的线程不安全
- grafana踩坑记录
- TensorFlow函数:tf.image.crop_to_bounding_box
- tf.newaxis
- tf.random_normal_initializer:TensorFlow初始化器
- 使括号有效的最少添加
- 设计模式~观察者模式
- 网页无插件视频流媒体播放器EasyPlayerPro-IOS版如何解决有声音无画面的问题?
- (建议收藏)Java基础知识笔记二(详细)
- Android 手机如何拍摄RAW图
- 「干货」基本数据类型和引用数据类型的区别
- int 和 integer :装箱和拆箱的过程,会用到什么方法,你觉得这个会对性能有影响吗,原因是什么(百度一面)
- 数组:这个循环可以转懵很多人!
- 企业远程办公视频会议系统EasyRTC-SFU下侧边栏边框超限问题如何解决?
- 编写高质量可维护的代码:数据建模