什么是Servlet

servlet

Servlet是用Java编写的Server端程序,它与协议和平台无关。Servlet运行于Java-enabled Web Server中。Java Servlet可以动态地扩展Server的能力,并采用请求-响应模式提供Web服务。

  最早支持Servlet技术的是JavaSoft的Java Web Server。此后,一些其它的基于Java的Web Server开始支持标准的Servlet API。Servlet的主要功能在于交互式地浏览和修改数据,生成动态Web内容。这个过程为:

  客户端发送请求至服务器端;

  服务器将请求信息发送至Servlet

  Servlet生成响应内容并将其传给Server。响应内容动态生成,通常取决于客户端的请求

  服务器将响应返回给客户端

  Servlet看起来像是通常的Java程序。Servlet导入特定的属于Java Servlet API的包。因为是对象字节码,可动态地从网络加载,可以说Servlet对Server就如同Applet对Client一样,但是,由于Servlet运行于Server中,它们并不需要一个图形用户界面。从这个角度讲,Servlet也被称为Faceless Object。

  JAVA Servlet的优势:

  Servlet可以和其他资源(文件、数据库、Applet、Java应用程序等)交互,以生成返回给客户端的响应内容。如果需要,还可以保存请求-响应过程中的信息。

  采用Servlet,服务器可以完全授权对本地资源的访问(如数据库),并且Servlet自身将会控制外部用户的访问数量及访问性质

  Servlet可以是其它服务的客户端程序,例如,它们可以用于分布式的应用系统中,可以从本地硬盘,或者通过网络从远端硬盘激活Servlet。

  Servlet可被链接(chain)。一个Servlet可以调用另一个或一系列Servlet,即成为它的客户端。

  采用Servlet Tag技术,可以在HTML页面中动态调用Servlet。

  Servlet API与协议无关。它并不对传递它的协议有任何假设。

  像所有的Java程序一样,Servlet拥有面向对象Java语言的所有优势

  Servlet提供了Java应用程序的所有优势——可移植、稳健、易开发。使用Servlet 的Tag技术,Servlet能够生成嵌于静态HTML页面中的动态内容。

  一个Servlet被客户端发送的第一个请求激活,然后它将继续运行于后台,等待以后的请求。每个请求将生成一个新的线程,而不是一个完整的进程。多个客户能够在同一个进程中同时得到服务。一般来说,Servlet进程只是在Web Server卸载时被卸载。

  Servlet生命周期:

  装载Servlet。这项操作一般是动态执行的。然而,Server通常会提供一个管理的选项,用于在Server启动时强制装载和初始化特定的Servlet。

  Server创建一个Servlet的实例

  Server调用Servlet的init()方法

  一个客户端的请求到达Server

  Server创建一个请求对象

  Server创建一个响应对象

  Server激活Servlet的service()方法,传递请求和响应对象作为参数

  service()方法获得关于请求对象的信息,处理请求,访问其他资源,获得需要的信息

  service()方法使用响应对象的方法,将响应传回Server,最终到达客户端。service()方法可能激活其它方法以处理请求,如doGet()或doPost()或程序员自己开发的新的方法

  对于更多的客户端请求,Server创建新的请求和响应对象,仍然激活此Servlet的service()方法,将这两个对象作为参数传递给它。如此重复以上的循环,但无需再次调用init()方法。一般Servlet只初始化一次 ,当Server不再需要Servlet时(一般当Server关闭时),Server调用Servlet的Destroy()方法。

  在美国,EJB+Servlet+JSP几乎成为电子商务的开发标准。本来 ASP 也很有希望,但微软最近可能把精力都集中在打官司和Win2000上, 因此电子商务发展得太少。PHP由于其模式和一些天生缺陷,毫无希望。 在美国,很少有商业站点用PHP的。

时间: 2024-10-27 15:55:22

什么是Servlet的相关文章

草草搞了个SERVLET的注册登陆功能

按书来的,学习阶段,一切都好新奇..至少对比于DJANGO,好像复杂点点,但HTTP的东东,是相通的哈. package cc.openhome.controller; import java.io.*; import java.util.*; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.ser

java js-java servlet这是单个下载,怎么打包批量下载

问题描述 java servlet这是单个下载,怎么打包批量下载 package cn.szusst.aqms.action.common; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import javax.servlet.ServletE

JBuilder2005 Servlet开发之过滤器

过滤器可以在请求到达JSP或Servlet之前或响应返回客户端之前添加一些额外的操作.如果有多个JSP页面和Servlet都需要进行一个相同或相似的操作,我们可以把这个操作抽取到一个Servlet过滤器中,并通过匹配路径截获感兴趣JSP或Servlet. 我们举几个典型的过滤器应用的例子,读者可以推而广之: ·编码转换 乱码问题困扰了不少的Web应用程序开发者,这是因为基于Java的Web应用程序可能运行于不同的Web应用程序器.操作系统平台或硬件服务器上,不同的环境有自己默认的编码类型,在数据

Servlet下载文件文件名问题

问题描述 Servlet下载文件文件名问题 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { FileDBO fileDBO = new FileDBO(); String fileID = request.getParameter("fileId"); FileInfor file = fileDBO

java-Jsp+Servlet怎么在form中指定要访问的servlet中的方法名

问题描述 Jsp+Servlet怎么在form中指定要访问的servlet中的方法名 Jsp+Servlet怎么在form中指定要访问的servlet中的方法名,在Jsp中写了一个form,然后想指定访问servlet中的regist()方法,而不是doGet()或者doPost()方法,应该怎么样指定 解决方案 servlet只能指定post,get请求,你随便请求一个,在调一下regist()呗,或者重写父类service方法,在里面加入regist() 解决方案二: dopost里面判断调

文件表单servlet接收乱码

问题描述 文件表单servlet接收乱码 我写的一个文件表单,在servlet中接收input=text这种数据部分是乱码(其中一个我用了(ite=new String(ite.getBytes(""gbk"")utf-8"");))接收到的一个不是乱码,但是下一个数据再用这种方法就变成了乱码,用iso-8859-1转utf-8和gb2312页不可以. 前端的表单 用了 enctype=""multipart/form-dat

J2EE中Servlet操作cookie

一.基本概念cookie是web服务器通过浏览器保存在www用户端硬盘上的一个文本文件,这个文件中包含了文本信息文本信息的内容是以"名/值"对的形式进行储存.可以让web开发者通过程序读写这个文本文件在Windows XP中保存Cookie的目录是:C:\Documents and Settings\用户名\Cookies. Cookie的作用是解决浏览器用户与web服务器之间无状态通信. 二.注意点 cookie的大小和数量是有限制的. cookie在个人硬盘上所保存的文本信息是以明

新手学Struts(一)----JSP+Servlet讲解MVC实现原理

MVC基本原理 一个简单的例子 改良的例子 Struts基本流程的实现     最近在学SSH(Struts+ Hibernate+Spring),这也算是一个比较经典的框架了,之前都是看人家大牛说这个框架,那个框架,说的真溜,自己也是佩服的五体投地啊~~     现在开始自己也要捣鼓捣鼓这些东西,还是有点小激动哒~~,Struts是基于MVC框架实现的,今天主要讲讲Struts的实现过程. MVC基本原理     MVC框架,相信大家也都已经耳熟蓝(能)翔(详)了! 1.终端接受到用户的请求,

pom xml-maven项目中servlet.xml中出现 "oscache:config" is not bound.错误

问题描述 maven项目中servlet.xml中出现 "oscache:config" is not bound.错误 在pom.xml中加了依赖oscache的jar包.代码如下:com.opensymphonyoscache2.4.1 在servlet.xml中出现The prefix ""oscache"" for element ""oscache:config"" is not bound.错误

JSP 中的servlet在本地能运行,在服务器端不能运行

问题描述 JSP 中的servlet在本地能运行,在服务器端不能运行 做一个用户名密码的登陆表单,使用servlet对输入的用户名密码与数据库里用户名密码进行比较,如果正确,就转至登陆页面,不正确就提示错误.在本地运行一切正常,但是放在服务器上,输入完用户名密码.点击确定后,就一直是网页正在连接的状态,死活不能运行出来.求大神看看到底是哪里有问题.(对不起实在没有C币了--) 解决方案 惊喜!Java为服务器端Web应用带来最高运行速度 解决方案二: 自己看一下日志文件,有没有报错信息. 据你描