什么是servlets
- 明白Servlet API以及与CGI相比较
- 知道在servlet的主要的类的使用。
- 能够实现简单的servlets
什么是servlet?
一般地,服务器端Java应用程序扩展了Web服务器的功能。
- 在服务器上可以完整地运行
- 没有必要下载到浏览器
- 代替CGI脚本
Servlets的优势在于:
安全性优势
- 在服务器的范围中调用
- 能够约束servlet的调用
- 在安全体系中能够成为单一(全局)信号的一部分
性能优势
- Run in the same context as application server
- 执行并且驻留在内存中
- 有请求时提前被装入或装入
- 通过HTTP请求维持对话
- 减轻后置系统的负担
- 多线程
- 可伸缩于多处理器以及多机种系统(IBM WebSphere Performance Pack)
一般的Servlet调用
- 客户建立一个Web服务请求,命名为一个Servlet,就如同URL的一部分
- Web服务器向由一个servlet类的对象所定位的Servlet引擎发送一个请求
- servlet引擎调用一个Servlet's服务方法:
浏览器(客户)<====URL请求=====>Web服务器<===>servlet对象(应用程序服务器)
Java Servlet 应用程序接口API
·JSDK包括了两个包:
javax.servlet
javax.servlet.http
javax.servlet.Servlet
| 实现
javax.servlet.GenericServlet A
|
javax.servlet.http.HttpServlet A
|
Servlet
- 表现一项服务
- 一般通过URL请求
- Servlets通过应用程序服务器被装入
- 在服务的初始化阶段(如果是预装入)
- 在客户端首次请求时
- 在servlet重新装入时
servlet的生命周期
- 在装入时init()方法被调用
- 仅这一次
- 当每个客户发出请求时,service()方法被调用
- 当它被卸载时,destroy()方法被调用
init()
|
service()
|
destroy()
|
HTTP Servlet
- 一个HTTP-specific请求处理器
- 加入两个HTTP-specific的方法
- doGet()--处理一个GET请求(URL)
- doPost()--处理一个POST请求(HTML)
- 子类代替了这两个信息并且可能代替init()和destroy()
- doGet()和doPost()作这些工作并且被service()调用
请求与响应
- service(),doGet()和doPost()方法都具体有两个参数:
- HttpServletRequest--提供请求数据(参数)HttpSession信息等访问。
- HttpServletResponse--提供允许servelt向发出请求的客户的响应的服务
- 大多数servlet程序是用来读出请求并且写入响应
HttpServletResponse
- 向客户提供通讯的通道
- 允许servlet返回内容并且/或者是错误
- 设置内容头(类型,长度......)
- 重定向服务器以返回一个指的URL
应答协议
- getWriter()
- 返回一个输出的PrintWriter
- setContentType(String type)
- 为这个响应设置内容的类型
- 类型是MIME型
- sendRedirect(String anURL)
- 重定向浏览器到一个新的URL
简单的servelt
public class MyServlet extends HttpServlet {
public void doGet( HttpServletRequest req,
HttpServletResponse res)
throws ServletException, IOException {
// get stream to output HTML on!
res. setContentType(" text/ html");
PrintWriter out = res. getWriter();
// send out a simple banner
out. println("< HTML>< BODY>");
out. println("< h1> Hello World!</ h1>");
out. println("</ BODY></ HTML>");
}
}
|
HttpServletRequest
- 提供客户请求
- "Getters"请求的特征,比如:
- 请求头部,内容类型,长度,方法....
- 请求URL如同一个String
- Servlet"path"
- 客户安全性类型
- 访问请求参数(通过name)
- 请求中,数据在参与对象中的共享范围
请求协议
- getParmeterNames()
- 在HTML页上,返回一个的枚举的参数
- getParmeterValues(String name)
- 返回multi-valued参数的值
- getParameter(String name)
- 返回一个指定的命名的参数的值
- getReader()
- 返回BufferedReader到输入视图
(未完)
如果您对本文有任何疑问或者建议,请到讨论区发表您的意见:
>>
论坛入口 <<
上一篇:使用JSP读取客户端信息
下一篇:Servlet(二)
【文章评论】
【收藏本文】
【推荐好友】
【打印本文】
【我要投稿】 【论坛讨论】