Servlet的一些细节(2)
1. Servlet的创建时间
Servlet是不能单独运行,调用它的叫做Servlet引擎,或者叫做web服务器
针对客户端的多长Servlet请求,通常情况下,服务器只会创建一个Servlet实例对象,也就是说Servlet实例对象一旦创建,它就会驻留在内存中,为后续的其他请求服务,直至web容器退出,Servlet实例对象才会销毁。
Servlet对象一旦被创建,就会执行init方法,一旦销毁就会执行destroy方法。可以通过这两个方法观察Servlet对象的生命周期
所以如果编写了一个Servlet类Demo时,在启动服务器的时候,是不会创建Demo这个Servlet对象的,只有在浏览器的URL中访问到http://.../Demo的时候,才会执行init方法并创建这个对象。我们关掉浏览器后,这个对象并不会消失,以后再访问这个地址,还是原来的Servlet对象。
只有我们停掉这个服务器时,才会摧毁这个对象
但是每次访问请求都会调用Servlet的service方法,并且每次请求,Servlet请求都会创建一个HttpServletRequest请求对象和一个HttpServletResponse对象,然后将这两个对象作为参数给service方法,service方法再根据请求方式调用doXXX方法。
HttpServletRequest请求对象和HttpServletResponse对象的生命周期是很短的,比如说新浪的网站每天有几亿个请求,就会有几亿个对象,但是对象在请求结束后立即销毁,所以只要不是同时这么多请求,对服务器内存的压力还不是很大的。
2.Servlet对象也可以是web服务器启动的时候创建,而不是第一次访问的时候
<servlet>
<servlet-name>ServletDemo</servlet-name>
<servlet-class>cn.school.ServletDemo</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
structs框架其实就是一个大的Servlet程序,它就被配置服务器启动时候生成对象。
里面数字大小就确定了启动的顺序,数据越小优先级越高。
3. 缺省Servlet
如果某个Servlet的映射路径仅仅是一个正斜杠,那么这个Servlet就成为当前web应用程序的缺省Servlet
凡是在web,xml文件中找不到匹配的Servlet-mapping元素的URL,他们的访问请求都会交给缺省Servlet处理。
在Java中,所有的请求都会走Servlet。
不管是动态的,静态的,图片,视频还是什么什么的。
比如说我们新建一个1.html静态页面,然后什么也不做,在浏览器中输入http://localhost:8080/T_D623/1.html
就可以找到这个静态页面。
这是因为服务器为我们配置了一个默认Servlet路径
所有服务器配置文件都在C:\tomcat\conf这个文件夹下,有一个web.xml为服务器下的所有程序共享。
下面注册了一个Servlet,启动级别是服务器启动时启动
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
它的注册路径是
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
就是所有找不到正确路径的请求都走这一条路径
当我们请求一个静态页面时,就会通过这条路径请求,去查找项目中有没有对应名称的静态页面,如果没有就会返回

所以呢,如果我们在项目中自定义了一个默认Servlet路由,那么就会取代服务器中的,所以要慎重。
Servlet的一些细节(2)的更多相关文章
- Servlet的一些细节问题
Servlet的细节问题 1.一个已经注册的Servlet可以被多次映射即: <servlet> <!-- servlet的注册名 --> <servlet-name&g ...
- servlet中的细节
Get方法有大小限制:1024个字符.这些信息使用 Query_String头传递,并通过Query_String环境变量访问.Post方法:请求体信息使用FromData头传递.读取所有表单参数:g ...
- Servlet的一些细节(1)
1. Servlet程序必须映射到一个URL地址 由于客户端是通过URL访问web服务器资源,所以Servlet程序必须映射到一个URL地址.这个工作在web.xml文件中使用<servlet ...
- [Java.Web] Servlet 的一些细节
本文来自 传智播客视频PPT 1. 由于客户端是通过 URL 地址访问 web 服务器中的资源,所以 Servlet 程序若想被外界访问,必须把 servlet 程序映射到一个 URL 地址上,这个工 ...
- Servlet的一些细节
由于客户端是通过URL地址访问web服务器的中的资源的,所以Servlet程序若想被外界访问,必须把servlet程序映射到一个URL地址上,这个工作在web.xml文件中使用<servlet& ...
- 2016-2-1 Servlet细节
Servlet的一些细节(韩顺平老师视频讲解)(1)由于客户端是通过URL地址访问web服务器中的资源,所以Servlet程序想要被外界访问,必须把servlet程序映射到一个URL地址上.这个工作在 ...
- JavaWeb -- Servlet运行过程 和 细节
Servlet的运行过程 lServlet程序是由WEB服务器调用,web服务器收到客户端的Servlet访问请求后: ①Web服务器首先检查是否已经装载并创建了该Servlet的实例对象.如果是,则 ...
- Servlet映射细节
Servlet的映射细节: 1):一个Servlet程序(Web组件),可以配置多个<url-pattern>,表示一个Servlet有多个资源名称. <servlet-mappin ...
- java web学习总结(五) -------------------servlet开发(一)
一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向 ...
随机推荐
- Linux运行C#程序
首先需要安装mono 安装教程http://www.cnblogs.com/aixunsoft/p/3422099.html 然后 用终端执行C#程序就可以了,mono 程序文件名 可以直接执行win ...
- C# Chart圖標綁定
开发软件为VS2010 免去了安装插件之类的麻烦. 最终效果图: 饼状图: 前台设置:设置参数为: :Titles, 添加一个序列,在Text中设置名字. :Series ,添加一个序列,选择Char ...
- 为Angular-UEditor增加工具栏属性
感谢胡大大分享的的开源项目 Angular 的 UEditor 插件 Angular-UEditor 本文只是修改了angular-ueditor.js,加入了对工具栏的定制,方便项目使用 1 (fu ...
- 【模板】【网络流】Dinic
/* 唐代杜荀鹤 <小松> 自小刺头深草里,而今渐觉出蓬蒿. 时人不识凌云木,直待凌云始道高. */ #include <iostream> #include <cstd ...
- Thinkphp 事物问题
$m=D('YourModel');//或者是M(); $m2=D('YouModel2'); $m->startTrans();//在第一个模型里启用就可以了,或者第二个也行 $result= ...
- UILongPressGestureRecognizer的selector多次调用解决方法
当你使用longPress gesture recognizer 时,你可能会发现调用了多次. UILongPressGestureRecognizer *longPress = [[UILongPr ...
- cocos2d-x编译错误问题
在xcode中创建的cocos2d-x项目,然后添加了一个基类,里面有虚方法,编译时出错,错误如下: Undefined symbols for architecture x86_64: " ...
- confluence5.8.10的使用
之前在windows上安装了confluence5.8.10,结果有一天知什么缘故,数据库数据损坏,知识库彻底打不开了,所有的文档都付之东流,真的不是一般心痛.因此考虑将其装到linux机器上,因为t ...
- 多选select实现左右添加删除
案例:实现效果 1.选择监控城市,车辆列表显示对应城市所有车辆 2.从左边选择车辆 单击 >> 实现右侧显示添加车辆 ,左侧对应移除已选择车辆 3.右侧选中车辆 单击 &l ...
- C语言陷阱——类型转换
以下例子取自<深入理解计算机系统>. 考虑如下的C语言代码: #include<stdio.h> typedef unsigned char* byte_pointer; vo ...