标签:
package cn.lee;
import java.io.IOException;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class HelloServlet implements Servlet{
@Override
public void destroy() {
// TODO Auto-generated method stub
System.out.println("destroy Servlet");
}
@Override
public ServletConfig getServletConfig() {
// TODO Auto-generated method stub
System.out.println("getServletConfig");
return null;
}
@Override
public String getServletInfo() {
// TODO Auto-generated method stub
System.out.println("getServletInfo");
return null;
}
@Override
public void init(ServletConfig arg0) throws ServletException {
// TODO Auto-generated method stub
System.out.println("init");
}
@Override
public void service(ServletRequest arg0, ServletResponse arg1)
throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("service");
}
public HelloServlet(){
System.out.println("HelloServlet‘Construct");
}
}
以上是一个完整的Servlet
对于Servlet的生命周期应该有一个深刻的认识
1.构造器: 只有第一次请求Servlet时,创建Servlet的实例调用构造器,
这说明Servlet是一个单例。这就可以探讨其中的单例问题。
2.init方法:对象只被调用一次,在创建好实例后立即被调用,用于初始化当前Servlet
3.service:每次访问Servlet都会调用service方法
4.destroy:只被调用一次,在当前Servlet所在的Web应用被卸载前调用,用于释放当前Servlet所占用的资源。如数据库连接。
这些方法都由Servlet容器调用。
在web.xml中配置
5.load-on-startup参数
1)配置在Servlet节点中
<servlet>
<servlet-name>helloServlet</servlet-name>
<servlet-class>cn.lee.HelloServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>helloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<load-on-startup>0</load-on-startup>指定Servlet被创建的时机,若为负数,则表示第一次请求时被创建。若大于等于0,则在Servlet容器加载中就被创建,并且值越小越早被创建。
-------
6.url-pattern 可以是/*, *.do 前者优先匹配
-------
7.ServletConfig 封装了Servlet的配置信息,
1).配置Servlet的初始化参数
<!-- init-param must be put before loadonstartup-->
<servlet>
<init-param>
<param-name>user</param-name>
<param-value>root</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>123</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
初始化参数必须放在load-on-startup前面
2).获取初始化参数:
getInitParameter(String name):获取指定参数名的初始化参数
getInitParameterNames():获取参数名组成的Enumeration对象
public void init(ServletConfig arg0) throws ServletException {
// TODO Auto-generated method stub
System.out.println("init");
String user=arg0.getInitParameter("user");
System.out.println(user);
Enumeration <String> names=arg0.getInitParameterNames();
while(names.hasMoreElements()){
String name=names.nextElement();
String value=arg0.getInitParameter(name);
System.out.println(name+":"+value);
}
String servletName=arg0.getServletName();
System.out.println(servletName);
}
这也是Request的原型
------------------------
第三篇-->Servlet从细节开始(一)
标签:
原文地址:http://www.cnblogs.com/sailing-egg/p/4673697.html