什么是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!"); out. println(""); } } HttpServletRequest ·提供客户请求 ·"Getters"请求的特征,比如: ·请求头部,内容类型,长度,方法.... ·请求URL如同一个String ·Servlet"path" ·客户安全性类型 ·访问请求参数(通过name) ·请求中,数据在参与对象中的共享范围 请求协议 ·getParmeterNames() ·在HTML页上,返回一个的枚举的参数 ·getParmeterValues(String name) ·返回multi-valued参数的值 ·getParameter(String name) ·返回一个指定的命名的参数的值 ·getReader() ·返回BufferedReader到输入视图 案例: Please fill out this form with your name. Thanks! ACTION="/ servlet/ NameServlet"> Please enter your name: First name: SIZE=" 12" MAXLENGTH=" 20"> Surname: SIZE=" 15" MAXLENGTH=" 25"> Thank you! TYPE=" RESET"> 读入一个post public void doPost( HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { … Enumeration enum = req. getParameterNames(); while (enum. hasMoreElements()) { String name = (String) enum. nextElement(); String value = req. getParameter( name); //… do something with each pair... } } 调用servelet 最普遍使用的调用HttpServlet是通过类名(classname)比如: http://www.ibm.com/servlets/com.ibm.a.Myservlet ·"load/run by classname"的支持通过另一个称为"Invoker"的servlet所提供 ·"Invoker"servlet试图找到servlet的类的路径 ·考虑到会有无名的servlet,一个servlet用这种方法装入运行 在WebSphere中的servlet ·另一方面,大多数的servlet引擎支持servlet通过名字注册 ·被使用的参数可以初始化 ·参数约束servlet的行为 ·一个servlet可以提供不同的服务(在不同的"short names") ·参数在init()方法中使用 ·允许servlet被预装入 ·通过RequestDispatcher,允许简单定位 ·允许servlet被保护 摘要 ·我们已经看到Servlets的优势大于CGI ·安全性,灵活性,效率 ·我们已经介绍了Servlet的基本类和接口 ·Servlets,GenericServlet,HttpServlet,HttpServletRequest,HttpServletResponse VisulalAge for Java 的复习 ·首先,需要知道: ·IBM VisualAge for Java 基本概念 ·IDE ·Scrapbook ·Debugger ·VisualAge for Java与WebSphere之间的关系 ·VisualAge for Java: ·Visual Builders ·Visual Application Builder ·Enterprise Access Builder ·Data,CICS,RMI,C++ · Many others 工具: ·IDE ·AppletViewer ·Smart Guides ·Debugger ·Browsers ·Scrapbook 类库 ·JDK1.1.7 ·JDK1.2 ·IBM Enterprise Connectivity 编译器和虚拟机 ·Incremental ·Java to byte code ·Byte code to machine code translation ·Multiple VMs 部件: · JavaBeans ·EJB develpement environment ·WebSphere Test environment 技术支持 ·Integrated team environment ·Scaleable 集成开发环境 ·组织管理项目,类,方法 ·组队开发--聚宝库 ·导入及导出类文件到开发环境同Java文件一样 ·优化编译 ·视图:项目,类,界面,所有的问题 ·搜索,智慧向导 ·剪贴本,Debugger |
|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )
GMT+8, 2024-9-30 09:33 , Processed in 0.222466 second(s), 12 queries , Gzip On, MemCache On.
Powered by Discuz! X3.5
© 2001-2023 Discuz! Team.