简介:servlet是三大组件之一(Servlet、Listener、Filter),作用是处理请求,服务器会把接受到请求交给Servlet来处理。
Servlet中通常要做的是接受请求,处理请求,完成响应。
Servlet要由我们自己来编写,并且实现javax.servlet.Servlet接口。
实现Servlet的三种方式
l 实现javax.servlet.Servlet接口;
2 继承javax.servlet.GenericServlet类;
3 继承javax.servlet.http.HttpServlet类;
Servlet的生命周期:
init(servletConfig):出生时(只被调用一次)
service(ServletRequest,ServletResponse)(工作时,被调用0-N次)。
destory()死亡时被调用一次
Servlet中的大多数方法不需要我们来调用,而是有tomat来做调用的。
public interface Servlet {
public void init(ServletConfig config) throws ServletException;
public ServletConfig getServletConfig();
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException;
public String getServletInfo();
public void destroy();
}
public interface Servlet {
public void init(ServletConfig config) throws ServletException;
public ServletConfig getServletConfig();
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException;
public String getServletInfo();
public void destroy();
}
上面我们对servlet有了一个大致的了解,接下来我们搞一个HelloWorld,具体项目创建略过。
完成servlet需要分为两步:
- 编写servlet类
- 在web.xml中配置servlet
public class HelloServlet implements Servlet {
public void init(ServletConfig config) throws ServletException {}
public ServletConfig getServletConfig() {return null;}
public void destroy() {}
public String getServletInfo() {return null;}
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException {
System.out.println("hello servlet!");
}
}______继承Servlet 类来实现的。
我现在只关心service方法
web.xml中的配置
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>cn.han.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/helloworld</url-pattern>
</servlet-mapping>
在web.xml中配置的目的就是为了把访问路径与哪一个servlet绑定到一起,上面是把/helloworld路径与”cn.han.servlet.HelloServlet”绑定到一起。
指定HelloServlet这个Servlet的名字为hello
:指定/helloworld这个路径要访问的servlet是hello
这样和关联到一起。
接下来,我们编译HelloServlet,注意,编译HelloServlet时需要导入servlet-api.jar,因为Servlet.class等类都在servlet-api.jar中。
javac -classpath F:/tomcat6/lib/servlet-api.jar -d . HelloServlet.java
然后把HelloServlet.class放到/helloworld/WEB-INF/classes/目录下,然后启动Tomcat,在浏览器中访问:http://localhost:8080/helloservlet/helloworld即可在控制台上看到输出!
Servlet接口
1、servlet的生命周期
1.1、servlet的出生
服务器会在第一次调用servlet的时候,或者在服务器启动的时候来创建servlet。默认情况下是第一次调用时创建,要想在服务器启动时就创建需要在web.xml中配置。
而且一个servlet类型,服务器只创建一个实例。在servlet被创建后,立马执行servlet的 void init(ServletConfig)方法。注意:这个方法只会在创建后调用一次。
1.2、Servlet的服务
void service()方法,每次请求都会调用一次。所以在这个方法里我们写处理请求的代码。
1.3、Servlet的离去
Servlet是不会轻易离去的,只有关闭服务器的时候Servlet才会被销毁,在销毁之前会调用destroy()方法。