zoukankan      html  css  js  c++  java
  • JavaWeb总结(三)

    什么是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安装目录jrelibext目录下

     

    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地址。

     

     

    我不作恶

    但有权拒绝为善

    我不赞同

    但是我捍卫你不为善的权力

  • 相关阅读:
    Codeforces Round #344 (Div. 2) C. Report 其他
    Codeforces Round #344 (Div. 2) B. Print Check 水题
    Codeforces Round #344 (Div. 2) A. Interview 水题
    8VC Venture Cup 2016
    CDOJ 1280 772002画马尾 每周一题 div1 矩阵快速幂 中二版
    CDOJ 1280 772002画马尾 每周一题 div1 矩阵快速幂
    CDOJ 1279 班委选举 每周一题 div2 暴力
    每周算法讲堂 快速幂
    8VC Venture Cup 2016
    Educational Codeforces Round 9 F. Magic Matrix 最小生成树
  • 原文地址:https://www.cnblogs.com/HackerBlog/p/5945736.html
Copyright © 2011-2022 走看看