Servlet概述
8.1.1 什么是Servlet
Servlet是与JSP一样运行在服务器端的一种JAVA应用程序,它接收来自客户端的请求,并将结果返回给客户端,但它比JSP优点突出。
8.1.2 Servlet的优点
与CGI相比,Servlet优点包括:
1) 功能强大:许多CGI程序难做的任务在servlet中可轻松完成;
2) 执行效率高:servlet以线程方式处理请求,可以做到“一次加载多次使用”;
3) 开发难度低:servlet有很多例程,可以完成许多功能;
4) 可移植性好:servlet是用java编写的,具有java跨平台的特性;
5) 性能更强:servlet比CGI有更多选择,比如缓存计算结果、保持数据库连接等。
8.1.3 Servlet的用途
Servlet有几个用途:
1).Servlet可以接收浏览器端发送的数据,并将结果返回给客户端。
2).Servlet能并发处理多个请求,诸如在线会议的同步请求支持系统。
3).Servlet可以转送请求给其他服务器和Servlet,这就允许在镜像同样内容的几个服务器间平衡负载。
4).Servlet可用以定义彼此之间共同工作的激活代理,每个代理者是一个Servlet,代理与被代理者间可传送数据。
8.1.4 Servlet与JSP的区别
Servlet与JSP的区别在于:
1).编程方式不同,Servlet是严格按照Java语言的编程标准,而JSP则遵循脚本语言的编制标准。
2).Servlet必须在编译以后才能执行,而JSP不需要另外进行编译。
3).运行速度不同,这体现在JSP第一次运行时要先编译成字节码,而Servlet在运行前已编译成字节码了。
8.1.5 Servlet的方法
Servlet执行javax.Servlet.Servlet接口,但你编写Servlet时不需要自己编程去实现这些接口,最通用开发Servlet的办法是使用javax.Servlet.http.HttpServlet类。一般地,HttpServlet指定的类编写的Servlet可以多线程地并发运行service()方法。HttpServlet中加入一些方法来协助HTTP基本请求,HttpServlet类中的方法service()自动地调用这些方法,包括有:
.doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException;
用以处理HTTP的GET请求。可重载此方法,并支持HEAD方法。该操作时安全的,无副作用。
.doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException;
用以处理HTTP的POST请求。它不能立即取得资源,对安全性高要求的用户有一些副作用。
.doPut(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException;
用以处理HTTP的PUT请求。此PUT操作模拟通过FTP发送一个文件。对安全性高要求的用户有一些副作用。
.doDelete(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException;
用以处理HTTP的DELETE请求。此操作允许客户端请求一个从server移出的URL。对安全性高要求的用户有一些副作用。
.doHead(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException;
用以处理HTTP的HEAD请求。默认情况下它会在GET方法执行时运行,但不返回数据到客户端,只返回header。是安全的。
.doOptions(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException;
用以处理HTTP的OPTIONS请求。此方法自动地决定支持什么HTTP方法。
.doTrace(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException;
用以处理HTTP的TRACE请求。缺省时产生一个包含所有在trace请求中的header的信息应答。
8.1.6 Servlet的生命周期
Servlet的生命周期定义了一个Servlet如何被加载、初始化,以及它怎样接收请求、响应请求、提供服务。分三个阶段:
Servlet初始化阶段:调用init()方法
响应客户请求阶段:调用service()方法
结束阶段:调用destroy()方法
1.Servlet 生命周期:Servlet 加载--->初始化--->服务--->销毁。
2.init():在Servlet的生命周期中,仅执行一次init()方法。它是在服务器装入Servlet时执行的,负责初始化Servlet对象。可以配置服务器,以在启动服务器或客户机首次访问Servlet时装入Servlet。
3.service():它是Servlet的核心,负责响应客户的请求。每当一个客户请求一个HttpServlet对象,该对象的Service()方法就要调用,而且传递给这个方法一个“请求”(ServletRequest)对象和一个“响应”(ServletResponse)对象作为参数。在HttpServlet中已存在Service()方法。默认的服务功能是调用与HTTP请求的方法相应的doGet()或doPost()或DoPut()。
4.destroy(): 仅执行一次,在服务器端停止且卸载Servlet时执行该方法。当Servlet对象退出生命周期时,负责释放占用的资源。一个Servlet在运行service()方法时可能会产生其他的线程,因此需要确认在调用destroy()方法时,这些线程已经终止或完成。
8.1.7 Servlet的类和接口
1. ServletInputStream类
ServletInputStream类是一个抽象类,它提供了从客户机请求读取二进制数据的一个输入流,对于一些协议,例如HTTP、POST和PUT,可有那个此对象读取和发送数据。
public int readLine(byte b[], int off, int len) throws IOExecption
2. ServletOutputStream类
ServletOutputStream类是一个抽象类,它提供了一个输出流,用于向客户发送数据,包含的方法有:
public void print(数据类型) throws IOExecption
public void println(数据类型) throws IOExecption
3. ServletConfig类
public abstract ServletContext getServletContext()
public abstract String getInitParameter(String name)
public abstract Enumeration getInitParameterNames()
4. HttpServletRequest类(参见request的方法)
jsp复习资料汇总
[JSP]2017年1月24日asp教程编程辅导汇总
[ASP]2016年12月2日JSP快速入门教程汇总
[JSP]2016年12月2日jsp基本用法和命令汇总
[JSP]2016年10月3日ASP编码教程:如何实现/使用缓存
[ASP]2015年4月15日