Servlet概述
生命周期方法:
1.void init(ServletConfig):出生后执行一次(仅一次);
2.void service(ServletRequest ruquest,ServletResponse response):每次处理请求时都会被调用;
3.void destroy():死前执行一次;
特性
单例,一个类只有一个对象;当然可能存在多个servlet类!
线程不按例的,所以它效率最高!
Servlet类由我们自己编写,但对象由服务器来创建,并且由服务器来调用相应的方法
一、什么是Servlet
Servlet是Java Web的三大组件之一,它属于动态资源。Servet的作用是处理请求,服务器会把接收到的请求交给Servlet来处理,
在Servlet中通常需要:
1.接收请求数据;
2.处理请求;
3.完成响应。
例如客户端发出登录请求,或者输出注册请求,这些请求都应该由Servlet来完成处理!Servlet需要我们自己来编写,
每个Servlet必须实现javax.servlet.Servlet接口。
二、实现Servlet的方法(由我们自己编写)
实现Servlet有三种方式:
1. 实现javax.servlet.Servlet接口
2. 继承javax.servlet.GenericServlet类
3. 继承javax.http.HttpServlet类
通常我们会继承HttpServlet类来完成我们的Servlet,但学习Servlet还要从java.servlet.Servlet接口开始学。
Servlet.java
public interface Servlet{
public void init(ServletConfig config) throws ServletException;
public ServletConfig getServletConfig();
public void service(Servlet req,ServletResponse res)throws ServletException,IOException;
public String getServletInfo();
public void destroy();
}
Servlet的方法大多数不由我们来调用,而是由tomcat来调用。并且Servlet对象也不由我们来创建,由tomcat来创建!
三、创建Helloservlet应用
- 编写Servlet类
- 在web.xml文件中配置Servlet
HelloServet.java
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,ServletRespose res)
throws ServletException,IOException{
System.out.println("hello servlet");
}
}
我们暂时忽略Servlet中其他四个方法,只关心service()方法,因为它是来处理请求的。我们在其中加入一条控制台输出语句!
web.xml(下面内容需要记住)
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>cn.itcast.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/helloword<url-pattern>
</servlet-mapping>
在web.xml中配置Servlet的目的其实只有一个,就是把访问路径与一个Servlet绑定到一起,上面配置是把访问路径:“/helloword”与“cn.itcast.servlet.HelloServlet”绑定到一起。
- servlet: 指定HelloServlet这个Servlet的名称为hello:
- servlet-mapping: 指定/helloword访问路径所访问的Servlet名为hello.
和通过这个元素关联在一起了!
接下来,我们编译HelloServlet,注意,编译HelloServlet时需要导入servlet-api.jar,因为Servlet.class等类都在servlet-api.jar中。