一.起步
1.新建一个类继承Servlet接口
public class HelloServlet implements Servlet { @Override
public void destroy() {
System.out.println("Destroy...");
} @Override
public ServletConfig getServletConfig() {
System.out.println("getServletConfig...");
return null;
} @Override
public String getServletInfo() {
System.out.println("getServletInfo...");
return null;
} @Override
public void init(ServletConfig arg0) throws ServletException {
System.out.println("init...");
} @Override
public void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException {
System.out.println("service...");
resp.getWriter().println("Hello World...");
} public HelloServlet() {
System.out.println("HelloServlet Constructor...");
}
}
2.配置web.xml
<servlet>
<servlet-name>helloServlet</servlet-name>
<servlet-class>com.bwr.start.HelloServlet</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>helloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
说明:部署在tomcat(本地)上,默认访问地址为http://localhost:8080/project_name/hello, 浏览器页面显示"hello world..."
二. Servlet容器
1.可以创建Servlet,并调用Servlet的相关生命周期方法
2.Servlet, JSP, Filter, Listener都在容器内运行
三. Servlet的生命周期
1.生命周期相关方法(以下方法都是由servlet容器负责调用)
Servlet构造器:只被调用一次,只有第一次请求Servlet时,创建Servlet实例,调用构造器。
说明Servlet是单例的。
init():只被调用一次,在创建号实例后立即被调用,用于初始化当前Servlet,此方法会传入一个ServletConfig参数。
service():会被多次调用。每次请求都会调用service方法,用于响应请求。
destroy():只被调用一次。在当前Servlet所在的WEB应用被卸载前调用,用于释放当前Servlet占用的资源。
2. load-on-startup配置
a. 配置在web.xml中servlet标签中,用于指定Servlet创建的时机.
b. load-on-startup取值:若为负数则在第一次请求时被创建;若为0或整数,则在当前应用被web容器加载时创建实例,值越小,加载的时机越早。
<servlet>
<servlet-name>helloServlet</servlet-name>
<servlet-class>com.bwr.start.HelloServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
3. Servlet配置细节
a. 一个Servlet可以有多个servlet-mapping配置映射
b. <url-pattern> 配置可以使用通配符,但是只允许两种形式
<url-pattern>/*</url-pattern> 有"/"不允许加扩展名
<url-pattern>*.do</url-pattern> 有扩展名不允许加"/"
三. Servlet相关的类
1. ServletConfig
封装了Servlet得配置信息,并且可以获取ServletContext对象。
2. ServletContext
Servlet引擎为每个WEB应用程序都创建一个对应的ServletContext对象,在Servlet中可以通过ServletConfig的getServletContext()方法获取。
3. ServletRequest
4. ServletResponse