Servlet学习笔记(二)之Servlet路径映射配置、Servlet接口、ServletConfig、ServletContext
Servlet路径映射配置
要使Servlet对象正常的运行,需要进行适当的配置,以告诉Web容器哪个请求调用哪个Servlet对象处理,对Servlet起到一个注册的作用。Servlet的配置信息包含在web.xml文件中,主要通过两步进行配置:
(1)声明Servlet对象
通过< servlet>标签声明一个Servlet对象,在此标签下包含两个主要子元素,为别为<
servlet-name>与< servlet-class>,其中<
servlet-name>用于指定Servlet的名称,该名称可以是自定义的名称,<
servlet-class>用于指定Servlet对象的完整位置,包含Servlet对象的包名和类名。
(2)映射Servlet
由于客户端是通过URL地址访问web服务器中的资源,所以Servlet程序若想被外界访问,必须把Servlet程序映射到一个URL地址上,在web.xml文件中声明Servlet对象后,需要映射Servlet的URL。该操作是使用<
servlet-mapping>标签进行配置。< servlet-mapping>标签包含两个子元素,分别为<
servlet-name>与< url-pattern>。·,其中< servlet-name>元素与<
servlet>标签中的< servlet-name>元素相对应,不可以随意命名。< url-pattern>用于映射访问URL。
例如:
其中访问URL的相对路径为“/servlet/MyServlet”
(3)同一个Servlet可以被映射到多个URL上,即多个 <
servlet-mapping>元素的<
servlet-name>子元素的设置值可以是同一个Servlet的注册名,如下修改就为一个Servlet指定了两个url-pattern,通过这两个URL都可以访问同一个Servlet程序。
URL 配置格式
完全路径匹配 (以/开始 ) 例如:/hello、 /init
(注意:如果没有“/”,会发生404,are you ok当前工程没有被正确发布,访问该工程所有静态资源、动态资源 发生404 —– 工程启动时出错了)目录匹配 (以/开始) 例如:/* 、/abc/* (代表abc目录下的所有资源,即“/adc/hjhsdfkj”也可以访问)
/ 代表网站根目录扩展名 (不能以/开始) 例如:* .do(即“dhjhs/dsajh/dsjkdn.do”,只要是以.do结尾的即可访问) 、* .action
典型错误 /*.do
优先级:完全匹配>目录匹配 > 扩展名匹配
路径问题
相对路径:相对当前网页地址
绝对路径 解决相对路径,会根据当前地址改变问题。
Servlet接口
init方法
在Servlet的配置文件中,可以使用一个或者多个<
init-param>标签为servlet配置一些初始化参数。
ServletConfig
在Servlet程序中通过ServletConfig对象*(ServletConfig接口位于javax.servlet包中,它封装了Servlet的配置信息,在Servlet初始化期间被传递)
获得cast对应数据
ServletConfig对象定义了4个方法:
getInitParameter —— 通过name获得value
getInitParameterNames —– 获得所有name
思考 :如何在doGet 或 doPost 方法中 获得 Servlet初始化参数
将ServletConfig对象保存实例成员变量
GenericServlet 已经将ServletConfig 保存成员变量 —– 在子类中通过 getServletConfig方法 获得
初始化参数
结论:子类Servlet不需要覆盖 init(ServletConfig) , 只需要通过GenericServlet中
getServletConfig() 获得ServletConfig对象
因此,假如在doGet方法中获得Servlet初始化参数,可以:
应用:在init-param 指定配置文件位置和名称,配置Servlet随服务器启动创建 load-on-startup
ServletConfig 配置初始化数据,只能在配置Servlet获得(当前的),其它Servlet无法获得 —–
每个Servlet程序都对应一个ServletConfig对象,并且是独立的,不可以互相使用(其获得自己已配置的初始化参数)
ServletContext
- WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,考雅思还是考托福它代表当前web应用。
- ServletConfig对象维护了ServletContext对象的引用,在编写servlet时,可以通过ServletConfig.getServletContext方法获得ServletContext对象。
- 一个WEB应用中的所有servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯。ServletContext对象通常也被称之为context域对象
。
应用:
1、 获得整个web应用初始化参数
2、 实现全局数据共享(例如统计访问次数)
3、 实现服务器端转发功能
4、
读取web工程资源文件
1、获取WEB应用的初始化参数 和 ServletConfig 对象不同
* ServletConfig对象
配置参数,只对配置Servlet有效,如果配置参数,所有Servlet都可以访问 通过ServletContext,通过标签<
context-param>(注意:不同于初始化参数配置,标签不嵌套在< servlet>标签中)实现
ServletConfig与ServletContext的区别:
2、通过ServletContext 在多个Servlet间 共享数据
在ServletContext中
保存站点访问次数 ,每当一个用户访问站点,将访问次数+1
在CountServlet 初始化过程中,向ServletContext 保存访问次数 —-
0 ————–> ServletContext setAttribute
每次访问次数 +1 — 数据存放ServletContext中 —- 所有Servlet都可以获得该数据
在ServletContext中保存数据,所有Servlet都可以访问
3、通过ServletContext 完成服务器程序转发
什么是转发? 转发和重定向区别 ?
使用转发还是重定向? —- 转发性能好于重定向,请求次数少
4.缺省Servlet
- 缺省Servlet 功能:处理其他Servlet都不处理请求
tomcat/conf/web.xml
org.apache.catalina.servlets.DefaultServlet 作为缺省Servlet - 当访问Tomcat服务器中的某个静态HTML文件和图片时,实际上是在访问这个缺省Servlet
Servlet学习笔记(二)之Servlet路径映射配置、Servlet接口、ServletConfig、ServletContext的更多相关文章
- servlet学习笔记二
Servlet主要内容: 1)表单处理 2)乱码问题 3)页面跳转 4)生命周期 一.表单处理 Servlet获取表单数据 request.getParameter():通过表单参数名获取参数值 re ...
- HighCharts学习笔记(二)HighCharts结构及详细配置
HighCharts结构及详细配置: 一.HighCharts整体结构: 通过查看API文档我们知道HighCharts结构如下:(API文档在文章后面提供下载) var chart = new Hi ...
- linux学习笔记二:三种网络配置
本文引用自:https://www.linuxidc.com/Linux/2017-05/144370.htm [linux公社] VMware为我们提供了三种网络工作模式,它们分别是:Bridged ...
- Servlet学习笔记(二)
目录 Servlet学习笔记(二) Request对象 1.request和response对象: 2.request对象继承体系结构: 3.什么是HttpServletRequest ? 4.Htt ...
- Servlet学习笔记(三)
目录 Servlet学习笔记(三) 一.HTTP协议 1.请求:客户端发送欸服务器端的数据 2.响应:服务器端发送给客户端的数据 3.响应状态码 二.Response对象 1.Response设置响应 ...
- Servlet学习笔记(四)
目录 Servlet学习笔记(四) 一.会话技术Cookie.session 1. 什么是会话技术? 2. 会话技术有什么用? 3. Cookie 3.1 什么是Cookie? 3.2 使用Cooki ...
- # jsp及servlet学习笔记
目录 jsp及servlet学习笔记 JSP(Java Server Page Java服务端网页) 指令和动作: servlet(小服务程序) jsp及servlet学习笔记 JSP(Java Se ...
- Servlet学习笔记(四)之请求转发与重定向(RequestDispatcher与sendRedirect)
ServletContext可以实现请求转发(ServletContext请求转发相关内容见之前博客:http://blog.csdn.net/megustas_jjc/article/details ...
- MyBatis学习 之 二、SQL语句映射文件(1)resultMap
目录(?)[-] 二SQL语句映射文件1resultMap resultMap idresult constructor association联合 使用select实现联合 使用resultMap实 ...
随机推荐
- 浏览器WEB Browser 常识
浏览器WEB Browser 浏览器发展史 浏览器诞生与发展 浏览器的诞生 早期浏览器 Netscape Internet Explorer 与浏览器战争 chrome的崛起 时代之泪 IE浏览器终成 ...
- 深入刨析tomcat 之---第14篇 对应19章,使用manager管理 web应用
writedby 张艳涛 第19章讲的是管理程序,当一个tomcat启动的时候,能通过远程浏览器能访问tomcat,启动web应用,关闭web应用,查看web应用 怎么实现的呢? 在webapp 文件 ...
- C# MongoDB添加索引
场景: 在最近的项目中,用到了Mongodb,用它来保存大量工业数据.同时是会根据用户自动建立对应的数据表.这要求同时建立索引来加快查询. 解决: 1.在Nuget包中查询"mongocsh ...
- msf反弹
转载https://www.cnblogs.com/xishaonian/p/7721584.html msf 生成反弹 Windows Shell msfvenom -p windows/meter ...
- RTC为何这么火?
国内疫情已经接近尾声,有疫情的原因孵化的音视频互动类 App数量出现井喷式增长,通讯场景被资本关注,市场持续走高.在线教育.娱乐社交.直播带货等领域逆势增长,也带动了开发者们对于 IM 和RTC能力的 ...
- 键盘和鼠标闲置超时时关闭显示器并锁定电脑桌面的AutoHotkey脚本 2019年11月24日写
/* 键盘和鼠标闲置超时时关闭显示器并锁定电脑桌面的AutoHotkey脚本 2019年11月24日写 在电脑桌面锁定时移动鼠标就会显示登录界面,此时即使超过电源设置的时间电脑也不会关闭显示器使得屏幕 ...
- jdk的下载与安装教程
最近在学逆向,就是要反编译人家的java代码,在这之前要先安装环境,下面是下载和安装JDK的教程: 1.JDK下载地址: http://www.oracle.com/technetwork/java/ ...
- 从小白角度探索Android事件分发机制
今早来上班时看到郭神这边文章超赞,剧情很好引人入胜,特此备份! https://mp.weixin.qq.com/s?__biz=MzA5MzI3NjE2MA==&mid=2650244386 ...
- XMAPP搭建DVWA靶机
1 环境搭建 XMAPP+DVWA (我在win10下搭的环境) 更改了xmapp中Apache的两个端口号: dvwa/config中密钥和端口号按自己情况填好: dvwa/config中文件改为 ...
- 大厂需要什么样的 Android 开发?
前言 昨天和一个百度的朋友闲聊,他说根据最近招聘 Android工程师的经验来看,大部分候选人在工作 3 年的时候基本都会遇上一道难过的坎. 为啥这么说呢? 因为工作一段时间之后,大部分工程师都已经完 ...