目录
servlet是什么
- servlet是运行在服务器上的程序
- servlet的作用是处理请求,服务器会把接收的请求交给servlet处理
- servlet需要接收数据,处理数据,完成响应
servlet接口实现
- 实现javax.servlet.Servlet接口
- 继承javax.servlet.GenericServlet类
- 继承javax.servlet.HttpServlet类
最基本的就是实现servlet接口
import java.io.IOException;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class ServletTest implements Servlet {
@Override
public void destroy() {
System.out.println("1");
}
@Override
public ServletConfig getServletConfig() {
System.out.println("2");
return null;
}
@Override
public String getServletInfo() {
System.out.println("3");
return null;
}
@Override
public void init(ServletConfig servletconfig) throws ServletException {
System.out.println("4");
}
@Override
public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException {
System.out.println("5");
}
}
servlet生命周期
servlet有三个方法用来定义servlet生命周期,servlet所实现的类的实例是由服务器创建的,这三个方法也是由服务器调用的
(1)void init(ServletConfig servletconfig) :初始化方法,用于在创建servlet是初始化参数等
(2)void service(ServletRequest request, ServletResponse response) :service方法用于处理客户端请求,并将服务器返回的响 应交还给客户端,
(3) void destroy() :destroy方法用于在服务器关闭servlet时回收一些非内存资源
servlet与URL关联
sevlet是一个类并不能在浏览器上直接访问,所以需要和URL关联在一起
需要在web.xml中配置
<servlet>
<servlet-name>aaa</servlet-name>
<servlet-class>Servlet.ServletTest</servlet-class>
</servlet>
<servlet>
<servlet-name>bbb</servlet-name>
<servlet-class>Servlet.ServletTest02</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>aaa</servlet-name>
<url-pattern>/ServletTest</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>bbb</servlet-name>
<url-pattern>/ServletTest02</url-pattern>
</servlet-mapping>
HTTPServlet使用
请求过程
浏览器发出请求,服务器调用void service(ServletRequest request, ServletResponse response)生命周期方法,生命周期方法中调用void service(HttpServletRequest request, HttpServletResponse response)
void service(HttpServletRequest request, HttpServletResponse response)该方法与Http协议有关,它首先会自己判断请求方式是get/post,并根据请求方式调用doGet()或doPost()
所以直接重写doGet/doPost方法可以实现servlet的方法
示例
public class ServletTest02 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp){
System.out.println("02servlet");
}
}