Java第九章Servlet技术

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Java程序设计Servlet技术1.Servlet与JSP技术概述动态构建Web页面servlet的功能和用途Servlet代码初探JSP的功能和用途Servlet&JSP的优势Web服务器的安装Tomcat的目录结构Web应用的目录结构部署Web应用web.xml部署文件描述符简介参考资料CoreServletsandJavaServerPagesVolume1,MartyHall著,赵学良译,清华大学出版社:动态构建Web页面Web页面的内容建立在用户提交的数据之上比如:搜索引擎的结果页面、在线商店中反映订单信息的页面。Web页面的内容由频繁变动的数据导出比如:天气预报或新闻头条页面Web页面用到了来自于数据库或其他服务器端资源的信息比如:电子商务网站有可能使用servlet动态地构建1.2Servlet的功能读取客户程序发送来的显式数据(表单数据)读取客户程序发送来的隐式数据(请求报头)生成相应的结果发送显式的数据给客户程序(HTML)发送隐式的数据给客户程序(状态代码和响应报头)1.3Servlet代码初探示例HelloServlet.java注意:Servlet是常规的Java代码Servlet属于J2EE规范而不是J2SE规范Servlet继承了标准的类HttpServletServlet覆盖了HttpServlet中的doGet方法1.5JSP的作用示例HelloJSP.jspservlet是含有HTML的Java程序;JSP是含有Java代码的HTML页面。JSP是servlet的另一种形式,JSP页面会翻译成servlet,servlet会被编译,并在web服务器中运行。选择servlet还是JSPservlet:面向处理的任务,执行复杂操作;JSP:面向表示的任务;实际开发中通常需要将二者结合起来使用HelloJSP.jsp运行结果Servlet&JSP的优势流行:Java技术最为广泛的应用中型、大型Web应用的主导技术支持广泛:Apache,Oracle,IBM,Sybase,BEA等适用于IIS的插件运行平台:Windows,Unix/Linux,MacOS以及IBM大型机OSs主要应用:航空公司,旅馆,电子商务站点,搜索引擎,银行,金融财经网站等等……2.Tomcat服务器及Servlet的运行原理Web服务器的安装Tomcat的目录结构Web应用的目录结构部署Web应用web.xml部署文件描述符简介Servlet的基本结构servlet的生命周期SingleThreadModel接口2.1Web服务器的安装下载并安装Java软件开发包(SDK)下载并安装ApacheTomcat启动Tomcat开始→程序→ApacheTomcat→MonitorTomcat右键“单击”Tomcat图标选择“StartService”在浏览器地址栏中输入页面2.2Tomcat的目录结构$CATALINA_HOME/binStartup,shutdown等命令脚本文件$CATALINA_HOME/confserver.xml等配置文件$CATALINA_HOME/logs缺省日志文件的存放目录$CATALINA_HOME/webappsWeb应用存放的目录2.3Web应用的目录结构HTML以及JSP文档放在顶层目录(或除WEB-INF子目录中)web.xml文件放置在WEB-INF子目录servlet和其他Java类放置在WEB-INF/classes中与包名相匹配的子目录中。Tomcat中整个web应用目录都一般放在i$CATALINA_HOME/webapps/中mywebappWEB-INFclassesweb.xmlpackage*.class*.html*.jsp2.4部署Web应用部署:将Web应用配置到Web服务器中,并使之能使用。当server.xml中deployOnStartup属性的值为true时(默认为true),将web应用拷贝到webapps目录中.使用TomcatManager使用IDE(NetBeans,JBuilder2006)2.5web.xml部署文件描述符简介(1)作用:部署Web应用中的元素:servlet、jsp等。位置:在WEB-INF目录中基本格式:xml标头、DOCTYPE声明、web-app元素?xmlversion=1.0encoding=UTF-8?!DOCTYPEweb-appPUBLIC-//SunMicrosystems,Inc.//DTDWebApplication2.3//EN部署文件描述符简介(2)命名servlet使用web-app元素的子元素servlet命名servlet;servlet元素包含两个子元素:servlet-name和servlet-classservletservlet-nameHelloServlet/servlet-nameservlet-classchapter9.HelloServlet/servlet-class/servletweb.xml部署文件描述符简介(3)servletURL的指定使用web-app内的子元素servlet-mapping指定已命名的servlet的URL;servlet-mapping元素包含两个子元素:servlet-name和url-patternservlet-mappingservlet-nameHelloServlet/servlet-nameurl-pattern/HelloServlet/url-pattern/servlet-mappingweb.xml部署文件描述符简介(4)完整的web.xml?xmlversion=1.0encoding=UTF-8?!DOCTYPEweb-appPUBLIC-//SunMicrosystems,Inc.//DTDWebApplication2.3//EN部署文件描述符简介(5)web.xml部署描述文件的读取每次修改web.xml后需重启web服务器;服务器启动后web.xml是只读的。2.6Servlet的基本结构(1)HTML文档的结构生成HTML的servlet思路:println语句输出合法的Web页面文档给客户端浏览器示例:HelloServlet.java!DOCTYPE...HTMLHEADTITLE.../TITLE/HEADBODY....../BODY/HTML2.6Servlet的基本结构(2)servlet一般扩展HttpServlet类根据客户数据发送方式的不同覆盖该类中的doGet或doPost方法;doGet和doPost方法的两个参数:HttpServletRequestrequest:通过该对象得到输入数据(表单数据、HTTP请求包头和客户主机名等)HttpServletResponseresponse:通过该对象指定输出信息(HTTP状态码、响应包头),并能获得能将文档内容发送给客户端的字符输出流PrintWriter的对象doGet和doPost方法声明抛出异常:ServletException和IOException需要导入三个包:java.io(PrintWriter),javax.servlet(HttpServlet),javax.servlet.http(HttpServletRequest,HttpServletResponse)2.6Servlet的基本结构(3)生成HTML的Servlet中需注意:必须在传送实际的文档内容之前设定ContentType,原因:Http响应由:一行状态行、一个或多个报头、一个空行和具体文档内容按序构成servlet会缓冲报头数据,但不一定缓冲文档数据;因此可以在设定报头之后设定状态行。2.7servlet的生命周期(1)HttpServlet类继承图Servlet接口publicvoidinit(ServletConfigconfig)publicvoidservice(ServletRequestreq,ServletResponseres)publicvoiddestroy()GenericServlet类HttpServlet类publicabstractvoidservice(ServletRequestreq,ServletResponseres)protectedvoiddoPost(HttpServletRequestreq,HttpServletResponseresp)protectedvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)2.7servlet的生命周期(2)已创建HelloServlet实例?创建HelloServlet实例,并调用init方法产生新线程,调用service方法请求类型调用doGet方法调用doPost方法调用destory方法卸载servlet?等待新的请求是是否否POSTGET请求HelloServletWebServer2.7servlet的生命周期(3)init方法服务器只创建每个servlet的单一实例;仅在servlet首次载入时执行一次,不是每次请求都要调用主要用于一次性地初始化工作,如建立数据库连接,载入数据文件等。2.7servlet的生命周期(4)service在新线程中由服务器为每个请求而调用。service方法中检查HTTP请求类型,然后调用相应的doGet,doPost等方法。注意:不要覆盖这个方法!HttpServlet中的service方法是个控制器,它根据请求的类型调用doGet,doPost、doHead、doPut、doTrace等方法,可以在子类中覆盖这些方法以提供相应功能,但直接覆盖service方法排出了这种可能性;默认service方法将调用getLastModified方法,覆盖getLastModified方法可提供对修改日期的支持;若需等同地对待doGet和doPost方法,应在子类的doGet中调用doPost,或者相反,但不要覆盖service方法。2.7servlet的生命周期(5)destory方法在服务器删除servlet的实例时调用。不是每次请求后都调用。因此可以在该方法中进行关闭数据库连接、停止后台运行的线程和其他清理工作。2.8SingleThreadModel接口通常情况,web服务器只生成servlet的

1 / 55
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功