《Java软件项目(BS架构)开发》4Servlet与欢迎页面的实现.ppt_第1页
《Java软件项目(BS架构)开发》4Servlet与欢迎页面的实现.ppt_第2页
《Java软件项目(BS架构)开发》4Servlet与欢迎页面的实现.ppt_第3页
《Java软件项目(BS架构)开发》4Servlet与欢迎页面的实现.ppt_第4页
《Java软件项目(BS架构)开发》4Servlet与欢迎页面的实现.ppt_第5页
免费预览已结束,剩余24页可下载查看

下载本文档

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

文档简介

1、Java软件项目(B/S架构)开发 覃国蓉,第4章 Servlet与欢迎页面的实现,Java软件项目(B/S架构)开发 覃国蓉,学习目标,掌握 定义Servlet的2种方法 如何将Servlet部署到Tomcat上 Servlet如何与客户端交互,即Servlet如何获得客户端传递过来的参数和如何向浏览器传递信息 如何在Servlet中引用(或加载)别的Servlet或JSP以及如何传递参数 如何在Servlet中调用别的Servlet或JSP以及如何传递参数 如何在Servlet中使用Cookie将信息保存在用户的机器中 如何利用Servlet的生命周期特点使访问页面的计数器值连续 完成 欢

2、迎页面,Java软件项目(B/S架构)开发 覃国蓉,欢迎页面要求,Java软件项目(B/S架构)开发 覃国蓉,“欢迎光临联合银行”滚动显示 实现一个显示页面被访问次数的计数器 HTML已经无法实现,需要使用动态网页技术,如Servlet,Java软件项目(B/S架构)开发 覃国蓉,Servlet概述,运行在服务器端的Web容器中的Java应用程序 它响应客户端的请求,并把处理结果以HTML网页的形式返回给客户 Servlet可扩展服务器的功能,如访问数据库,Java软件项目(B/S架构)开发 覃国蓉,Servlet的生命周期,初始化阶段 处理客户端请求阶段 销毁阶段,Java软件项目(B/S架

3、构)开发 覃国蓉,使用Servlet的优点,Servlet只在第1次被请求执行时才需要加载 不需要创建不同的进程来处理不同的 客户请求 由于Servlet就是Java程序,因此可以使用Java类库编写具有各种功能的Servlet 平台无关,Java软件项目(B/S架构)开发 覃国蓉,下载并安装Tomcat,首先要从SUN 公司下载并安装JDK 设置环境变量JAVA_HOME=JDK的安装目录 去Tomcat的官方网站或其他提供Tomcat下载的网址下载,可能是一个安装包或压缩包 安装或解压即可,Java软件项目(B/S架构)开发 覃国蓉,Servlet API,在标准版的JDK中不包含Serv

4、let API 可以使用J2SDKEE中的j2ee.jar或Tomcat的commonlibservlet-api.jar都包含Servlet API的包javax.servlet和javax.servlet.http,Java软件项目(B/S架构)开发 覃国蓉,使用Servlet API编写Servlet,编写Servlet小应用程序要用到Servlet API,Servlet API由2个Java包javax.servlet和javax.servlet.http组成。 编写 Servlet有2种方法: 通过继承javax.servlet.GenericServlet类 通过继承javax.

5、servlet.http.HttpServlet类,Java软件项目(B/S架构)开发 覃国蓉,继承GenericServlet定义一个新的Servlet类,重写service() 方法定义Servlet的功能 案例4-1:显示“你好”。在Service方法中 通过调用参数response 的方法setContentType设置返回的页面的内容类型和字符编码,处理中文显示乱码 调用response 的方法getWriter获得发送数据的输出流对象,然后用该对象的println方法向浏览器发送信息,Java软件项目(B/S架构)开发 覃国蓉,package ch4.servlet; import

6、 javax.servlet.*; /import javax.servlet.http.*; import java.io.*; public class HelloWorldServlet extends GenericServlet public void service(ServletRequest request,ServletResponse response) throws IOException response.setContentType(text/html;charset=GB2312); PrintWriter out=response.getWriter(); out

7、.println(); out.println(helloWorldServlet); out.println(); out.println(你好!); out.println(); out.println(); ,Java软件项目(B/S架构)开发 覃国蓉,将Servlet部署到Tomcat上,对于Tomcat,需要手工部署: 编译生成Servlet的字节码文件 将字节码文件复制到TOMCAT_HOMEwebapps下的对应某个应用程序的目录(如test2)的子目录 WEB-INFclasses目录或其子目录 (如TOMCAT_HOMEwebapps test2WEB-INFclassesc

8、h4servlet )中 修改WEB-INF下的web.xml文件,见教材86页,注意 ch4.servlet.HelloWorldServlet ,Java软件项目(B/S架构)开发 覃国蓉,与部分定义一个新的Servlet,其中段指定这个servlet的名字,注意段指定这个servlet对应的类,由于这个类属于包ch4.servlet,所以要给出包名 与部分定义servlet在URL中出现的名字,Java软件项目(B/S架构)开发 覃国蓉,调用Servlet的2种方式,在浏览器的地址栏中输入Servlet的URL http:/localhost:8080/test2/HelloWorldS

9、ervlet 在表单(Form)的属性Action中指定Servlet的URL .,Java软件项目(B/S架构)开发 覃国蓉,问题,用户在页面上输入姓名,如王红,服务器端的Servlet会针对这个姓名返回一个欢迎信息,如“欢迎你,王红!” 用户的输入是不确定的,不能用静态页面完成。需要服务器端的程序,如某Servlet。程序设计需要划分功能:哪部分用静态网页,哪部分用Servlet,它们之间如何通信(即建立关联或联系? 如何指定服务器端的程序? 服务器端程序,如某Servlet ,如何获得用户的输入?如何向客户端浏览器返回信息?,Java软件项目(B/S架构)开发 覃国蓉,通过继承HttpS

10、ervlet定义一个新的Servlet类,重写doGet()或者doPost()方法定义Servlet的功能 案例4-2 :用户在页面上输入姓名,服务器端的Servlet会针对这个姓名返回一个欢迎信息。 请求采用GET方式发送到服务器端 重写doGet()方法定义Servlet的功能 通过doGet() 的参数request可以获得来自浏览器的相关请求信息 ,如用户在表单中的输入,设置页面请求的字符编码以保证正确解码 通过参数response设置送回到浏览器的相关信息,如设置返回页面类型和字符编码并获得发送数据的输出流对象,Java软件项目(B/S架构)开发 覃国蓉,案例4-3 :功能同4-2

11、,只是请求采用POST方式发送到服务器端,Servlet重写doPost()方法定义Servlet的功能,Java软件项目(B/S架构)开发 覃国蓉,练习,实现一个名为emailServlet的Servlet,可以接受用户输入的email地址并显示: 你输入的邮箱地址是: XXXXXXXXXX 用HTML实现一个email地址录入界面,当用户提交后将调用emailServlet显示用户输入的信息。,Java软件项目(B/S架构)开发 覃国蓉,显示用户前一次用同一台机器登录服务器的时间 使用cookie技术,将登录服务器的时间 保存到用户的硬盘上,用户下一次调用时就从用户的硬盘上读出来并显示,J

12、ava软件项目(B/S架构)开发 覃国蓉,在Servlet中使用cookie,Servlet API 中的 Cookie 类提供了很多方法处理cookie HttpServletRequest的getCookies()方法可以获得存储在客户计算机上的cookie HttpServletResponse的addCookie方法,可以将cookie的数据和HTTP响应一起发送给客户 HttpServlet 的service、doGet和doPost方法的2个参数的类型分别是HttpServletRequest和HttpServletResponse,Java软件项目(B/S架构)开发 覃国蓉,读出

13、已经存在的cookie,Cookie cookies = request.getCookies(); for (int i = 0; i cookies.length; i+) Cookie c = cookiesi; String name = c.getName(); String value = c.getValue(); out.println(name + = + value); ,Java软件项目(B/S架构)开发 覃国蓉,生成并设置一个cookie,Cookie c = new Cookie(name, value); c.setMaxAge(LastSecond); respo

14、nse.addCookie(c);,Java软件项目(B/S架构)开发 覃国蓉,案例4-4定义一个Servlet显示用户前一次用同一台机器登录服务器的时间,Java软件项目(B/S架构)开发 覃国蓉,显示生命周期的Servlet,在Servlet的生命周期中,有几个重要的方法: init()方法只在第1次请求时调用 每次请求都会调用service()方法, service()方法根据请求是GET还是POST调用doGet()或doPost()方法 destroy()方法只在servlet被销毁时才调用 案例4-5 : 重写init()方法,将计数器的值清0 重写doGet()方法,将计数器的值

15、加1 通过计数器的值的变化来说明Servlet的方法的调用情况,Java软件项目(B/S架构)开发 覃国蓉,案例4-6 :计数连续的Servlet 重写init()方法,从文件中读出计数值 重写doGet()方法,将计数器的值加1 重写destroy()方法,将计数值保存到文件中 可以将计数值保存到数据库中,Java软件项目(B/S架构)开发 覃国蓉,从Servlet中引用其他文件,用被引用文件的URL作为参数调用request的getRequestDispatcher()方法来获得request调度程序对象 调度程序对象 的include()方法将资源引入 并且传递参数 案例4-7:让用户在

16、输入界面上选中一个客户端技术,然后提交给服务器端的Servlet处理,Servlet会引用一个JSP文件显示部分信息 RequestDispatcher dispatcher=request.getRequestDispatcher(include.jsp); dispatcher.include(request,response);,Java软件项目(B/S架构)开发 覃国蓉,从Servlet跳转到其他页面,与引用文件类似: 以跳转页面的URL为参数获得获得request调度程序对象 用调度程序对象的forward()方法 跳转到其他页面 案例4-8: RequestDispatcher dispatcher=request.getR

温馨提示

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

评论

0/150

提交评论