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)的更多相关文章

  1. Servlet的一些细节问题

    Servlet的细节问题 1.一个已经注册的Servlet可以被多次映射即: <servlet> <!-- servlet的注册名 --> <servlet-name&g ...

  2. servlet中的细节

    Get方法有大小限制:1024个字符.这些信息使用 Query_String头传递,并通过Query_String环境变量访问.Post方法:请求体信息使用FromData头传递.读取所有表单参数:g ...

  3. Servlet的一些细节(1)

    1.  Servlet程序必须映射到一个URL地址 由于客户端是通过URL访问web服务器资源,所以Servlet程序必须映射到一个URL地址.这个工作在web.xml文件中使用<servlet ...

  4. [Java.Web] Servlet 的一些细节

    本文来自 传智播客视频PPT 1. 由于客户端是通过 URL 地址访问 web 服务器中的资源,所以 Servlet 程序若想被外界访问,必须把 servlet 程序映射到一个 URL 地址上,这个工 ...

  5. Servlet的一些细节

    由于客户端是通过URL地址访问web服务器的中的资源的,所以Servlet程序若想被外界访问,必须把servlet程序映射到一个URL地址上,这个工作在web.xml文件中使用<servlet& ...

  6. 2016-2-1 Servlet细节

    Servlet的一些细节(韩顺平老师视频讲解)(1)由于客户端是通过URL地址访问web服务器中的资源,所以Servlet程序想要被外界访问,必须把servlet程序映射到一个URL地址上.这个工作在 ...

  7. JavaWeb -- Servlet运行过程 和 细节

    Servlet的运行过程 lServlet程序是由WEB服务器调用,web服务器收到客户端的Servlet访问请求后: ①Web服务器首先检查是否已经装载并创建了该Servlet的实例对象.如果是,则 ...

  8. Servlet映射细节

    Servlet的映射细节: 1):一个Servlet程序(Web组件),可以配置多个<url-pattern>,表示一个Servlet有多个资源名称. <servlet-mappin ...

  9. java web学习总结(五) -------------------servlet开发(一)

    一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向 ...

随机推荐

  1. OSG中相机参数的更改

    #pragma comment(lib, "osg.lib") #pragma comment(lib, "osgDB.lib") #pragma commen ...

  2. PHP 用Class构造JSON数据

    header('Content-type: appliction/json; charset=shift-JIS'); // error //{ // "result": fals ...

  3. Grunt:多个css,js,进行单独压缩

    module.exports = function (grunt) { // 构建任务配置 grunt.initConfig({ //读取package.json的内容,形成个json数据 pkg: ...

  4. JS获取浏览器可视区域的尺寸

    所谓可视区域是指能看得见的区域,即在浏览器中能看到页面的区域(高度与宽度).刚刚使用 document.body.clientHeight 来获取可视区域的高度得到的却是整个文档的高度,然后在cnbl ...

  5. ComboBoxEdit

    1.  如何使其不可编辑 TextEditStyle 设置为:DisableTextEditor 2.  如何设置鼠标为手形 Cursor 设置为:Hand

  6. NPOI读写Excel0307

    #region NPOI 操作 Excel 2007 /// <summary> /// 将Excel文件中的数据读出到DataTable中(xlsx) /// </summary& ...

  7. Html 中select标签的边框与右侧倒三角的去除

    首先是边框的去除:可以设置属性border:none;或border:0px; 不过这还是有一个bug,不同浏览器会在选中select标签时,加上一个边框: 之后是右侧倒三角的去除:设置属性 appe ...

  8. IOS 企业版证书($299)In-House方式发布指南

    一.明确几个概念 1.企业版IDP:即iOS Development Enterprise Program.注意是$299/Year那种,并不是$99/Year的那种. 2.In House:是只企业 ...

  9. 老oj3444 && Pku3241 Object Clustering

    Description We have N (N ≤ 10000) objects, and wish to classify them into several groups by judgemen ...

  10. libcurl的封装,支持同步异步请求,支持多线程下载,支持https

    最近在做一个项目,需要用到http get post等 需求分析需要做到同步和异步,异步请求的返回以可选的回调通知的方式进行. 本人以Linux为例,一步一步的来实现. 配置并且编译libcurl我以 ...