Servlet接口
servlet接口是整个servlet的核心。它是所有Servlet类必须直接或者间接实现的一个接口,其内部需要实现的5个方法分别关乎着我们servlet的生命周期和业务实现。
init(... ) 当Servlet第一次被请求时,Servlet容器就会开始调用这个方法来初始化一个Servlet对象出来
service(...) 每当请求Servlet时,Servlet容器就会调用这个方法
destroy(...) 当要销毁Servlet时,Servlet容器就会调用这个方法
getServletInfo( ...) 这个方法会返回Servlet的一段描述,可以返回一段字符串。
getServletConfig(... )这个方法会返回由Servlet容器传给init( )方法的ServletConfig对象。
servlet的生命周期
由于servlet本身没有main()方法,不能独立运行,他的运行完全由Servlet容器来进行控制和调度。Servlet 生命周期可被定义为从创建直到毁灭的整个过程
@WebServlet(value="/s01")
public class Servlet01 implements Servlet{
@Override
public void init(ServletConfig config) throws ServletException {
// TODO Auto-generated method stub
System.out.println("初始化时调用");
}
@Override
public ServletConfig getServletConfig() {
// TODO Auto-generated method stub
return null;
}
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("开启服务时调用");
}
@Override
public String getServletInfo() {
// TODO Auto-generated method stub
return null;
}
@Override
public void destroy() {
// TODO Auto-generated method stub
System.out.println("销毁时调用");
}
}
GenericServlet抽象类
GenericServlet实现了servlet接口,并且实现了init()和destroy()方法,简化了我们的开发流程
//实现GenericServlet
public class MyServlet extends GenericServlet{
@Override
public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("做服务-----");
}
}
<!--配置xml-->
<servlet>
<servlet-name>my</servlet-name>
<servlet-class>com.qcby.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>my</servlet-name>
<url-pattern>/myservlet</url-pattern>
</servlet-mapping>
HttpServlet类
HttpServlet是继承了GenericServlet类,这是一个抽象类。因为我们的请求一般都是Http请求,为了匹配Http请求,于是就有了HttpServlet。为了能够更加方便的处理来自浏览器的数据和将数据写会到浏览器,HttpServlet类引用了HttpServletRequst和HttpServletResponse两个类来处理和相应数据。
//实现HttpServlet
public class MyServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}