servlet的作用,servlet有什么用?

TheDisguiser 2020-06-30 16:32:04 java常见问答 5606

Servlet我们经常说到,那你们知道servlet的作用是什么吗?下面通过这篇文章一起来了解一下吧。

servlet作用

当我们在使用一个交互式 的Web站点的时候,我们所浏览到的所有内容都应该是在浏览器中显示的。在这些场景背后,都会有一个Web服务器接收会话 中来自于我们的请求,其中可能要切换到其他代码来处理该请求和访问数据,并生成在浏览器中显示的结果。

servlet就是用于这个过程的网守(gatekeeper)。它驻扎在Web服务器上,会处理新来的请求和输出的响应。它是与表示无关的。它有鼓励表示与业务逻辑的混合的倾向。

在最初的应用加载并使用一个Servlet的时候,从初始化到销毁这个Servlet中间会发生一系列的事件。这些事件叫做Servlet的生命周期事件。

1)、servlet生命周期初始化阶段,web容器会通过调用init()方法来初始化Servlet实例,并且可以传递一个实现 javax.servlet.ServletConfig 接口的对象给它。这个配置对象(configuration object)使Servlet能够读取在web应用的web.xml文件里定义的名值(name-value)初始参数。这个方法在Servlet实例的生命周期里只调用一次。

<span style="font-size:14px;">public void  init() throws ServletException {
    //custom initialization code
}</span>

2)、初始化后,Servlet实例开始处理客户端请求了。web容器会调用Servlet的service()方法来处理每一个请求。service() 方法定义了能够处理的请求类型并且调用适当方法来处理这些请求。

<span style="font-size:14px;">protected void service(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException
{
String method = req.getMethod();
if (method.equals(METHOD_GET)) {
    long lastModified = getLastModified(req);
    if (lastModified == -1) {
    doGet(req, resp);
    } else {
    long ifModifiedSince = req.getDateHeader(HEADER_IFMODSINCE);
    if (ifModifiedSince < (lastModified / 1000 * 1000)) {
        maybeSetLastModified(resp, lastModified);
        doGet(req, resp);
    } else {
        resp.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
    }
    }
 
} else if (method.equals(METHOD_HEAD)) {
    long lastModified = getLastModified(req);
    maybeSetLastModified(resp, lastModified);
    doHead(req, resp);
 
} else if (method.equals(METHOD_POST)) {
    doPost(req, resp);
    resp.sendError(HttpServletResponse.SC_NOT_IMPLEMENTED, errMsg);
}
}</span>

3)、最后阶段,web容器会调用destroy()方法来终结Servlet。这个方法在Servlet的生命周期里只能调用一次。

<span style="font-size:14px;"><span style="font-family:Microsoft YaHei;">public void destroy() {
//
}</span></span>

以上就是关于servlet作用的全部内容了,如果你还有什么java常见问题想要知道答案的话,就请关注我们网站来了解吧。

推荐阅读:

servlet处理请求的方式有哪些?该怎么实现?

servlet和jsp的区别是什么?有什么区别?

Servlet3.0比之前的版本有何不同?