Servlet(1)

来源:互联网 发布:cc攻击防御 php 编辑:程序博客网 时间:2024/06/16 07:54
一、Servlet概述

Servlet是一种独立于平台和协议的服务器端的Java应用程序,可以生成动态的web页面。它担当Web浏览器或其他http客户程发出请求、与http服务器上的数据库或应用程序之间交互的中间层。

1.Servlet是用Java编写的Server端程序, 它与协议和平台无关。Servlet运行于Java服务器中。
2.Java Servletk可以动态地扩展服务器的能力,并采用请求-响应模式提供Web服务。
3.Servlet是使用Java Servlet应用程序设计接口及相关类和方法的Java程序。它在Web服务器上或应用服务器上运行并扩展了该服务器的能力。4.Servlet装入Web服务器并在Web服务器内执行。
5.Servlet是以Java技术为基础的服务器端应用程序组件,Servlet的客户端可以提出请求并获得该请求的响应,他可以是任何Java程序、浏览器或者任何设备。


二、Servlet运行原理


1 当Web服务器接收到一个HTTP请求时,它会先判断请求内容——如果是静态网页数据,Web服务器将会自行处理,然后产生响应信息;如果牵涉到动态数据,Web服务器会将请求转交给Servlet容器。此时Servlet容器会找到对应的处理该请求的Servlet实例来处理,结果会送回Web服务器,再由Web服务器传回用户端。

2 针对同一个Servlet,Servlet容器会在第一次收到http请求时建立一个Servlet实例,然后启动一个线程。第二次收到http请求时,Servlet容器无须建立相同的Servlet实例,而是启动第二个线程来服务客户端请求。所以多线程方式不但可以提高Web应用程序的执行效率,也可以降低Web服务器的系统负担。


三、Servlet的优点


1.可移植性好:Servlet是用Java语言编写的,具有完善的Servlet API标准,企业编写的Servlet程序,可以轻松地移植到其他服务器中。
2.执行效率高:Servlet请求到来的时候激活Servlet,请求处理完,等待新的请求,新的请求将生成一个线程而不是进程。 
3.使用方便:Servlet可以轻松地处理HTML表单数据,并读取和设置HTTP头,处理Cookie,跟踪会话。
4.可扩展:Java语言是面向对象的编程语言,Servlet由Java语言编写,所以它继承了Java的面向对象的优点。在业务逻辑处理中,可以通过封装、继承等来扩展实际的业务需要,其扩展性非常强。

四、Servlet代码结构


package hu;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("/ServletDemo01")public class ServletDemo01 extends HttpServlet {    private static final long serialVersionUID = 1L;    //初始化方法    public void init() throws ServletException{    }    //处理HTTP Get请求    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        response.getWriter().append("Served at: ").append(request.getContextPath());    }    //处理HTTP Post请求    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        doGet(request, response);    }    //处理HTTp Put请求    protected void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {    }    //处理HTTP Delete方法    protected void doDelete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {    }    //销毁方法    public void destory(){        super.destroy();    }}

  ServletDemo01类显示了一个Servlet对象的代码结构,其中ServletDemo01继承HttpServlet类被声明为一个Servlet对象。该类包含6个方法,其中init()方法与destory()方法为Servlet初始化与声明周期结束所调用的方法,doGet()、doPost()、doPut()和doDelete()方法为Servlet针对处理不同的HTTP请求类型所提供的方法。
说明:开发中常用到的方法是doGet()与doPost()。这两个方法分别处理Http的Get和Post请求。


五、Servlet的加载和实例化


1.Servlet容器负责实例化和加载Servlet,这个过程可以在Servlet容器加载时执行,可以在Servlet响应请求时执行,也可以在两者之间的任何时候执行

2.Servlet 容器加载完Servlet之后,首先必须初始化它。初始化时Servlet调用init()方法,该方法可以以一个ServletConfig类型的引用为参数,该参数可以让Servlet从部署描述符文件中读取一些键值对形式的参数值,以初始化这些数据,ServletConfig对象的引用还可以让Servlet接受ServletContext对象。

 

 六、Servlet处理请求


1.Servlet被初始化以后,就处于能响应请求的就绪状态。每个Servlet都有一个请求的Servlet Request对象和响应的Servlet Response对象。 
2.Servlet还可以实现ServletRequest和ServletResponse接口。ServletRequest接口可以让Servlet获取客户端请求中的参数,如request信息、协议类型等。Servlet可以从ServletInputStream流中读取request数据。ServletResponse接口允许Servlet设置response headers和status codes。实现这个接口可以使Servlet能访问ServletOutputStream流,用来向客户端返回数据。
0 0