Servlet是用Java编写的服务器端程序,是由服务器端调用和执行的、按照Servlet规范编写的Java类。
Servlet可以处理客户端传来的HTTP请求,并返回一个响应。它是一个Java类,具有可移植性,安全,可扩展性好等特点。
一个简单的Servlet小例子:
package servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.GenericServlet; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class HelloWorld extends GenericServlet { public void service(ServletRequest request, ServletResponse response) throws IOException { //设定Web服务器的响应方式是HTML response.setContentType("text/html;charset=utf-8"); //获得PrintWriter对象,并打印输出响应 PrintWriter out = response.getWriter(); //以HTML格式输出响应 out.println("<HTML>"); out.println("<BODY>"); out.println("<H1>Hello World!!!</H1>"); out.println("</BODY>"); out.println("</HTML>"); out.close(); } }
Servlet需要部署到Web容器中,它的生命周期有Web容器管理,可以分为以下几个阶段。
- 装载Servlet:这些操作一般是动态执行的。有些服务器提供的一些管理功能,可以在启动服务器的时候装载Servlet,并生成特定的Servlet;
- 创建一个Servlet实例;
- 调用Servlet的init()方法;
- 服务:如果服务器接收到对一个Servlet的请求,就会执行这个Servlet的service()方法;
- 销毁:Servlet实例的销毁,通过调用这个Servlet的destory()方法来销毁这个Servlet的实例;
Java对Servlet的支持是通过javax.servlet and javax.servlet.http这两个软件包实现的,后者是前者的一个子包。
javax.servlet包中包涵了servlet常用的接口和类,如GenericServlet,ServletConfig,ServletRequest,ServletResponse,RequestDispatcher
而javax.servlet.http软件包除了继承以上接口和类外,还包括针对HTTP协议的方法、特殊请求和相应对象,如HttpServlet,HttpServletRequest、HttpServletResponse,HttpSession和RequestDispatcher等。
- HttpServlet提供处理不同的HTTP请求类型