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