java中的Servlet 简介
关于Servlets
Servlets是JAVA 2.0中新增的一个全新功能。
JAVA Servlets 是运行在请求/面向请求服务器上的模块,比如一个Java-enabled web 服务器, 和类似这样的延伸场合. 例如, 一个servlet可以从一个HTML订单表中获取数据然后用一些商业上的算法来更新公司相应的订单数据库。
也就是说:servlet能够象CGI脚本一样扩展WEB服务器功能,但是servlet占用很少密集资源,有很多用CGI脚本编制的一些站点由于访问量剧增,性能迅速下降,这是CGI脚本一个缺点,有关CGI脚本概念请参照本斋"CGI入门学习" 。同时由于servlet是用java编写的,因此是跨平台的。
实际servlet是电子商务真正的开始。
Servlet API, 是用来写servlet的, 编写servlet是已没有CGI脚本那样诸如关心一个servlet是这样被装载, servlet运行的服务器环境是什么, 或者用来传输数据的协议是什么等等,这样servlets就可以融合在不同的web服务器中.
Servlet可以相当有效地替代CGI脚本: 它可以方便地产生容易编写而且运行快的动态文本. 可以很方便的调试寻找出程序问题. Servlet程序是用Java Servlet API开发的, a standard Java extension. 但不是Java核心框架的一部分,可以作为通用的附加产品包被商家购买使用.
举例
下面是一些servlet应用范围:
- 用于处理HTML表单通过HTTPS产生POSTed数据, 包括买卖订单或信用卡数据. 因此servlet可以成为订单处理系统的一部分, 和产品存货数据库一道工作,也许可以用在在线支付系统上.
- 允许人们之间的合作. 一个servlet能并发处理多个请求; 他们可以使用在诸如在线会议这样的同步请求支持系统.
- 转送请求. Servlet可以转送请求给其他的服务器和servlets. 这就允许在镜象同样内容的几个服务器之间平衡负载. 按照任务类型或组织范围,可以允许被用来在几个服务器中划分逻辑上的服务器.
- servlet 编写者们可以定义彼此之间共同工作的激活代理,每个代理者是一个servlet, 而且代理者能够在他们之间传送数据.
Servlet 结构总视
在具体掌握servlet之前,须对java语言有所了解。下面是基于您了解java基础上的,在Servlet API中最重要的是Servlet interface. 所有的servlets implement(执行)这个interface, 方式多种:或者是直接的,或者通过extending 这个class执行它,如 HttpServlet. 这个Servlet interface 提供安排servlet与客户端联系的方法. Servlet 编写者可以在他们开发servlet程序时提供更多一些或所有的这样方法.
当一个servlet接收来自客户端的调用请求, 它接收两个对象: 一个是ServletRequest,另外一个是ServletResponse. 这个ServletRequest class 概括从客户端到服务器之间的联系, 而 ServletResponse class 概括从servlet返回客户端的联系.
ServletRequest interface 可以获取到这样一些信息如由客户端传送的阐述名称,客户端正在使用的协议, 产生请求并且接收请求的服务器远端主机名. 它也提供获取数据流的servlet, ServletInputStream, 这些数据是客户端引用中使用HTTP POST 和 PUT 方法递交的. 一个ServletRequest的子类可以让servlet获取更多的协议特性数据. 例如: HttpServletRequest 包含获取HTTP-specific头部信息的方法.
ServletResponse interface 给出相应客户端的servlet方法. 它允许servlet设置内容长度和回应的mime类型, 并且提供输出流, ServletOutputStream, 通过编写者可以发回相应数据. ServletResponse子类可以给出更多protocol-specific容量的信息。 例如: HttpServletResponse 包含允许servlet操作HTTP-specific头部信息的方法.
上面有关classes 和 interfaces描述构成了一个基本的Servlet框架. HTTP servlets有一些附加的可以提供session-tracking capabilities的方法. servlet编写者可以用这些API在有他人操作时维护servlet与客户端之间的状态.
Servlet Lifecycle
服务器装载运行servlets:接收来自客户端的多个请求并且返回数据给客户端. 然后在删除移开servlets. 这就是servlets lifecycle过程. 下面详细描述:
当一个服务器装载servlet时, 它运行servlet的 init 方法. 这个方法不能反复调用,一旦调用就是再装载servlet. 直到服务器调用 destroy 方法卸载servlet后才能再调用.
在服务器装载初始化后servlet, servlet就能够处理客户端的请求. 用service 方法做到这一点. 每个客户端请求有它自己service方法: 这些方法接收客户端请求, 并且发回相应的响应.
Servlets能同时运行多个service. 这是很重要的, 这样, service方法可以按一个thread-safe 样式编写. 如:service方法更新servlet对象中的一个字段field, 这个字段可以同时存取的. 假如某个服务器不能同时并发运行service方法,也可以用SingleThreadModel interface. 这个 interface 保证不会有两个以上的线程threads并发运行.
Servlets一直运行到他们被服务器卸载。
在servlet的lifecycle中, 编写一个thread-safe编码以卸载servlet是很重要的。
编写Servlet
Servlets 执行 javax.servlet.Servlet interface. 当servlet编写者可以通过直接implement interface开发servlet, 但这样通常没有必要. 因为大多数servlet是针对用HTTP协议的web服务器, 这样最通用开发servlet办法是用 javax.servlet.http.HttpServlet 内.
HttpServlet 类通过extend GenericServlet基类执行 Servlet interface, 提供了处理HTTP协议的功能. 他的service方法支持标准HTTP/1.1请求.
一般地, 用HttpServlet指定的类编写的servlets可以多线程地并发运行service方法.
与客户端的交互性
Servlet编写者注意HttpServlet类有几个欠缺的方法,你可以自己定义方法中内容,但是必须使用这些方法名称以使servlet知道你想做什么,
- doGet, 用于处理 GET、有条件的GET 和头部 HEAD请求
- doPost, 用户处理 POST 请求
- doPut, 用于处理 PUT 请求
- doDelete, 用于处理 DELETE请求
HttpServlet的service方法, 一般地, 当它接收到一个OPTIONS请求时,会调用doOptions 方法, 当接收一个TRACE请求是调用doTrace . doOptions缺省执行方式是自动决定什么样的HTTP被选择并且返回哪个信息.
在你使用这些方法时,必须带两个阐述. 第一个包含来自客户端的数据HttpServletRequest. 第二个参数包含客户端的响应HttpServletResponse. 在下例中是这样的情况.
一个HttpServletRequest对象提供到达HTTP 头部数据, 也允许你获取客户端的数据. 怎样获取这些数据取决于HTTP端请求方法.
- 不管任何HTTP方式, 你可以用 getParameterValues 方法, 这个用来返回特定名称的参数值.
- 对于用 HTTP GET 请求的方式, 这个 getQueryString 方法将会返回一个可以用来解剖分析的.
- 对于用HTTP POST, PUT, 和 DELETE请求的方式, 你有两种方法可以选
- 12-10java中的Servlet 简介
- 12-10学认证,先认识JMS(Java Message Service)
- 12-10学java认证,先知道J2EE?
- 12-10SUN JAVA程序员和开发员的认证介绍
- 12-10JDBC之Java与Oracle的两种连接方式
- 12-10java认证中有JSP?
- 12-10java认证之JavaRMI入门实战
- 12-10给在校生-JAVA学习 一条漫长的道路
- 01-11全球最受赞誉公司揭晓:苹果连续九年第一
- 12-09罗伯特·莫里斯:让黑客真正变黑
- 12-09谁闯入了中国网络?揭秘美国绝密黑客小组TA
- 12-09警示:iOS6 惊现“闪退”BUG
- 04-19深度布局商业航天与低空经济,中科星图赋能
- 04-19短篇创作成风口 专家:短篇创作正改变网络文
- 04-19知乎周源:专家网络会成为更强的“人和AI的
- 04-19手机端微信支持个人公众号一键注册和发布内
- 04-08岚图汽车:一季度海外订单同比增长205%