Java软件项目BS架构开发课件_第1页
Java软件项目BS架构开发课件_第2页
Java软件项目BS架构开发课件_第3页
Java软件项目BS架构开发课件_第4页
Java软件项目BS架构开发课件_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章Servlet与欢迎页面的实现

1学习目标掌握定义Servlet的2种方法

如何将Servlet部署到Tomcat上

Servlet如何与客户端交互,即Servlet如何获得客户端传递过来的参数和如何向浏览器传递信息

如何在Servlet中引用(或加载)别的Servlet或JSP以及如何传递参数

如何在Servlet中调用别的Servlet或JSP以及如何传递参数

如何在Servlet中使用Cookie将信息保存在用户的机器中

如何利用Servlet的生命周期特点使访问页面的计数器值连续

完成欢迎页面

2欢迎页面要求3“欢迎光临联合银行”滚动显示实现一个显示页面被访问次数的计数器HTML已经无法实现,需要使用动态网页技术,如Servlet4Servlet概述

运行在服务器端的Web容器中的Java应用程序

它响应客户端的请求,并把处理结果以HTML网页的形式返回给客户

Servlet可扩展服务器的功能,如访问数据库5Servlet的生命周期初始化阶段处理客户端请求阶段

销毁阶段

6使用Servlet的优点Servlet只在第1次被请求执行时才需要加载不需要创建不同的进程来处理不同的

客户请求由于Servlet就是Java程序,因此可以使用Java类库编写具有各种功能的Servlet平台无关7下载并安装Tomcat首先要从SUN公司下载并安装JDK设置环境变量JAVA_HOME=JDK的安装目录去Tomcat的官方网站或其他提供Tomcat下载的网址下载,可能是一个安装包或压缩包安装或解压即可8ServletAPI在标准版的JDK中不包含ServletAPI可以使用J2SDKEE中的j2ee.jar或Tomcat的common\lib\servlet-api.jar都包含ServletAPI的包javax.servlet和javax.servlet.http9使用ServletAPI编写Servlet编写Servlet小应用程序要用到ServletAPI,ServletAPI由2个Java包javax.servlet和javax.servlet.http组成。编写

Servlet有2种方法:通过继承javax.servlet.GenericServlet类

通过继承javax.servlet.http.HttpServlet类

10继承GenericServlet定义一个新的Servlet类

重写service()方法定义Servlet的功能案例4-1:显示“你好”。在Service方法中通过调用参数response的方法setContentType设置返回的页面的内容类型和字符编码,处理中文显示乱码调用response的方法getWriter获得发送数据的输出流对象,然后用该对象的println方法向浏览器发送信息11packagech4.servlet;importjavax.servlet.*;//importjavax.servlet.http.*;importjava.io.*;publicclassHelloWorldServletextendsGenericServlet{

publicvoidservice(ServletRequestrequest,ServletResponseresponse)throwsIOException

{ response.setContentType("text/html;charset=GB2312"); PrintWriterout=response.getWriter(); out.println("<html>"); out.println("<head><title>helloWorldServlet</title></head>"); out.println("<body>"); out.println("你好!"); out.println("</body>"); out.println("</html>"); }}12将Servlet部署到Tomcat上

对于Tomcat,需要手工部署:编译生成Servlet的字节码文件将字节码文件复制到TOMCAT_HOME\webapps下的对应某个应用程序的目录(如test2)的子目录

WEB-INF\classes目录或其子目录(如TOMCAT_HOME\webapps\test2\WEB-INF\

classes\ch4\servlet)中修改WEB-INF下的web.xml文件,见教材86页,注意<servlet-class>ch4.servlet.HelloWorldServlet</servlet-class>13<servlet>与</servlet>部分定义一个新的Servlet,其中<servlet-name>段指定这个servlet的名字,注意<servlet-class>段指定这个servlet对应的类,由于这个类属于包ch4.servlet,所以要给出包名<servlet-mapping>与</servlet-mapping>部分定义servlet在URL中出现的名字14调用Servlet的2种方式在浏览器的地址栏中输入Servlet的URLhttp://localhost:8080/test2/HelloWorldServlet在表单(Form)的属性Action中指定Servlet的URL<FORMaction=http://localhost:8080/test2/HelloWorldServlet>….15问题用户在页面上输入姓名,如王红,服务器端的Servlet会针对这个姓名返回一个欢迎信息,如“欢迎你,王红!”用户的输入是不确定的,不能用静态页面完成。需要服务器端的程序,如某Servlet。程序设计需要划分功能:哪部分用静态网页,哪部分用Servlet,它们之间如何通信(即建立关联或联系?如何指定服务器端的程序?服务器端程序,如某Servlet,如何获得用户的输入?如何向客户端浏览器返回信息?16通过继承HttpServlet定义一个新的Servlet类

重写doGet()或者doPost()方法定义Servlet的功能案例4-2:用户在页面上输入姓名,服务器端的Servlet会针对这个姓名返回一个欢迎信息。请求采用GET方式发送到服务器端重写doGet()方法定义Servlet的功能通过doGet()的参数request可以获得来自浏览器的相关请求信息,如用户在表单中的输入,设置页面请求的字符编码以保证正确解码通过参数response设置送回到浏览器的相关信息,如设置返回页面类型和字符编码并获得发送数据的输出流对象17案例4-3:功能同4-2,只是请求采用POST方式发送到服务器端,Servlet重写doPost()方法定义Servlet的功能18练习实现一个名为emailServlet的Servlet,可以接受用户输入的email地址并显示:你输入的邮箱地址是:XXXXXXXXXX用HTML实现一个email地址录入界面,当用户提交后将调用emailServlet显示用户输入的信息。19显示用户前一次用同一台机器登录服务器的时间使用cookie技术,将登录服务器的时间保存到用户的硬盘上,用户下一次调用时就从用户的硬盘上读出来并显示20在Servlet中使用cookieServletAPI中的Cookie类提供了很多方法处理cookieHttpServletRequest的getCookies()方法可以获得存储在客户计算机上的cookieHttpServletResponse的addCookie方法,可以将cookie的数据和HTTP响应一起发送给客户

HttpServlet的service、doGet和doPost方法的2个参数的类型分别是HttpServletRequest和HttpServletResponse21读出已经存在的cookieCookie[]cookies=request.getCookies();for(inti=0;i<cookies.length;i++){Cookiec=cookies[i];Stringname=c.getName();Stringvalue=c.getValue();out.println(name+"="+value);}22生成并设置一个cookieCookiec=newCookie(name,value);c.setMaxAge(LastSecond);response.addCookie(c);23案例4-4定义一个Servlet显示用户前一次用同一台机器登录服务器的时间24显示生命周期的Servlet在Servlet的生命周期中,有几个重要的方法:init()方法只在第1次请求时调用每次请求都会调用service()方法,service()方法根据请求是GET还是POST调用doGet()或doPost()方法destroy()方法只在servlet被销毁时才调用

案例4-5:重写init()方法,将计数器的值清0重写doGet()方法,将计数器的值加1

通过计数器的值的变化来说明Servlet的方法的调用情况25案例4-6:计数连续的Servlet重写init()方法,从文件中读出计数值重写doGet()方法,将计数器的值加1重写destroy()方法,将计数值保存到文件中可以将计数值保存到数据库中26从Servlet中引用其他文件用被引用文件的URL作为参数调用request的getRequestDispatcher()方法来获得request调度程序对象

调度程序对象的include()方法将资源引入并且传递参数案例4-7:让用户在输入界面上选中一个客户端技术,然后提交给服务器端的Servlet处理,Servlet会引用一个JSP文件显示部分信息

RequestDispatcherdispatcher=request.getRequestDispatcher("include.jsp");dispatcher.include(request,response);27从Servlet跳转到其他页面与引用文件类似:以跳转页面的URL为参数获得获得request调度程序对象

用调度程序对象的forward()方法跳转到其他页面案例4-8:

RequestDispatcherdispatcher=request.getReque

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论