servlet基础知识_动力节点Java学院整理

  

Servlet是一门专门用于开发动态网络资源的技术,太阳公司在其API中提供了一个Servlet接口(当然,我们不会去直接实现这个接口,而是去继承其实现类会更好),因此,狭义的Servlet是指这个接口,广义的Servlet是指任何实现了这个Servlet接口的类。使用Servlet开发一个动态网络资源,其实就是开发一个Java程序向浏览器输出数据。

  

Servlet其实就是一个运行在服务器上得Java程序,Servlet是J2EE十三门技术中的一种,因此我们不能去看J2SE的API文档,如果是初学者,最好能看专门Servlet API的文档。我们来看Servlet的文档介绍:

  

 servlet基础知识_动力节点Java学院整理

  

从这个对Servlet接口的介绍就可以看的出,如果要实现Servlet接口,就要实现其所有的方法,Servlet程序是运行在web服务器上得,用来接收和响应从客户端发来的请求。当然就像我之前说的,如果自己写一个类来实现Servlet接口,那么就要复写Servlet所有的方法,但是我们可以继承其实现类,例如GenericServlet类或者HttpServlet类,这样只需要复写我们想复写的方法即可。

  

Servlet中的方法包括了其生命周期方法和非生命周期的方法。在Servlet中,生命周期方法包括:init (ServletConfig配置),摧毁(),服务(ServletRequest点播,ServletResponse res),也就是Servlet初始化,对请求进行响应服务,和Servlet的销毁。

  

除了Servlet的生命周期方法,还有非生命周期方法,如getServletConfig()和getServletInfo()方法,这两个方法可以获得有关该Servlet的一些信息。

  

Servlet生命周期是指Servlet实例从创建到响应客户端请求,最后销毁的过程。具体过程如下:

  

1,服务器创建一个Servlet的实例,也就是调用了init()方法;

  

2,一个客户端的请求(对象)到达服务器;

  

3,服务器将请求发送给Servlet;

  

4, Servlet生成对请求的响应(对象),

  

5,服务器激活Servlet的service()方法,传递请求对象和响应对象作为参数;

  

6、服务()方法获得请求对象的信息,处理请求,访问资源,获得所需的信息;

  

7、服务()方法使用响应对象的方法,将响应传回服务器,最终到达客户端.Service方法还可能激活其他方法处理请求,如doGet()或者doPost()方法;

  对

8日于更多的客户端请求,服务器创建新的请求和响应对象,仍然激活此Servlet的服务方法,将这两个对象作为参数传递给它,无需再调用init()方法。一般Servlet只初始化一次。当服务器不在需要Servlet时(一般是服务器关闭),服务器调用Servlet的破坏()方法销毁Servlet。

  

从以上可以看的出,Servlet生命周期上得三个方法是由服务器调用,可以说是在Servlet

  

因此,在Servlet中最重要的就是服务()方法,要想从服务器端将资源传回客户端或者向客户端发送数据,都将在服务()方法中进行。

  

从服务(ServletTequest点播,ServletResponse res)方法来看,不仅服务()方法是由服务器调用执行,连ServletTequest请求对象和ServletResponse响应对象也是由服务器提供,如果我们要写一个简单的数据给客户端,就可以在服务()方法中操作ServletResponse响应对象:

  

作为入门,那么我们先不用开发工具IDE来写Servlet,而是先手工编写,这样有助于理解Servlet的底层原理。在Tomcat的【webapps】目录下建立我的网络应用,网络应用所在目录为【myservlet】,我们先在【myservlet】目录下创建【- inf】,并且再在【- inf】中创建】【类目录,【自由目录】和web . xml文件,在【类别】目录中,建立我的Java程序:FirstServlet.java

  

 servlet基础知识_动力节点Java学院整理”> <img src=

  

因为自己编写的Servlet是由服务器调用,因此我们所,开始说了,我们没必要实现Servlet的全部方法,因此我们向客户端传数据只需要复写服务()方法即可,那么我们只需要继承Servlet的实现类,接着取得相应对象ServletResponse的输出流就可以向客户端输出数据了,同时因为输出是字节流,所以需要将字符转换成字节数组,再手动写入自定义包名和要导入的Java包:

        包fjdingsd.web;      进口. io . *;   进口javax.servlet。*;      公开课FirstServlet延伸GenericServlet {   公共空间服务(ServletRequest点播,ServletResponse res)抛出ServletException, java.io.IOException   {   OutputStream=res.getOutputStream ();   出去了。写(“Hello Servlet”.getBytes ());   }   }      

servlet基础知识_动力节点Java学院整理