1.servlet生命周期:
2.servlet生命周期方法执行流程:
映射部分(web.xml):
<servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>oh.helloServlet</servlet-class> <!-- 注册 -->
</servlet>
<servlet-mapping>
<servlet-name>Hello</servlet-name> <!-- 映射 -->
<url-pattern>/Hello</url-pattern> <!-- 设置servlet匹配的唯一的url -->
</servlet-mapping>
对应的生命周期流程(.java):
public class helloServlet implements Servlet {
public helloServlet() {
System.out.println("实例化");
}
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("初始化");
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("服务");
}
@Override
public void destroy() {
System.out.println("销毁");
}
@Override
public String getServletInfo() {
//说明性质的信息,如:servlet版本,servlet作者名,servlet所在的应用等
return null;
}
@Override
public ServletConfig getServletConfig() {
return null;
}
运行顺序:
在刷新页面时会再次执行service:
在关闭程序时会调用destroy:
3.servlet的特征:
其中,只有很重要的servlet才会在web容器启动时实例化,这样可以加快第一次执行的速度。
4.在启动时实例化的方法:
在注册servlet时加上
<load-on-startup>1</load-on-startup> <!-- 设置优先级-->
1.数字表示servlet实例化的优先级,越小越先,要求>=0
2.在有多个servlet时使用
5.servlet里的两个map
6.servletconfig(servlet配置信息,对单个servlet有效)
1.servletconfig是一个接口,使用的对象是它实现类的一个实例
<servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>oh.helloServlet</servlet-class> <!-- 注册 -->
<load-on-startup>1</load-on-startup> <!-- 设置优先级-->
</servlet>
将上图servlet注册信息抽象成一个对象,放在init初始化函数内。
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("初始化");
System.out.println(servletConfig);
}
输出后:
2.接口方法:
使用方法:
对单个的servlet增加变量(init-param),此下的变量会被servletconfig的getinitparameter方法get到:
运行截图如下:
3.servletconfig的servletcontext(servlet的环境,对域属性操作,获取路径的整体操作)
1.servletcontext也是接口,方法有很多:
2.可以设置(serattribute)和读取(getattribute,getInitparameter)全局的初始化变量,且所有的servlet共享,但要与servletconfig的getInitparameter区分开(只对在servlet注册内配置了初始化变量的那一个servlet有用,这个是对域属性有用)
3.设置这个的域属性的定义与注册servlet同级别(因为是全局嘛
4.储存全局变量的地方叫做域(context-param),变量名叫属性,域属性
5.getcontextpath可获得应用的名称
6.getrealpath可获得全路径: