1.Servlet的注册与与运行
• servlet程序必须通过Servlet容器来启动运行,并且储存的目录有特殊的要求,通常需要需要储存在<WEB应用程序目录>\WEB-INF\classes\目录中
• servlet程序必须在web应用的web.xml文件中进行注册和映射其访问路径,才可以被servlet引擎加载及被外界的应用访问
• 一个<servlet>元素用于注册一个servlet,它有两个重要的子元素,<servletname>和<servletclass>,分别用于设置servlet的注册名称和servlet的完整类名
• <servlet-mapping>元素用于映射一个已经注册的servlet的对外访问路径,它包含<servletname>和<url-pattern>两个基本的元素,分别用来设置servlet得到名称(必须和<servlet>中的注册名程一致)和Servlet的对外访问路径
2.Servlet容器:运行Servlet Jsp Filter 等的软件环境
1):可以用来创建Servlet,并调用Servlet相关的生命周期方法
2):JSP Filter Listener Tag(标签)..的生命周期也要在Servlet中完成
3.Servlet的生命周期的方法
1):构造器,只被调用一次,只有第一次请求Servlet时,创建Servlet的实例,调用构造
2):init方法:只被调用一次在创建好实例以后,立即被调用,用于初始化当前的Servlet
3):service:被多次调用,每次都会请求调用service方法,实际上就是用于响应请求的
4):destory:只被调用一次,在当前的Servlet所在的WEB应用被卸载时调用你该方法,释放该web应用所占有的资源
4.load-on-startup参数
1):创建在servlet节点中(web.xml)
<servlet>
<servlet-name>SecondServlet</servlet-name>
<servlet-class>com.it.web.SecondServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
2):可以指定Servlet被创建的时机,如果为负数则在第一次请求时被创建,若为0或正数,则当前WEB应用被Servlet容器加载时创建实例,且数组越凶小越先被创建
5:关于servlet-mapping
1):同一个Servlet可以用多个<servlet-mapping>用来映射,
2):在servlet映射到URL时可以使用*通配符,但是只能是两种固定格式,
一种格式是"*.扩展名",
另一种方式是以(/)开头并以”/*“结尾
注意不能是"*/"出现错误
6.ServletConfig:封装了Servlet的配置信息,并且可以获取ServletContext对象
1).配置Servlet的初始化参数
<servlet>
<servlet-name>SecondServlet</servlet-name>
<servlet-class>com.it.web.SecondServlet</servlet-class>
<!--配置Servlet的初始化参数 ,必须在load-on-up 之前配置-->
<init-param>
<param-name>user</param-name>
<param-value>root</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>123456789</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
2)获取初始化参数:
方法一:getInitParamter(Stringname):获取指定参数名(name)的初始化参数
Stringuser = servletConfig.getInitParameter("user");
System.out.println("user"+ user);
方法二:getInitParamterNames():获取参数名组成的Enumeration对象
Enumeration<String>names = servletConfig.getInitParameterNames();
while(names.hasMoreElements()){
Stringname = names.nextElement();
Stringvlaue = servletConfig.getInitParameter(name);
System.out.println("name" + name + "vlaue" + vlaue);
}
3)获取Servlet配置名称(了解)
Stringservletname = servletConfig.getServletName();
System.out.println(servletname);
7.ServletContext接口(SerletContext上下文)
1)可以由ServletConfig获取
ServletContexta = ServletConfig.getServlettContext();
2)该对象代表当前WEB应用,可以认为ServletContext是当前 WEB应用的大管家,可以从中获取到当前WEB应用的各个方面的信息。
设置初始化参数所有的Servlet可以获取,而Servlet的初始化参数只能用那个Servlet获取
常见的方法
方法①获取当前WEB 应用的初始化参数
设置初始化参数
<!--配置当前WEB应用的初始化参数-->
<context-param>
<param-name>driver</param-name>
<param-value>com.mysql.jdbc.Driver</param-value>
</context-param>
方法②获取WEB应用的某一文件的在服务器上的绝对路径;而不是部署前的路径
getRealPath(Stringpath)
Stringpath = servletContext.getRealPath("/note.txt");//此处的/为根目录,括号内的文件只能是Web Content的子文件
System.out.println(path);
方法③:获取当前WEB应用的名称
getContextPath();
StringcontextName = servletContext.getContextPath();
System.out.println(contextName);
方法④:获取当前WEB应用的某一个对应的输入流
getResourceAsStream(Stringpath);//path的/为当前web应用的根目录