Servlet实现方式,生命周期执行过程

Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。使用Servlet,可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。

二、实现方式

======

1、继承HttpServlet


  • API简介

继承自 GenericServlet. 遵守 HTTP协议实现,以设计模式的角度看,HttpServlet担任抽象模板角色,模板方法:由service()方法担任。基本方法:由doPost()、doGet()等方法担任。service()方法流程,省略了部分判断逻辑。该方法调用七个do方法中的一个或几个,完成对客户端请求的响应。这些do方法需要由HttpServlet的具体子类提供,这种API封装是典型的模板方法模式。

  • 代码案例

public class ServletOneImpl extends HttpServlet {

@Override

protected void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType(“text/html;charset=utf-8”);

response.getWriter().print(“执行:doGet”);

}

@Override

protected void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType(“text/html;charset=utf-8”);

response.getWriter().print(“执行:doPost”);

}

}

2、继承GenericServlet


  • API 简介

Servlet 接口和 ServletConfig 接口的实现类. 一个抽象类. 其中的 service 方法为抽象方法。

  • 代码案例

public class ServletTwoImpl extends GenericServlet {

@Override

public void service(ServletRequest servletRequest, ServletResponse servletResponse)

throws ServletException, IOException {

HttpServletResponse response = (HttpServletResponse)servletResponse ;

response.setContentType(“text/html;charset=utf-8”);

response.getWriter().print(“执行:service”);

}

}

3、实现Servlet接口


  • API 简介

Servlet是一个接口,其中包含init、getServletConfig、service、getServletInfo、destroy几个核心方法。

  • 代码案例

public class ServletThreeImpl implements Servlet {

@Override

public void init(ServletConfig servletConfig) throws ServletException {

servletConfig.getServletName();

System.out.println(“init 被调用…”);

}

@Override

public void service(ServletRequest servletRequest, ServletResponse servletResponse)

throws ServletException, IOException {

System.out.println(“ThreadId:”+Thread.currentThread().getId());

System.out.println(“service 被调用…”);

HttpServletResponse response = (HttpServletResponse)servletResponse ;

response.getWriter().print(“Servlet.Life”);

}

@Override

public void destroy() {

System.out.println(“destroy 被调用…”);

}

@Override

public ServletConfig getServletConfig() {

System.out.println(“getServletConfig 被调用…”);

return null;

}

@Override

public String getServletInfo() {

System.out.println(“getServletInfo 被调用…”);

return null;

}

}

三、生命周期

======

  • 加载和实例化

当Servlet容器启动或客户端发送请求时,Servlet容器会查找是否存在该Servlet实例,若存在,则直接读取该实例响应请求;如果不存在,就创建一个Servlet实例(属于单例设计模式)。load-on-startup 可以配置创建时序。

  • 初始化:init()

实例化后,Servlet容器将调用init方法一次,初始化当前 Servlet。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值