




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第14章 Servlet编程,1.理解Servlet的概念以及Servlet的处理流程。 2.初步掌握用java书写动态网页的技能。 3.对java在构建Web网站方面的应用有初步的了解。,教学目的要求,14.1 Servlet简介,Servlet是标准的服务器端程序,用以增强Web服务器的功能。Servlet运行在服务器上,当Web服务器收到一个用户的Servlet请求时,执行Servlet,动态地创建HTML响应给用户。,14.1.1 Servlet概述,Servlet是标准的服务器端程序,用以增强Web服务器的功能。用Servlet可以创建协议、平台无关的Web应用程序可以生成动态的Web页面,它是公共网关接口(Common Gateway Interface ,CGI)程序设计的Java技术解决方案。 Servlet提供了比使用CGI开发服务器端功能更好的方法,因为Java Servlet 在Web服务器和Servlet之间定义了一个标准的接口,这使Servlet运行是平台独立的,具有很高的可移植性,可以和异构的服务器交互。大多数主流服务器通过插件支持Servlet。,14.1.2 Servlet开发环境搭建,学习Servlet开发,必须搭建一个符合规范的开发环境,有许多的Web服务器或应用服务器可以运行提供我们需要的软件:如Apache Tomcat、Allaire Jrun、New Atlanta ServletExec、Gefion Software LiteWebServer等。,1、Apache Tomcat建Servlet开发环境,Tomcat是一个免费的开放源代码的Servlet容器可以到 下载Tomcat 5.x。 安装后还应设置CLASSPATH以使得编译程序javac能利用Servlet API,为此,应将install_dircommonlibServlet-api.jar放入置在CLASSPATH中。 启动后在浏览器地址栏里输入http:/localhost:8080/出现服务器测试成功页面。,2、创建开发目录,创建一个自己的开发目录 比如:install_dirwebappsROOTmyapp,于其中放置所有的Servlet和JSP页面,14.1.3 Servlet的工作原理与生命周期,每个Servlet都有一个生命周期,从它被装入到Web应用服务器的内存开始,到终止或重新装入时结束。 每个生命周期定义了Servlet如何被加载和被初始化,它怎样接收请求、响应请求,怎样提供服务。 javax.Servlet.Servlet接口中定义了生命周期方法,如init()、service()、destroy()等,在Servlet的生命周期中,这些方法会在待定时间按照一定的顺序被调用。,1 、init()方法,客户端通过HTTP协议发送,当Web服务器接收请求并将其发送给Servlet,如果需要处理请求的Servlet未加载,服务器把它加载到JVM并执行它。服务器首先调用init()方法进行初始化工作。 该方法只被调用一次。,2 、service()方法,在init()方法之后,服务器调用service()方法准备处理用户的访问。 通常是Servlet接收HTTP请求并执行相应的处理,并向Web服务器返回应答,Web服务器再把从Servlet收到的应答发送给客户端。来自HTTP的访问有GET、PUT、POST、DELETE等类型,这些都可以在service()方法中处理,也可以重置doPost、doGet等方法来处理特定的请求方式。,3 、destroy()方法,服务器在结束Servlet运行时调用destroy()方法,通常在这个方法中执行诸如清除资源的操作。 例如停止后台的文件处理、线程和释放数据库连接等操作。,例14.2 测试Servlet的生命周期方法,package mjwa; import java.util.*; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Lifecircle extends HttpServlet public void init (ServletConfig config) throws ServletException System.out.println(“init(): “+new Date(); public void destroy() System.out.println(“destroy(): “+new Date(); public void service(HttpServletRequest req, HttpServletResponse resp) throws IOException ,ServletException PrintWriter out=resp.getWriter(); resp.setContentType(“text/html“); out.print(“to see: install_dir/logs/stdout.log “); System.out.println(“service(): “+new Date(); ,使用命令javac -d . Lifecircle.java进行编译。将编译之后在当前目录下产生的子目录mjwa整体拷贝到myapp/WEB-INF/classes目录下,并在配置文件web.xml中添加如下的servlet和servlet-mapping。 Lifecircle mjwa. Lifecircle Lifecircle /servlet/Lifecircle ,重新启动Tomcat,在浏览器地址栏中输入http:/localhost:8080/servlet/Lifecircle 即可运行。该程序运行时由System.out.print产生的输出在install_dir/logs/stdout.log文件中。 可以看出,浏览器每刷新一次,service方法就执行一遍,而init()方法只开始的时候执行一次,destroy( )始终得不到执行。,14.2 Servlet编程示例,例14.3获取参数:根据用户的request,得到有关的信息。 /获取参数 package mjwa; import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class InfoServlet extends HttpServlet public void service(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException,response.setContentType(“text/html“); PrintWriter out = response.getWriter(); out.println(“); out.println(“Request InformationExample“); out.println(“Method: “ + request.getMethod() out.println(“Request URI: “ + request.getRequestURI(); out.println(“Protocol: “ + request.getProtocol(); out.println(“PathInfo: “ +request.getPathInfo();,out.println(“Remote Address: “ + request.getRemoteAddr()+“); Enumeration e = request.getHeaderNames(); while (e.hasMoreElements() String name = (String)e.nextElement(); String value = request.getHeader(name); out.println(“+name + “ = “ + value); out.println(“); ,编译InfoServlet.java源程序文件,生成字节代码文件InfoServlet.class,将该文件拷贝到myapp/WEB-INF/classes/mjwa目录下,并在配置文件web.xml中添加如下的servlet和servlet-mapping。 InfoServlet mjwa. InfoServlet InfoServlet /servlet/ InfoServlet ,重新启动Tomcat,在浏览器地址栏中输入http:/localhost:8080/servlet/ InfoServlet 运行。本程序运行结果如图所示。,例14.4表单处理应用举例:利用Servlet读取表单输入内容,对客户的GET和POST请求分别用doGet方法和doPost方法进行处理。 源程序如下: /表单处理应用 package mjwa; import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*;,public class FormServlet extends HttpServlet public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException resp.setContentType(“text/html“); PrintWriter out = resp.getWriter(); out.println(“GET Request. No Form Data Posted“); ,public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException Enumeration e = req.getParameterNames(); PrintWriter out = resp.getWriter (); while (e.hasMoreElements() String name = (String)e.nextElement(); String value = req.getParameter(name); out.println(name + “ : “ + value); ,对应的FormServlet .html文件如下: Name: Address: , Name: Address: ,对源文件FormServlet.java进行编译,生成字节代码文件FormServlet.class,将该文件拷贝到myapp/WEB-INF/classes/mjwa目录下,并在配置文件web.xml中添加如下的servlet和servlet-mapping。, FormServlet mjwa. FormServlet FormServlet /servlet/FormServlet ,文件FormServlet.html保存在文件夹install_dirwebappsROOTmyapp中。重新启动Tomcat。在浏览器地址栏中输入http:/localhost:8080/FormServlet.html 运行。本程序运行结果如图14.4(a)(c)所示。,(a),(b),(c) 图14.4例14.4的执行结果,例14.5会话管理应用举例。 源程序如下: package mjwa;/例14.5,会话管理 import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class SessionServlet extends HttpServlet public void service(HttpServletRequest request, HttpServletResponse response),throws IOException, ServletException response.setContentType(“text/html“); PrintWriter out = response.getWriter(); HttpSession session = request.getSession(true); Date created = new Date(session.getCreationTime(); Date accessed = new Date(session.getLastAccessedTime(); out.println(“ID “ + session.getId(); out.println(“Created: “ + created); out.println(“Last Accessed: “ + accessed+“);,String id = request.getParameter(“id“); String email = request.getParameter(“email“); session.setAttribute(“id“, id); session.setAttribute(“email“, email); Enumerati
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 重庆第一中学2026届高三上化学期中复习检测模拟试题含解析
- 2025年工艺礼品加工设备项目发展计划
- 2025年灯柱灯杆项目建议书
- 2025年参数测试仪器项目发展计划
- 2025年聚三嗪合作协议书
- 2025年驱鼠器项目建议书
- 2024年12月二级建造师考试《公路工程管理与实务》真题及答案
- 2026届湖北省华中师范大学东湖开发区第一附属中学化学高二上期中统考模拟试题含解析
- 供暖管线相关知识培训课件
- 2026届山西省朔州市平鲁区李林中学化学高一第一学期期中质量检测模拟试题含解析
- 《地质灾害概述》课件
- 移民培训合同协议
- 2025年上交所期权交易资质测试题库
- 医院科室奖励性绩效分配方案
- 2025标准劳动合同范本专业版(合同样本)
- 浙江粉煤灰钢板仓施工方案
- 产前检查与孕期保健
- 个人退款申请书范文
- 2025年云南能投新能源产业园区投资开发有限公司招聘笔试参考题库附带答案详解
- 第十章《浮力》达标测试卷(含答案)2024-2025学年度人教版物理八年级下册
- 《基础医学概论》课程标准
评论
0/150
提交评论