1. 什么是Servlet,使用Servlet的优点。
  2. Servlet处理客户端请求的步骤。
  3. JSP的优点。
  4. JSP与Servlet的相同点与不同点。
  5. JSP其他知识点。

什么是Servlet,使用Servlet的优点。

什么是Servlet? Servlet是采用Java语言编写的服务器端程序,它运行于Web服务器中的Servlet容器中,其主要功能是提供请求/响应的Web服务模式,可以生成动态的Web内容,而这正是HTML所不具备的功能。
优点:

  1. 较好的可移植性。由于Java语言具有跨平台和可移植性强的特点,使得Servlet也有较好的可移植性。
  2. 执行效率高。由于CGI(公共网关接口)针对每个请求都会创建一个进程来处理,而Servlet针对每个请求创建一个线程来执行,而创建线程比创建进程的开销要小,因此与CGI相比,Servlet在交互过程中有更短的的响应时间,响应效率更高。
  3. 功能强大。Servlet可以与Web服务器进行交互,而CGI却无法与Web服务器直接交互。
  4. 使用方便。
  5. 可扩展性强。

    为了更好的说明Servlet,下面给出一个例子:

package xupt.edu.ttms.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/MyServlet")
public class MyServlet extends HttpServlet
{
    private static final long serialVersionUID = 1L;

    public MyServlet()
    {
        super();
        // TODO Auto-generated constructor stub
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException
    {
        // TODO Auto-generated method stub
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException
    {
        // TODO Auto-generated method stub
    }

}

从上面的例子可以看出Servlet的基本结构:MyServlet继承HttpServlet,类中包含2个方法doPost和doGet。“@WebServlet(“/MyServlet”)”是使用@WebServlet注解来实现servlet和url的映射。


Servlet处理客户端请求的步骤

  1. 用户通过单单击一个链接来向Servlet发起请求。
  2. Web服务器接收到该请求后,会把该请求交给相应的容器来处理,当容器发现这是对Servlet发起的请求后,容器此时会创建两个对象:HttpServletRequest和HttpServletResponse。
  3. 容器可以根据请求消息中的URL消息找到对应的Servlet,然后针对该请求创建一个单独的线程,同时把第二步中创建的两个对象以参数的形式传递到新创建的线程中。
  4. 容器调用Servlet的service()方法来完成对用户请求的响应,service()方法会调用doPost()和doGet()方法来完成具体的响应任务,同时把生成的动态页面返回给容器。
  5. 容器把响应消息组装成HTTP格式返回给客户端。此时,这个线程运行结束,同时删除第二步创建的2个对象。
    以上处理流程图如下:
    这里写图片描述

JSP的优点

JSP的引入在一定程度上解决了Servlet存在的缺点。它的实现理念是让每个Servlet只负责其对应的业务逻辑处理,让JSP负责用户的HTML显示,因此实现了业务逻辑与视图实现的分离,从而极大的提高了系统的可扩展性。


JSP与Servlet的相同点与不同点

相同点:

JSP可以被看作一个特殊的Servlet,它只不过是对Servlet的扩展,只要是JSP可以完成的工作,使用Servlet都可以完成,例如,生成动态页面。由于JSP页面最终要被转换成Servlet来运行,因此处理请求实际上是编译后的Servlet。

不同点:
1。Servlet的实现方式在Java中嵌入HTML代码,编写和修改HTML非常不方便,所以它比较适合做流程控制、业务处理;而JSP的实现方式在HTML中嵌入Java代码,比较适合页面的显示。
2.Servlet中没有内置对象,JSP中的内置对象都是必须通过HttpServletRequest 对象、HttpServletResponse对象以及HttpServlet对象得到。

JSP的执行过程:
这里写图片描述
转译和编译
这里写图片描述


JSP其他知识点

1.JSP页面元素:静态内容、指令,表达式,Scriptlet、声明,动作,注释
2.JSP指令:page、include、taglib
3.JSP内置对象:request、response、out、session、application、pageContext、page、config、exception

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐