版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第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应用程序可以生成动态的We
2、b页面,它是公共网关接口(Common Gateway Interface ,CGI)程序设计的Java技术解决方案。 Servlet提供了比使用CGI开发服务器端功能更好的方法,因为Java Servlet 在Web服务器和Servlet之间定义了一个标准的接口,这使Servlet运行是平台独立的,具有很高的可移植性,可以和异构的服务器交互。大多数主流服务器通过插件支持Servlet。,14.1.2 Servlet开发环境搭建,学习Servlet开发,必须搭建一个符合规范的开发环境,有许多的Web服务器或应用服务器可以运行提供我们需要的软件:如Apache Tomcat、Allaire Jr
3、un、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/出现服务器测试成功页面
4、。,2、创建开发目录,创建一个自己的开发目录 比如:install_dirwebappsROOTmyapp,于其中放置所有的Servlet和JSP页面,14.1.3 Servlet的工作原理与生命周期,每个Servlet都有一个生命周期,从它被装入到Web应用服务器的内存开始,到终止或重新装入时结束。 每个生命周期定义了Servlet如何被加载和被初始化,它怎样接收请求、响应请求,怎样提供服务。 javax.Servlet.Servlet接口中定义了生命周期方法,如init()、service()、destroy()等,在Servlet的生命周期中,这些方法会在待定时间按照一定的顺序被调用。,
5、1 、init()方法,客户端通过HTTP协议发送,当Web服务器接收请求并将其发送给Servlet,如果需要处理请求的Servlet未加载,服务器把它加载到JVM并执行它。服务器首先调用init()方法进行初始化工作。 该方法只被调用一次。,2 、service()方法,在init()方法之后,服务器调用service()方法准备处理用户的访问。 通常是Servlet接收HTTP请求并执行相应的处理,并向Web服务器返回应答,Web服务器再把从Servlet收到的应答发送给客户端。来自HTTP的访问有GET、PUT、POST、DELETE等类型,这些都可以在service()方法中处理,也可
6、以重置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 publi
7、c 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.getWrite
8、r(); 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 /
9、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.*
10、; 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.ge
11、tWriter(); 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.getRemot
12、eAddr()+); 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目录下,并在配置文件
13、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.*;
14、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.print
15、ln(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 valu
16、e = 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 /servl
17、et/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 ja
18、vax.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(
19、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); Enumeration
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四年级数学(四则混合运算带括号)计算题专项练习与答案
- 绿植租摆协议书(2篇)
- 南京工业大学浦江学院《移动通信技术产品及物联网应用》2022-2023学年第一学期期末试卷
- 南京工业大学浦江学院《社会企业》2022-2023学年第一学期期末试卷
- 分数的产生说课稿
- 蹲踞式跳远说课稿
- 南京工业大学浦江学院《计算机网络课程设计》2023-2024学年期末试卷
- 《线段的垂直平分线》说课稿
- 幼儿课件图画教学课件
- 南京工业大学《虚拟仪器设计》2023-2024学年第一学期期末试卷
- 砌筑工-技能评分记录表3
- 司索工安全操作规程
- 人教版数学五年级上册课本习题(题目)
- 钢筋合格证(共6页)
- BIM技术全过程工程管理及应用策划方案
- 弯扭构件制作工艺方案(共22页)
- 水利工程填塘固基、堤身加固施工方法
- 中医针灸的骨边穴怎样定位
- 人教版八年级上册英语单词表默写版(直接打印)
- 电脱水、电脱盐讲解
- 违约损失率(LGD)研究
评论
0/150
提交评论