什么是SERVLET?
Servlet(java服务器小程序)是一个用java编写的程序,此程序在服务器上运行以处理客户端请求。是按照Servlet规范编写的java类。
Servlet API
Servlet框架由两个java包组成:
1、javax.servlet包中定义了所有的servlet类都必须实现的接口和类
2、javax.servlet.http包中定义了采用HTTP协议通信的HttpServlet类
Servlet框架的核心是:javax.servlet.Servlet接口,所有的Servlet都必须实现这一接口
HTTP SERVLET基础知识
HttpServlet类提供一个抽象类以创建HTTP Servlet
public void doGet(HttpServletRequest req,HttpServletResponse res)
doGet()方法处理客户端作出的GET请求
public void doPost(HttpServletRequest req,HttpServletResponse res)
doPost()方法处理客户端作出的POST请求
有两个参数:HttpServletRequest和HttpServletResponse,这两个类实现了ServletRequest接口和ServletResponse接口
ServletRequest接口中封装了客户请求信息。如客户请求方式、参数名、参数值、客户端正在使用的协议,以及发出客户请求的远程主机信息等
ServletResponse接口为Servlet提供了返回相应结果的方法
JAVAX.SERVLET包的接口为:
ServletConfig接口:在初始化的过程中由Servlet容器使用
ServletContext接口:定义Servlet用于获取来自容器的信息的方法
ServletRequest接口:向服务器请求信息
ServletResponse接口:响应客户端请求
JAVAX.SERVLET包的类为:
ServletInputStream类:用于从客户端读取二进制数据
ServletOutputStream类:用于将二进制数据发送到客户端
JAVAX.SERVLET.HTTP包的接口为:
HttpServletRequest接口:提供HTTP请求信息
HttpServletResponse接口:提供HTTP响应
SERVLET实现:
实例化调用init方法:把配置信息放在ServletConfig对象中,调用init(ServletConfig config)
客户请求和响应调用service方法
释放内存、关闭Web服务器调用destroy方法
abstract GenericServlet类:
public abstract service(request,response)
HttpServlet类:
protected void service(request,response)
public void service(request,response)
protected void doGet(request,response)
protected void doPost(request,response)
我们自己编写的servlet要继承HttpServlet,一般要覆盖doPost或者doGet方法
SERVLET体系结构
Servlet--GenericServlet--HttpServlet--用户自定义的Servlet
servlet收到一个请求--调用public的service()方法--把参数分别转换给HttpServletRequest和HttpServletResponse--这个public的service()方法调用protected的service方法--根据HTTP请求方法的类型,protected的service()调用doXXX()方法之一
编写一个HelloServlet类:
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HelloServlet extends HttpServlet {
private static final String CONTENT_TYPE="text/html;charset=utf-8";
public void init() throws ServletException{
}
public void doGet(HttpServletRequest req,HttpServletResponse res) throws ServletException,IOException{
res.setContentType(CONTENT_TYPE);
PrintWriter out=res.getWriter();
out.println("<html>");
out.println("<head><title>helloServlet</title></head>");
out.println("<body>");
out.println("<h1>Hello Servlet!</h1>");
out.println("</body>");
out.println("</html>");
}
public void destroy(){}
}
在web.xml中部署:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <display-name></display-name> <servlet> <servlet-name>helloServlet</servlet-name> <servlet-class>servlet.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>helloServlet</servlet-name> <url-pattern>/helloServlet</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>