第五章 控制层实现技术.ppt_第1页
第五章 控制层实现技术.ppt_第2页
第五章 控制层实现技术.ppt_第3页
第五章 控制层实现技术.ppt_第4页
第五章 控制层实现技术.ppt_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

1、第五章 控制层实现技术,本章要点,如何利用一个Servlet处理多个请求 实现博客网站的博文分类管理 使用过滤器解决编码装换问题 利用状态跟踪和侦听器实现统计访问人数和在线人数 利用SmartUpload实现文件上传和下载,5.1多请求处理与控制层实现,用一个Servlet处理多个请求 如果用不同的Servlet处理不同的请求,那么项目中的就会包含很多Servlet,使程序变得繁琐而不清晰,也不便于调试。为了使一个Servlet能处理多个请求,可以人为地为每次请求增加一个参数,如method,通过该参数的值决定具体如何处理。,案例5-1实现博客网站的博文分类管理 控制层主要用来接收用户请求,根

2、据用户的请求调用业务层,并将获得的结果转发给视图。这里给出博文分类的控制类设计,并实现博文分类的管理,运行界面如图5-1、5-2和图5-3所示。,技术要点 控制层采用Servlet实现。在每个Servlet中通过工厂类来建立所需的业务逻辑对象。 请求时增加参数method,在processRequest()方法中根据method的值调用不同的功能,从而实现处理多请求的目的。为了使结构清晰,一个功能对应一个方法。,5.2 过滤器与编码处理,过滤器 过滤器是位于请求与响应中间的起过滤功能的程序。过滤器能够拦截请求或响应信息,并对其进行过滤处理。正由于它的这一特性,通常用它来实现一些特殊的功能,比如

3、资源请求及响应报告,日志记录,访问权限控制,编码转换,数据加密等。,一个过滤器必须实现javax.servlet.Filter接口。该接口包含如下3个方法: void init(FilterConfig filterConfig):这个方法在容器实例化过滤器时被调用,它主要用于做一些准备工作。FilterConfig对象包含配置信息。 void doFilter(ServletRequest request, ServletResponse response, FilterCha in chain):这个方法用于处理请求和响应。FilterChain对于正确的过滤操作至关 重要,通过调用Fil

4、terChain的doFilter()方法可重新返回到被拦截的程序中。 void destroy():该方法由容器在销毁过滤器实例之前调用。,案例5-2 设计一个编码过滤器 设计一个过滤器,以避免在所有的Servlet中都要设置编码。 技术要点 在mon包下建立一个过滤器。过滤的配置用xml文件。为过滤器指定一个参数encoding,用于指定编码方式。 在过滤器的doFilter()方法中调用request对象的setCharacterEncoding()方法设置编码方式。,5.3 状态跟踪与侦听器,会话跟踪 从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一

5、个会话。当一个客户访问一个服务器时,可能会在这个服务器的几个页面之间切换,服务器应当通过某种办法知道这是一个客户,就需要Session对象。与会话相关的接口主要是java.servlet.http.HttpSession接口。HTTP客户端和HTTP会话两者之间的关联是通过HttpSession接口实现的。这种关联可以维持指定的时间,同时也可以跨越多个连接或用户页面请求。一个Session只负责和一个用户通信,并存储该用户的有关信息。HttpSession接口提供了一些方法供开发者使用。表5-7是HttpSession接口的常用方法。在案例2-3中就用到了会话对象。,Servlet上下文 与S

6、ervlet上下文有关的接口是javax.servlet.ServletContext。当Servlet初始化时,Web容器将初始化一个ServletContext上下文给Servlet,当前ServletContext对象包含在ServletConfig对象中。利用上下文对象,可以存储应用级数据(如,网站的访问人数),可为所有用户共享。表5-2是ServletContext接口的常用方法。具体应用可参考案例5-3。,侦听器Listener 侦听ServletContext对象 对ServletContext对象进行侦听的接口有ServletContextAttributeListener和S

7、ervletContextListener。 侦听会话 对客户会话进行侦听的接口有HttpSessionAttributeListener接口、HttpSessionListener接口、HttpSessionActivationListener接口和HttpSessionBindingListener接口。,侦听请求 对ServletRequest对象进行侦听的接口有ServletRequestAttributeListener和ServletRequestListener。,案例5-3 统计访问人数和在线人数 为博客网站增加访问人数和在线人数显示。运行效果如图5-7所示。,技术要点 将访问

8、人数和在线人数保存在上下文环境对象中。 使用一个上下文侦听器初始化访问人数和在线人数。为了能使网站停止时不丢失访问人数,contextDestroyed()方法中把访问人数保存到磁盘文件中,在contextInitialized()方法读取文件获得访问人数。 使用一个会话侦听器修改访问人数和在线人数。当一个会话建立时,访问人数和在线人数均加1;当一个会话结束是,在线人数减1。,5.4 文件的上传和下载,上传文件和参数获取 Web程序中经常会涉及到图片的显示,而这些图片又需要使用者来提供,因此必须把这些图片上传到服务器上才能在Web程序中使用。要上传图片必须使用表单,上传图片的表单和普通参数的表

9、单在表单编码方式上有明显的区别,它的要求是: method=post enctype=multipart/form-data 例如: 标题: 文件: ,采用enctype=multipart/form-data编码方式的表单,传递到服务器的参数和文件都无法使用传统的request.getParameter()方法来取得。可以采用第三方的上传组件SmartUpload处理request。SmartUpload是一个使用比较广泛的上传组件,它由SmartUpload.jar文件构成,能够实现文件的上传和下载功能,使用它来完成上传和下载代码比较简单。 为使用SmartUpload上传组件,需要在把S

10、martUpload.jar文件添加到库中,保存文件 文件保存在目录中 可以把传到服务器的文件保存在服务器的一个指定目录中,同时在数据库中记录上传文件和参数的对照信息。采用该方法所保存的文件,读取的时候是直接读文件,速度比较快,但由于数据库和文件分离,备份数据的时候需要备份相应的目录。 这种方式解决的主要问题是,文件覆盖问题。为此一般采用时间戳来生成新的文件名。,文件保存在数据库中 需要在数据表中增加相应字段,在备份数据的时候不用额外备份目录,管理负担不重,不会出现同名冲突的问题,但是由于需要读取字段中的数据,读取代价较高,适用于小文件的保存。 需要在数据库中增加blob字段。 filecon

11、tent blob 获取上传文件的字节流 byte b=new bytemyFile.getSize(); for(int i=0 ; i)。,文件下载 1. 从目录中下载 (1)根据ID查询出数据库中的记录,再从记录中获得文件的参数,这里假设获得的原文件名、文件名、文件类型分别为srcFileName,fileName,fileType。 (2)在Servlet中可以用如下方式下载文件。 2. 从数据库字段下载 若返回查询的结果集,按如下方式下载: mySmartUpload.downloadFile(rs, fileType, descFileName); 若返回的是字节数组,可将字节数组

12、通过输出流直接输出到客户端。当然,若需要弹出保存文件对话框,在输出之前也要处理文件名,并设置响应头。,案例5-4 实现博客网站的用户功能 实现博客网站的用户登录、注册、个人设置、形象照片显示、激活博客等功能。其中用户的形象照片在注册时不直接添加,而是在个人设置时提交。用户登录和注册界面如图5-9和5-10所示。登录成功,如果用户没有激活博客,显示“登录成功!激活博客”,否则显示“登录成功!个人设置 进入个人博客”;登录失败显示“登录失败!返回”。注册成功,显示“注册成功!登录”;否则显示“注册失败!返回”。在登录界面,如果单击【找回密码】超链接,将显示如图5-11界面,输入用户和邮件地址,单击【确定】按钮后,可以查找密码。查找成功显示“找回密码成功!你的密码为:XXXX”;否则显示“找回密码失败!返回”。登录成功后,单击【激活博客】显示如图5-12界面,输入博客标题、选择LOGO后单击【提交】按钮,提交成功显示“激活成功!进入个人博客”,否则显示“激活失败!返回”。登录成功后,单击【个人设置】显示如图5-13界面,可对个人的数据进行修改,并可提交个人形象照片。个人设置成功,显示“设置个人信息成功!返回首页”;否则显示“设置个人信息失败!返回”。,技术要点 登录

温馨提示

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

评论

0/150

提交评论