Servlet基础(二)

来源:互联网 发布:bfprt算法 编辑:程序博客网 时间:2024/05/22 05:05
Servlet是一种辅助应用,主要用在Web容器上,是运行在Web服务器或应用服务器上的java程序,它是在Web上创建动态内容的有效而强大的解决方案,由Web容器来管理它的生命周期并且与Web服务器交互。sun公司规定了其规范,由其它厂商完成了它的底层代码,而业务代码需要用户自己来完成。

   如下是Servlet类的结构图:

       Servlet的生命周期过程:1.Web容器启动,读取Conf/Servlet.xml,以确定启动的端口,及Web应用存放的路径;2.Web容器读取webapps中所有web应用中的web.xml并解析,如果这时有一个web应用的web.xml书写有误,那么就会抛出异常;3.web容器加载并实列化Servlet,如果web.xml配置里有<load-on-startup>2</load-on-startup>这句话,且数字的值为0或正数,则在启动Web容器的时候就加载Servlet,如果没有这句话,或者数字的值为负数,那么在第一次访问Servlet的时候才加载它,在整个生命周期中,Servler的对象只有一个;4.调用init方法初始化;5.当请求到达时,调用Servlet方法完成业务,并生成响应(只有这一步,每次提交请求都会执行,其余的值执行一次);6.销毁阶段,调用distroy方法,销毁实列。

    在部署Servlet时分为三步:1.创建部署描述文件,即web.xml;2.在容器中注册Servlet;3.映射Servlet。完成之后web.xml基本结构如下:

    <?xml version="1.0" encoding="utf-8"?>

        <web-app>

            <servlet>

                <servlet-name>HelloWorld</servlet-name>

                <servlet-class>com.lovo.HelloWorld</servlet-class>

            </servlet>

            <servlet-mapping>

                <servlet-name>HelloWorld</servlet-name>

                <url-pattern>/HelloWorld</url-pattern>

            </servlet-mapping>

        </web-app>
    Servlet映射路径的方法有以下几种:1.精确映射,如:/test;2.扩展映射,格式:*.扩展名;3.路径映射,格式:/文件夹名/*;4.默认的Servlet映射,即/。

    在Servlet编程中 ,容器创建了应用程序上下文对象(ServletContext),用于描述Servlet运行环境的信息,使得Servlet可以同容器进行通讯,ServletContext的作用域是整个web应用程序。ServletContext的几大作用:1.可以访问到web应用程序资源的本地输入流;2.把资源的虚拟路径转换为物理路径;3.记录事件日志;4.绑定一个对象在整个web应用程序中共享。

    几个与ServletContext相关的方法:

   ServletContextcontext = getServletContext();//得到ServletContext对象

    String str = context.getInitParameter("aaa");//获取上下文全局对象

    String path = context.getRealPath("WEB-INF/1.jpg");//获取web应用中的绝对路径

    context.setAttribut("name","value");//绑定对象在全局进行共享

    Object obj = context.getAttribut("name");//得到上下文中绑定的对象

    全局初始化web参数,可在web.xml中加入配置如下:

   <context-param>

        <param-name>name</param-name>

        <param-value>value</param-value>

   </context-param>

     在web.xml的当前<Servlet>中,加入以下代码,初始化本Servlet的参数,防止硬编码:

   <init-param>

        <param-name>name</param-name>

        <param-value>value</param-value>

   </init-param>


文章来自于:http://blog.csdn.net/yangbin_hust/article/details/17326287

0 0
原创粉丝点击