这章我们主要的目标

理解Servlet

Servlet的编码和部署
Servlet生命周期
Servlet的配置
Servlet与容器交互 
 
什么是Servlet
-是运行在Web服务器或应用服务器上的Java程序
-在Web上创建动态内容的有效而强大的解决方案
-由容器来管理生命周期与Web服务器交互
-由Sun规范了其功能 
 
Servlet的规范组成  
Web应用程序  Servlet和HTTPServlet   过滤器  安全  国际化  
 
 
Servlet生命周期
Servlet遵循三阶段的生命周期:初始化  服务  销毁
初始化 销毁通常执行一次,服务可以执行多次。
所有的Servlet必须实现javax.servlet.Servlet接口。这个接口定义了 init();service(ServletRequest req, ServletResponse resp);destory();
 
 
Servlet的编码和部署
创建部署文件 (web.xml):
   一般在创建工程的时候,又有默认的web.xml;这时就不需要创建了
 
在容器中注册servlet:

<servlet>
      <servlet-name>OutputStream</servlet-name>
      <servlet-class>com.cy.OutputStream</servlet-class>
</servlet>

映射servlet:

<servlet-mapping>
       <servlet-name>OutputStream</servlet-name>
       <url-pattern>/OutputStream</url-pattern>
</servlet-mapping>

servlet配置:

为Servlet提供初始化配置信息
配置信息由web.xml声明中的字符串组成
 
eg:

<servlet>
    ....
  <init-param>
     <param-name>name</param-name>
     <param-value>Kitty</param-value>
  </init-param>

<init-param>
     <param-name>name1</param-name>
     <param-value>Kitty1</param-value>
  </init-param>

</servlet>

Servlet在编译的代码之外有初始化参数,当参数改变时,不需要重新编译Servlet  ,每个servlet都有一个与之相联的对象ServletConfig; (在servletConfig对象中包含了servlet的初始化参数信息。)

得到指定的参数value:String value= getServletConfig().getInitParameter(“name");

得到所有的所有的参数value:需要应用一个ServletConfig中的一个方法:getInitParameterNmes():返回一个Enumeration(枚举)对象,里面包含了所有的初始化参数。

  1. Enumeration e = this.getServletConfig().getInitParameterNames();
  2. while(e.hasMoreElements()){
  3. String name = (String)e.nextElement();
  4. String value = this.getServletConfig().getInitParameter(name);
  5. System.out.println(name+"="+value);
  6. }
  7. }
 
ServletContext 应用上下文:
 
属于整个Web应用程序
可以访问到Web应用程序资源的本地输入流
把资源的虚拟路径转换为物理路径
记录事件日志

绑定一个对象在整个Web应用程序中共享

 
初始化web应用程序参数:

<web-app>

<context-param>

<param-name>admin email</param-name>

<param-value>admin@cy.com</param-value>

</context-param>

</web-app>

在Servlet中共享信息

为所有的Servlet设置一个实时变化的参数值
在Web应用程序中共享一个对象
eg:

servletContext.setAttribute("password", "tiger");

String password = (String) servletContext.getAttribute("password");

虚拟路径转换为物理路径:

getResourcePaths(java.lang.String path):返回一个集合,路径必须从Web应用程序的根“/”开始;

getResourceAsStream(java.lang.String path):返回一个InputStream对象。当一个资源需要逐字节读取的时候该方法比较适用。

getResource(java.lang.String path):返回一个Web资源列表。

 
 
 

第二章 Servlet基础的更多相关文章

  1. java面向对象编程——第二章 java基础语法

    第二章 java基础语法 1. java关键字 abstract boolean break byte case catch char class const continue default do ...

  2. RxJava2实战--第二章 RxJava基础知识

    第二章 RxJava基础知识 1. Observable 1.1 RxJava的使用三步骤 创建Observable 创建Observer 使用subscribe()进行订阅 Observable.j ...

  3. 第二章 impala基础使用

    第二章 impala基本使用 1.impala的使用 1.1.impala-shell语法 1.1.1.impala-shell的外部命令参数语法 不需要进入到impala-shell交互命令行当中即 ...

  4. (转)JAVA AJAX教程第二章-JAVASCRIPT基础知识

    开篇:JAVASCRIPT是AJAX技术中不可或缺的一部分,所以想学好AJAX以及现在流行的AJAX框架,学好JAVASCRIPT是最重要的.这章我给大家整理了一些JAVASCRIPT的基础知识.常用 ...

  5. 《SQL 基础教程》第二章:查询基础

    这一章的结构如下: SELECT 语句基础 算术运算符和比较运算符 逻辑运算符 SELECT 语句可用于查询数据,并且可以设定条件来查询具有特定值的记录.条件的设定就需要算数运算符.比较运算符和逻辑运 ...

  6. 第二章----python基础

    概要:python是一种计算机编程语言,有自己的一套语法,编译器或者解释器负责把符合语法的程序代码翻译成CPU能识别的机器码,然后执行.python使用缩进来组织代码块,Python程序中大小写是敏感 ...

  7. 第二章 python基础(一)

    第一节 Python文件类型 源代码 Python源代码的文件以“py”为扩展名,由Python程序解释,不需要编译 字节代码 Python源文件经编译后生成的扩展名为“pyc”的文件 编译方法 im ...

  8. 第二章 Python基础语法

    2.1 环境的安装 解释器:py2 / py3 (环境变量) 开发工具:pycharm 2.2 编码 编码基础 ascii ,英文.符号,8位为一个东西,2**8 unicode ,万国码,可以表示所 ...

  9. 第二章 XHTML基础

    1.一个网页,也就是一个XHTML文档,是由元素组成.元素定义了文本和图形在XHTML文档中的结构.XHTML文档的扩展名通常是.html或者htm. 2.XHTML元素使用XHTML标记定义,每个标 ...

随机推荐

  1. Codeforces821A Okabe and Future Gadget Laboratory 2017-06-28 14:55 80人阅读 评论(0) 收藏

    A. Okabe and Future Gadget Laboratory time limit per test 2 seconds memory limit per test 256 megaby ...

  2. openresty + lua 4、openresty kafka

    kafka 官网: https://kafka.apache.org/quickstart zookeeper 官网:https://zookeeper.apache.org/ kafka 运行需要 ...

  3. 12.equals()方法总结

    超类Object中有这个equals()方法,该方法主要用于比较两个对象是否相等.该方法的源码如下: 我们知道所有对象都有表示(内存地址)和状态(数据),看上面代码是用"=="来比 ...

  4. hdu4073 Lights

    题意:找出m个不同的n位2进制数,异或值中前v个为1,其余为0的方案数,答案 % 10567201.. 思路:比赛时第一感觉是用容斥原理做的,然后推呀推,搞了2个小时还是错了..赛后才知道递推才是正解 ...

  5. Concurrency Programming Guide 并发设计指引(二)

    以下翻译是本人通过谷歌工具进行翻译,并进行修正后的结果,希望能对大家有所帮助.如果您发现翻译的不正确不合适的地方,希望您能够发表评论指正,谢谢.转载请注明出处. Concurrency and App ...

  6. 右键在目录当前打开命令行cmd窗口

    Win7系统大家习惯“Win+R”的组合键打开命令提示符. 方法/步骤2 通常情况下,我们点击鼠标右键是没有命令行选项的. 方法/步骤3 在桌面上先按住Shift键,然后鼠标右键,出现选项“在此处打开 ...

  7. 软件测试思维导图[ZZ]

    原文链接 全图

  8. Windows核心编程:第12章 纤程

    Github https://github.com/gongluck/Windows-Core-Program.git //第12章 纤程.cpp: 定义应用程序的入口点. // #include & ...

  9. NHibernate问题求大神解决!!!

    这是我定义的实体类 对应的数据库表 映射文件 数据访问层写的是插入语句 错误: 捕捉到 NHibernate.Exceptions.GenericADOException HResult=-21462 ...

  10. 【vue】http-server开启本地服务

    在写前端页面中,经常会在浏览器运行HTML页面,从本地文件夹中直接打开的一般都是file协议,当代码中存在http或https的链接时,HTML页面就无法正常打开,为了解决这种情况,需要在在本地开启一 ...