当前位置:首页>开发>正文

Servlet如何运行 servlet的执行过程是怎么样子的

2023-06-09 19:52:35 互联网 未知 开发

 Servlet如何运行 servlet的执行过程是怎么样子的

Servlet如何运行?

建立一个工程 ,和一个WEB站点 然后在建servlet 在out.println("

afdsa

") 注意 这个是servlet自己带的 在p标签中间写点字 运行就出来个网页 了

servlet的执行过程是怎么样子的

早期的web服务器(比如apache web server,
iis)只能够处理静态资源的请求(需要事先将页面
文件写好 ,并存放到服务器特定的目录下面),
不能够处理动态资源的请求(即依据请求参数,通过
计算,生成一个新的页面)。
扩展方式,早期是使用CGI程序来扩展:
CGI(common gateway interface),CGI是一个规范,
约定了web服务器与CGI程序(使用perl,c等语言开发的
,并且符合CGI规范的程序)相互调用的过程。
CGI程序有三个问题:

servlet如何使用?

Servlet是响应客户端请求的技术。就是一个运行在Web服务器上的,由服务器实例化,并根据客户端发送过来的请求,调用其中相应方法的一个类。
q理解HTTP Servlet 基础知识
q使用 Servlet API
q理解Servlet 的生命周期
q使用JBuilder2005演示Servlet
本章很重要,首先要理解servlet的作用,就是用来响应客户端的请求的;然后理解servlet的运行机制,就是什么时候响应客户端请求,由服务器调用什么方法来处理客户端请求;再具体的看每个方法,这时看到方法中出现的一些类,再来理解这些类使用来实现什么功能的。(理解思路)
知识点:
1、生命周期(本节了解servlet何时被调用何方法来处理客户端请求,注意理解每个方法的作用和调用时间。)
生命周期: (重点)
实例化—————————〉初始化——〉服务——〉破坏——〉不可用
| | | |
| | | |
容器创建servlet实例 init() service() destroy()
2、在HttpServlet类中,doGet()和doPost()分别被用来对客户端get请求和post请求来做处理。
3、servlet 应用程序体系结构
在理解了servlet的各个方法是何时被调用之后,再来看每个方法中使用到的这些类是做什么用的,这样再来决定什么时候来使用这些类。
整个servlet的应用程序中,所有的类构成了servlet-API
ServletInputStream类
该类创建的对象用于从客户端请求中读取二进制数据。(用途决定了什么时候使用该类。如果现在要我们从客户端的请求中读取数据,则要考虑到使用该类)
ServletOutputStream类
该类用于将二进制数据传送给客户端。其类中有print(),println()方法可以用来往客户端输出。
ServletRequest接口
该接口对象用于接受客户端请求信息。它的子接口HttpServletRequest用作于doGet()方法的参数,用来接受Servlet容器传递过来的客户端请求。也就是说,Servlet容器,将客户端请求封装成一个HttpServletRequest类型对象,并传递给doGet()方法。由 该方法中HttpServletRequest刑参接受。
ServletResponse接口,
该接口用于接受向客户端发送的响应。它的子接口HttpServletResponse用于doGet()方法的参数,用于接受Servelt容器传递过来的对客户端的响应。也就是说,Servlet容器,创建了HttpServletReponse类型的对象,用于表示对客户端的响应,并传递给doGet()方法。那么我们在doGet()方法中可以通过设置该对象来设置对客户端的响应。
HttpServletRequest接口(重点)
HttpServletResponse接口(重点)
ServletConfig接口
该接口对象是用于传递Servlet的配置信息的。我们在web.xml中配置了关于Servlet的配置信息,而该Servlet被实例化的时候,Servlet容器从web.xml中提取出有关Servlet的初始化信息并且封装成为一个ServletConfig类型的对象,传递给init()方法。(那我们就可以在init()方法中,通过该对象获取Servlet的初始化信息了。)
ServletContext接口(重点)
该接口用于创建一个生存周期为整个应用程序的对象,并用它来存储一些整个应用程序中要使用的变量。
对于每个应用程序Servlet容器将会创建出一个ServletContext类型的对象,并一直存在知道应用程序不再发布在服务器上。那么我们就可以使用该对象来保存一些变量,这些变量在整个应用程序生命周期内都存在。
注意,当有变量要存储于某个范围内时,注意区别、联系、比较该对象与针对于每个客户端创建的HttpSession对象(session);针对于每请求创建的HttpRequestServlet对象;针对于每个页面创建的PageContext对象(page)