JavaWeb学习之Servlet
来源:互联网 发布:studded mac 编辑:程序博客网 时间:2024/03/29 08:09
本人是职场新手,想用记录博客的方式给自己的学习之路做点笔记,若有不对还望指正!**
Servlet 生命周期的方法: 以下方法都是由 Serlvet 容器负责调用.
1). 构造器: 只被调用一次. 只有第一次请求 Servlet 时, 创建 Servlet 的实例. 调用构造器. 这说明 Serlvet 的单实例的! 2). init 方法: 只被调用一次. 在创建好实例后立即被调用. 用于初始化当前 Servlet.
3). service: 被多次调用. 每次请求都会调用 service 方法. 实际用于响应请求的.
4). destroy: 只被调用一次. 在当前 Servlet 所在的 WEB 应用被卸载前调用. 用于释放当前 Servlet 所占用的资源.
Servlet容器响应客户请求的过程
①Servlet引擎检查是否已经装载并创建了该Servlet的实例对象。如果是,则直接执行第④步,否则,执行第②步。
②装载并创建该Servlet的一个实例对象:调用该 Servlet 的构造器
③调用Servlet实例对象的init()方法。
④创建一个用于封装请求的ServletRequest对象和一个代表响应消息的ServletResponse对象,然后调用Servlet的service()方法并将请求和响应对象作为参数传递进去。
⑤WEB应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destroy()方法。
在web.xml文件中关于Servlet的一些节点
1.load-on-startup 配置在Servlet节点中,可以指定Servlet被创建的时机。
当取值为负数时,该Servlet在第一次请求是即被创建;
当取值为0或者正数时, 则在当前 WEB 应用被Serlvet 容器加载时创建实例, 且数组越小越早被创建.
<servlet><servlet-name>secondServlet</servlet-name><servlet-class>com.atguigu.javaweb.SecondServlet</servlet-class><load-on-startup>2</load-on-startup></servlet>
2.serlvet-mapping
1). 同一个Servlet可以被映射到多个URL上,即多个<servlet-mapping> 元素的<servlet-name>子元素的设置值可以是同一个Servlet的注册名。
2). 在Servlet映射到的URL中也可以使用 * 通配符,但是只能有两种固定的格式:一种格式是“*.扩展名”,另一种格式是以正斜杠(/)开头并以“/*”结尾。
<servlet-mapping><servlet-name>secondServlet</servlet-name><url-pattern>/*</url-pattern></servlet-mapping>
或者
<servlet-mapping><servlet-name>secondServlet</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping>
注意:错误的格式!!!既带 / 又带扩展名的不合法
<servlet-mapping><servlet-name>secondServlet</servlet-name><url-pattern>/*.action</url-pattern></servlet-mapping>
3.ServletConfig:封装了 Serlvet 的配置信息, 并且可以获取 ServletContext 对象
1). 配置 Serlvet 的初始化参数
<servlet> <servlet-name>helloServlet</servlet-name> <servlet-class>com.atguigu.javaweb.HelloServlet</servlet-class><!--配置 Serlvet 的初始化参数。且节点必须在load-on-startup节点的前面 --> <init-param> <!-- 参数名 --> <param-name>user</param-name> <!-- 参数值 --> <param-value>root</param-value> </init-param> <init-param> <param-name>password</param-name> <param-value>1230</param-value> </init-param> <load-on-startup>-1</load-on-startup> </servlet>
2).获取初始化参数:局部的初始化参数,只有当前的Servlet才能获取
>getInitParameter(String name): 获取指定参数名的初始化参数
> getInitParameterNames(): 获取参数名组成的Enumeration 对象.String user = servletConfig.getInitParameter("user");System.out.println("user: " + user);Enumeration<String> names = servletConfig.getInitParameterNames();
while(names.hasMoreElements()){ //对Enumeration对象进行遍历String name = names.nextElement();String value = servletConfig.getInitParameter(name);System.out.println("^^" + name + ": " + value);}3). 获取 Serlvet 的配置名称(了解)
4.ServletContext:servlet的上下文
1). 可以由 SerlvetConfig 获取:
ServletContext servletContext = servletConfig.getServletContext();
2). 该对象代表当前 WEB 应用: 可以认为SerlvetContext 是当前 WEB 应用的一个大管家. 可以从中获取到当前 WEB 应用的各个方面的信息.
①. 获取当前 WEB 应用的初始化参数
设置初始化参数: 可以为所有的 Servlet 所获取(相当于全局变量), 而 Servlet 的初始化参数(相当于局部变量)只用那个 Serlvet 可以获取.<!-- 配置当前 WEB 应用的初始化参数 --><context-param><param-name>driver</param-name><param-value>com.mysql.jdbc.Driver</param-value></context-param>
ServletContext servletContext = servletConfig.getServletContext();String driver = servletContext.getInitParameter("driver");System.out.println("driver:" + driver);Enumeration<String> names2 = servletContext.getInitParameterNames();while(names2.hasMoreElements()){String name = names2.nextElement();System.out.println("-->" + name); }②. 获取当前WEB 应用的某一个文件在服务器上的绝对路径, 而不是部署前的物理路径:getRealPath(Stringpath);
String realPath = servletContext.getRealPath("/note.txt");System.out.println(realPath);③. 获取当前WEB 应用的名称:getContextPath()
String contextPath = servletContext.getContextPath();System.out.println(contextPath);④. 获取当前WEB 应用的某一个文件对应的输入流.
getResourceAsStream(String path): path 的 / 为当前 WEB 应用的根目录.
InputStream is2 = servletContext.getResourceAsStream("/WEB-INF/classes/jdbc.properties");⑤. 和 attribute 相关的几个方法;
- javaweb学习之servlet
- Javaweb学习之servlet
- JavaWeb学习之Servlet
- JavaWeb学习笔记之servlet
- JavaWeb学习篇之----Servlet
- JavaWeb基础学习之servlet
- JavaWeb学习之路-----Servlet
- JavaWeb初级学习 之 Servlet
- JavaWeb学习笔记之Servlet
- Javaweb基础之Servlet学习
- 学习javaWeb之Servlet——Filter
- 学习JavaWeb之Servlet——listener
- JAVAWEB学习笔记之Servlet详解
- JavaWeb学习之路----Servlet(二)
- JavaWeb学习篇之----Servlet过滤器Filter
- 学习JavaWeb之第一个Servlet
- 系统学习JavaWeb之二初窥Servlet门径
- 学习javaWeb开发-Servlet
- webpack---webpack构建vue多页面框架(四、自动化构建)
- 2017.08.15【NOIP提高组】模拟赛B组
- 七牛云,Yii2.0 音频转码(arm转mp3)中遇到的,回调失败,任务执行成功的问题
- hive desc table乱码问题
- 《机器学习》读书笔记 5 第3章 线性模型
- JavaWeb学习之Servlet
- JDBC工具类使用C3P0连接池
- 如何学好python web开发
- Focal Loss论文阅读笔记
- Kotlin 字段和属性
- 2187. 猴子除草
- 反转字符串的一些常见方法
- 解压版mysql卸载
- 用For循环创建菱形到空心菱形