什么是Servelt

  - 是运行在Web服务器或应用服务器上的Java程序

  - 在Web上创建动态内容的有效而强大的解决方案

  - 由容器来管理生命周期与Web服务器交互

Servlet规范的组成

  Java Servlet作为Java EE的一部分,Sun公司规范并定义了许多功能

    - Web应用程序

    - Servlet与HTTPServlet

    - 过滤器

    - 安全

    - 国际化

Servlet API

  - SUN公司定义的一套专门用于开发Servlet程序的Java类和接口

  - Web容器和Servlet程序之间使用Servlet API进行通信

Servlet API类图

Servlet生命周期

  - 控制Servlet运行的多线程环境

  - 遵循初始化、服务器和销毁三个阶段

Servlet生命周期图

Servlet与HTTP协议

  - 基本的Servlet对HTTP一无所知

  - 以Javax.servlet.http.HttpServlet类的形式实现对HTTP协议的支持

HttpServlet生命周期

编译Servlet

  将Servlet类库包含进来的方法

    - 将servlet-api.jar 放置在CLASSPATH中

    - 将servlet-api.jar 放置在 JDK安装目录\jre\lib\ext目录下

Servlet Api放置目录

部署Servlet

  Servlet是作为容器管理的Web应用程序的一部分,要使Servlet能够运行,即被Web容器调用,以产生动态响应,就需要部署Servlet。

  - 创建部署描述文件(web.xml)

    创建的web.xml文件:

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
</web-app>

  - 在容器中注册Servlet

    更改后的web.xml文件:

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<servlet>
<description></description>
<display-name>ServletTest</display-name>
<servlet-name>ServletTest</servlet-name>
<servlet-class>java.com.test.ServletTest</servlet-class>
</servlet>
</web-app>

注册Servlet

  - 映射Servlet

    更改后的web.xml文件:

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<servlet>
<description></description>
<display-name>ServletTest</display-name>
<servlet-name>ServletTest</servlet-name>
<servlet-class>java.com.test.ServletTest</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletTest</servlet-name>
<url-pattern>/ServletTest</url-pattern>
</servlet-mapping>
</web-app>

映射Servlet

Servlet URL映射路径

  - 精确模式匹配:这种类型的模式用于将请求一对一映射到指定的Servlet。

  - 扩展名匹配“*.扩展名”:在这种情况下,所有以指定扩展名结尾的URL都转向指定的Servlet。

  - 路径映射:路径映射必须以'/'开始,以'/*'结尾,在这之间可以出现任意字符。路径匹配通常用于将对某个目录的所有请求转向一个指定的Servlet。

  - 默认的Servlet,'/':默认的Servlet映射用于定义一个在没有给出路径信息时请求转向的Servlet。

Servlet配置

  - 为Servlet提供初始化配置信息

  - 配置信息由web.xml声明中的字符串组成

  Servlet在编译的代码之外有初始化参数,当参数改变时,不需要重新编译Servlet,每个servlet都有一个与之相联的对象ServletConfig,Servlet对象提供了如下的方法来访问初始化数据

    - getInitParameter(String name):这个方法返回指定参数的值,如果该值不存在就返回null;

    - getInitParameterNames():这个方法以字符串对象枚举的方式返回Servlet初始化参数的名称,如果没有初始化参数,则返回一个空的枚举;

  web.xml文件代码

<servlet>

<init-param>
<param-name>name</param-name>
<param-value>Tiger</param-value>
</init-param>
</servlet>

  Java代码

//str的值为Tiger
String str = getServletConfig().getInitParameter("name");

ServletContext

  在Servlet编程中,容器创建了应用程序上下文对象(ServletContext),用于描述Servlet运行坏境的环境,使得Servlet可以同容器进行通讯。

  - 属于整个Web应用程序

  - 可以访问到Web应用程序资源的本地输入流

  - 把资源的虚拟路径转换为物理路径

  - 记录事件日志

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

  ServletConfig接口有一个方法getServletContext()返回一个ServletContext对象。然后就可以利用ServletConfig接口定义的方法获取在开发中需要的信息。ServletContext接口定义了主要方法有:

方法

描述

getMajorVersion()

返回容器支持的Servlet API的主要版本

getResourceAsStream()

返回资源对象的输入流

getAttribute()

获得绑定在容器中的对象

setAttribute()

通过名字把一个对象绑定在容器中

getInitParameter()

获得容器的初始化信息参数

getRealPath()

返回虚拟路径的物理路径

Log()

把信息写入到Servlet日志文件中

ServletContext和ServletConfig的关系

在Servlet中共享信息

  - 为所有的Servlet设置一个实时变化的参数值

  - 在Web应用程序中共享一个对象

虚拟路径转换为物理路径

  - Web应用程序的所有资源都被抽象到一个虚拟路径上

  - 以根'/'开始,后面接上Web资源所在子目录的虚拟路径

http://localhost:8080/JavaWeb/servlet.html

  -  不能直接使用虚拟路径来获得物理资源的位置

    getResourcePaths(java.lang.String path):该方法返回指定路径下所有Web资源的列表。路径必须从Web应用程序的根"/"开始。

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

    getResource(java.lang.String path):该方法返回一个Web资源的URL地址。

JavaWeb总结(三)的更多相关文章

  1. Eclipse/JavaWeb (三)三大框架之Spring框架 持续更新中...

    (一)发展历史 现在我们有三个层了,可是每层之间的调用是怎样的呢?比如显示层的struts需要调用一个业务类,就需要new一个业务类出来,然后使用:业务层需要调用持久层的类,也需要new一个持久层类出 ...

  2. JavaWeb学习 (三)————Tomcat服务器学习和使用(二)

    一.打包JavaWeb应用 在Java中,使用"jar"命令来对将JavaWeb应用打包成一个War包,jar命令的用法如下:

  3. java学习笔记-JavaWeb篇三

    63 JSTL_表达式操作64 JSTL_流程控制操作 65 JSTL_迭代操作 66 JSTL_URL操作67 JSTL_改写MVC案例68 Filter概述 69 创建HttpFilter 70 ...

  4. JavaWeb总结(三)—JSP

    一.JSP简介 1.基本认识 (1)JSP页面是由HTML语句和嵌套在其中的Java代码组成的一个普通文本文件,JSP 页面的文件扩展名必须为.jsp. (2)在JSP页面中编写的Java代码需要嵌套 ...

  5. JavaWeb 后端 <三> 之 Response Request 学习笔记

    一.响应对象 Response(重点:HTTP协议响应部分) 查看

  6. JavaWeb(三)JSP概述

    一.JSP概述 1.1.JSP简介 一种动态网页开发技术.它使用JSP标签在HTML网页中插入Java代码.标签通常以<%开头以%>结束.JSP是一种Java servlet,主要用于实现 ...

  7. JavaWeb(三)JSP之3个指令、6个动作、9个内置对象和4大作用域

    前言 前面大概介绍了什么是JSP,今天我给大家介绍一下JSP的三个指令.6个动作以及它的9大内置对象.接下来我们就直接进入正题 一.JSP的3个指令 JSP指令(directive)是为JSP引擎而设 ...

  8. JavaWeb 后端 <三> 之 Response Request

    1. 响应对象 Response(重点:HTTP协议响应部分) 查看

  9. 学习JAVAWEB第三天

    ## 数据库的设计· 1. 多表之间的关系 1. 分类: 1. 一对一(了解): * 如:人和身份证 * 分析:一个人只有一个身份证,一个身份证只能对应一个人 2. 一对多(多对一): * 如:部门和 ...

  10. JavaWeb(三)servlet

    Servlet * 什么是Servlet 是运行在web服务器端的Java应用程序,它使用JAVA语言编写,具有Java语言的优点.与Java程序的区别:Servlet对象主要封装了对Http请求的处 ...

随机推荐

  1. Executors相关的类(线程池)

    一.概述 Java是天生就支持并发的语言,支持并发意味着多线程,线程的频繁创建在高并发及大数据量是非常消耗资源的,因为java提供了线程池.在jdk1.5以前的版本中,线程池的使用是及其简陋的,但是在 ...

  2. 使用 CLI 创建 Azure VM 的自定义映像

    自定义映像类似于应用商店映像,不同的是自定义映像的创建者是你自己. 自定义映像可用于启动配置,例如预加载应用程序.应用程序配置和其他 OS 配置. 在本教程中,你将创建自己的 Azure 虚拟机自定义 ...

  3. 滑动cell的时候执行动画效果

    滑动cell的时候执行动画效果 效果图: 源码: // // ViewController.m // AniTab // // Created by XianMingYou on 15/2/26. / ...

  4. 【php】页面加载优化的14条原则

      1. 尽可能的减少 HTTP 的请求数 [content] 2. 使用 CDN(Content Delivery Network) [server] 3. 添加 Expires 头(或者 Cach ...

  5. September 26th 2017 Week 39th Tuesday

    I have to protect the one thing I can't live without. 我必须为我一生挚爱遮风挡雨. A man is a success if he gets u ...

  6. APP案例分析——嘀嗒番茄钟

    第一部分 调研, 评测 个人第一次上手体验 一直在用时间管理的软件,但是下载了卸载,来来去去也用了很多个.这个嘀嗒番茄钟也是最近比较喜欢的软件,界面简洁,功能简单,没有那么复杂非常容易上手. 功能性的 ...

  7. Linux系统之路——如何在服务器用U盘安装CentOS7.2(二)

    Linux系统之路——如何在服务器用U盘安装CentOS7.2(一) 说明: 截止目前CentOS 7.x最新版本为CentOS 7.2.1511,下面介绍CentOS 7.2.1511的具体安装配置 ...

  8. oc消息转发:forwardInvocation、签名、参量个数、SEL 相关测试

    结论1.签名的参量类型伪造不正确会导致崩溃. 结论二.签名个数不对可能会导致参量丢失. 结论三:在签名配置正确的情况下,系统会将函数调用的所有信息打包到NSInvocation准备转发: - (voi ...

  9. BZOJ4756:[USACO]Promotion Counting(线段树合并)

    Description n只奶牛构成了一个树形的公司,每个奶牛有一个能力值pi,1号奶牛为树根. 问对于每个奶牛来说,它的子树中有几个能力值比它大的. Input n,表示有几只奶牛 n<=10 ...

  10. [Baltic2014]friends

    嘟嘟嘟 首先想想暴力的做法,枚举加入的字符,然后判断删去这个字符后两个长度为n / 2的字符串是否相等,复杂度O(n2). 所以可以想办法把判断复杂度降低到O(1),那自然就想到hash了.hash是 ...