Web项目中的Servlet程序

当Tomcat转发请求,通过Context找到webapps中的web项目。开始加载web.xml时,项目应该如何完成初始化?

===========================================================================

Servlet是什么?

Servlet是用于处理Http请求,是能独立解析数据的小服务程序! 因为Servlet本身也是具有通信模块,他可以接受来自客户端的消息,也可以处理数据库上传回来的数据,并通过显式或者隐式的方法进行响应。从这点上看,web.xml里面<web-app>标签对里面的每一个Servlet标签也变得可以理解了:servlert作为一个独立的小程序,它允许被单独运行,类似一个电器。web.xml像是一个排插一般,需要执行的程序通过把自己的servlet类信息维护到web.xml里面(电插头),在tomcat接受到请求,并通过web.xml寻找时候则可以随着启动!

Servlet的生命周期?

Servlet在整一个生命周期只会被创建一次,以后该实例便被保存!具体什么时候被创建看servlet在web.xml中是否设置随着tomcat初始化!作为一个正常的Servlet同时也是一个java程序,在初始化的时候,先初始化静态块,静态变量,构造方法。接下里便是Init()方法初始化;初始化完成后通过调用service()方法来判断请求是POST/GET/PUT/DELETE请求。而我们只需要对应地重写doPost或者doGet方法则可以了!

在其存活的时间里,由 Servlet 容器处理因为多个线程产生的多个请求,并且每个线程执行一个单一的 Servlet 实例的 service() 方法。

当Servlet程序结束的时候,那么则会调用Destory()方法,关闭其维护的相关的数据库连接等!但一般情况下,serlvet会随着tomcat的启动而初始化,随着tomcat的关闭而destory()

==========================================================================================

ServletConfig:获取web.xml中的参数配置:

当servlet配置了初始化参数后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中,并在调用servlet的init方法时,将ServletConfig对象传递给servlet。Servlet可以通过ServletConfig对象就可以得到当前servlet的初始化参数信息:

ServletConfig config = this.getServletConfig()
String getServletName()? -- 获取当前Servlet在web.xml中配置的名字
String getInitParameter(String name) -- 获取当前Servlet指定名称的初始化参数的值
Enumeration getInitParameterNames()? -- 获取当前Servlet所有初始化参数的名字组成的枚举
ServletContext getServletContext()? -- 获取代表当前web应用的ServletContext对象

ServletCntext:web中共享的域名

WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用,ServletConfig.getServletContext方法获得ServletContext对象,ServletContext是所有维护的Servlet直接的共享容器,可以用于数据的传递。其生命周期随着web的启动而启动随web的关闭而关闭!

ServletContext context = this.getServletContext();

Web.xml中配置全局的参数:
在web.xml中加载的Servlet有用自己独立的init-param参数,而如果要使得所有的servlet都可以使用,可以通过:

<conteext-param>

<param-name></param-name>

<param-value></param-value>

</context-param>

如下:通过servetContext()获取:

ServletContext context = this.getServletContext(); // 得到上下文对象
// 获取单个的Context里面的初始化参数
String value1 = context.getInitParameter("username");
String value2 = context.getInitParameter("password");
System.out.println(value1 + ";" + value2);
// 一次性获取Context里所有的初始化参数
Enumeration enumeration = context.getInitParameterNames();
while (enumeration.hasMoreElements()) {
String name = (String) enumeration.nextElement();
String value = context.getInitParameter(name);
System.out.println(name + ";" + value);
}

==========================================================================================

猜你喜欢

转载自blog.csdn.net/qq_36505948/article/details/80944113