已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章,配合例子源代码一起使用,Powerpoint制作:杨俊成,普通高等教育“十一五”国家级规划教材,JavaServlet基础,主要内容Servlet类与servlet对象编写web.xmlservlet对象的创建与运行servlet对象的工作原理doGet和doPost方法重定向与转发使用session难点servlet对象的工作原理重定向与转发关键实践使用servlet读文件,第8章导读,第8章JavaServlet基础,JavaServlet技术的核心就是在服务器端创建能响应用户请求的对象,被创建的对象习惯上称做一个servlet对象。在JSP技术出现之前,Web应用开发人员就是自己编写创建servlet对象的类,并负责编译生成成字节码文件、复制这个字节码文件到服务器的特定目录中,以便服务器使用这个字节码创建一个servlet对象来响应用户的请求.,8.1Servlet类与servlet对象,1编写Servlet类编写创建servlet对象的类就是编写HttpServlet类的子类,即一个Servlet类。注:HttpServlet类在javax.servlet.http包中Servlet类必须有包名。参考p244Hello.java编译成功后得到字节码文件Hello.class。2字节码文件的保存在当前Web服务目录下建立如下目录结构:Web服务目录WEB-INFclasses根据类的包名(比如:packagechina.dalian;),在目录classes下建立相应的子目录.Web服务目录WEB-INFclasseschinadalian把Servlet类的字节码,比如Hello.class的字节码文件复制到复制到上述目录中。注:要重新启动Tomcat服务器。,8.2编写web.xml,Servlet类的字节码保存到指定的目录后,我们必须为Tomcat服务器编写一个部署文件,只有这样,Tomcat服务器才会按用户的请求使用Servlet字节码文件创建对象。该部署文件是一个XML文件,名字是web.xml,该文件由Tomcat服务器负责管理。编写的web.xml文件保存到Web服务目录的WEB-INF子目录中Web服务目录WEB-INF参考p245web.xmlweb.xml文件中标记的具体内容及其作用1.根标记2.标记及子标记3.标记及子标记注:修改web.xml文件不必重新启动Tomcat服务器。,8.3servlet对象的创建与运行,用户可以根据web.xml部署文件来请求服务器创建并运行一个servlet对象。如果服务器没有名字为hello的servlet对象,服务器就会根据web.xml文件中标记的子标记指定的Servlet类创建一个名字为hello的servet对象。当用户请求服务器运行一个servlet对象时,必须根据web.xml文件中标记的子标记指定的格式输入请求。例如::8080/ch8/lookHello参考p244Hello.java,p245web.xml,8.4servlet对象的工作原理,8.4.1servlet对象的生命周期,servlet对象由Tomcat服务器负责管理,Tomcat服务器通过读取web.xml创建并运行servlet对象。,(1)初始化Servlet对象。Servlet对象第一次被请求加载时,服务器初始化这个Servlet对象,即创建一个Servlet对象,对象调用init()方法完成必要的初始化工作。(2)诞生的Servlet对象再调用service()方法响应客户的请求。(3)当服务器关闭时,调用destroy()方法,消灭Servlet对象。,8.4.2init方法,该方法是HttpServlet类中的方法,我们可以在子类中重写这个方法。init方法的声明格式:publicvoidinit(ServletConfigconfig)throwsServletExceptionservlet对象第一次被请求加载时,服务器创建一个servlet对象,这个对象调用init方法完成必要的初始化工作。init方法只被调用一次,即在servlet第一次被请求加载时调用该方法。,8.4.3service方法,该方法是HttpServlet类中的方法,我们可以在子类中直接继承该方法或重写这个方法。service方法的声明格式:publicvoidservice(HttpServletRequestrequestHttpServletResponseresponse)throwServletException,IOException当servlet对象成功创建和初始化之后,该对象就调用service方法来处理用户的请求并返回响应。service方法可能被多次调用。,8.4.4destroy方法,该方法是HttpServlet类中的方法,子类可直接继承这个方法,一般不需要重写。destroy方法的声明格式:publicdestroy()当服务器终止服务时,destroy()方法会被执行,消灭servlet对象。,8.5编写、配置和调用Servlet,8.5.1Servlet常用类与接口常用类与接口的层次关系,8.5编写、配置和调用Servlet,常用类与接口方法编写Servlet使用的类与接口,8.5编写、配置和调用Servlet,Servlet接口常用方法,8.5编写、配置和调用Servlet,HttpServlet类常用方法,8.5编写、配置和调用Servlet,HttpServletResponse接口常用方法,8.5编写、配置和调用Servlet,Servlet程序结构引入相关包通过继承HttpServlet类得到Servlet覆盖doGet或doPost方法完成Servlet功能。,8.5编写、配置和调用Servlet,Servlet的配置和调用课堂演示:配置和调用Servlet程序。Web.xml文件中保存了用户编写的Servlet的配置。FirstFirstTheFirstServletmyservlet.FirstServletFirst/First,演示结果,图8-2FirstServlet运行结果,8.5编写、配置和调用Servlet,Servlet的生命周期Servlet的生命周期,8.5编写、配置和调用Servlet,利用Servlet制作计数器课堂演示:利用Servlet制作网站计数器,CounterServlet.java实现计数器的功能。packagemyservlet;importjavax.servlet.*;importjavax.servlet.http.*;importjava.io.*;importjava.util.*;publicclassCounterServletextendsHttpServletstaticintcount;publicvoidinit(ServletConfigconfig)throwsServletExceptionsuper.init(config);,publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOExceptionresponse.setContentType(text/html);PrintWriterout=response.getWriter();count+;out.println();out.println(ServletCounter);out.println();out.println(YouarethevisitorofNo:+String.valueOf(count)+);out.println();,利用Servlet制作计数器演示结果.,8.6通过JSP页面访问servlet,8.6.1通过表单向servlet提交数据,可以通过JSP页面来请求一个servlet。也就是说,可以让JSP页面负责数据的显示,而让一个servlet去做和处理数据有关的事情。,Web服务目录下的JSP页面都可以通过表单或超链接请求该Web服务目录下的某个servlet。例8-1P249注意:如果web.xml文件中标记的子标记指定的请求servlet的格式是“/lookHello”,那么JSP页面请求servlet时,必须要写成“lookHello”,不可以写成“/lookHello”,否则将变成请求root服务目录下的某个servlet。,8.6.2通过超链接访问servlet,可以在JSP页面中单击一个超链接,请求一个servlet对象。例8-2P251注意:如果web.xml文件中标记的子标记指定的请求servlet的格式是“/lookHello”,那么JSP页面请求servlet时,必须要写成“lookHello”,不可以写成“/lookHello”,否则将变成请求root服务目录下的某个servlet。,8.7共享变量,Servlet类是HttpServlet的一个子类,那么在编写子类时就可以声明某些成员变量。当用户请求加载Servlet时,服务器分别为每个用户启动一个线程,在该线程中,Servlet调用service()方法响应客户请求,那么Servlet类的成员变量是被所有线程共享的数据。例8-3P252,8.8doGet和doPost方法,可以在Servlet类中重写doPost()或doGet()方法来响应用户的请求,如果不论用户请求类型是POST还是GET,服务器的处理过程完全相同,那么我们可以只在doPost()方法中编写处理过程,而在doGet()方法中再调用doPost()方法即可,或只在doGet()方法中编写处理过程,而在doPost()方法中再调用doGet()方法。如果根据请求的类型进行不同的处理,就需在两个方法中编写不同的处理过程。例8-4P254,8.9重定向与转发,1.sendRedirect()方法使用该可以将用户重新定向到一个JSP页面或另一个Servlet。2.RequestDispatcher对象使用该对象调用voidforward(ServletRequestrequest,ServletResponseresponse)方法可以将用户对当前JSP页面或Servlet的请求转发给RequestDispatcher对象所指定的JSP页面或Servlet。实现转发的步骤:(1)得到RequestDispatcher对象例如:RequestDispatcherdispatcher=request.getRequestDispatcher(a.jsp);(2)转发例如:dispatcher.forwar
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年浙江省建筑领域现场专业人员网络继续教育考试题及答案
- 2026年废弃塑料回收协议
- 劳动合同违约金条款适用界限
- 2025年电子商务运营师职业资格考试电商平台管理备考题库附答案
- 科室网瘫应急预案演练脚本
- 银行业金融反假货币知识测试题及答案
- 2025药品质量管理制度培训题库及答案
- 学生学习动机的心理统计测度
- 企业知识管理系统的创新与优化
- 编程语言的多范式特性
- 07第七讲 发展全过程人民民主
- 自主移动机器人教学课件第4章 导航规划 2 避障规划和轨迹规划
- 耕地合法永久转让协议书
- 工贸企业安全生产台账资料
- 机电安装工程预留预埋施工方案改用于上传
- JJG 1189.4-2022测量用互感器第4部分:电力电压互感器
- 第六章 社会分层与社会流动
- 门诊病历管理规定
- 物业管理服务拟投入设备一览
- 六年级上册音乐课件-《今天是你的生日》人音版
- 总承包人用于本工程施工的机械设备表
评论
0/150
提交评论