Servlet高级编程课件_第1页
Servlet高级编程课件_第2页
Servlet高级编程课件_第3页
Servlet高级编程课件_第4页
Servlet高级编程课件_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1、第7章,Servlet 高级编程,07Servlet高级编程,2,本课教学内容,在Servlet内实现跳转 ServletContext高级功能 使用过滤器 异常处理,07Servlet高级编程,3,在 Servlet 内实现跳转,在前面的章节中已经提到,Servlet 是充当控制者(Controller)的角色的,可以用来处理来自 JSP 页面的输入参数,以及从 JavaBean 中读取来自数据库的数据,最后跳转到目标页面。因此,Servlet 为了实现控制者的这一角色,必须要能够实现跳转,07Servlet高级编程,4,在 Servlet 内实现跳转,常用的 Servlet 内跳转有 2

2、种 重定向(对应 JSP 内置对象中的 sendRedirect) response.sendRedirect(URL 地址);,07Servlet高级编程,5,在 Servlet 内实现跳转,常用的 Servlet 内跳转有 2 种 服务器内跳转(对应 JSP 中的 forward 标签) ServletContext application = this.getServletContext(); RequestDispatcher rd = application.getRequestDispatcher(URL 地址); rd.forward(request, response);,07

3、Servlet高级编程,6,在 Servlet 内实现跳转,这两种在 Servlet 内的跳转与 JSP 中提到的跳转是等效的。只是因为一个是位于 JSP 页面中,一个是位于 Servlet 内。需要注意的是,两种情况下的 URL 地址写法不一样。在第一种中,如果写绝对路径,必须将虚拟目录根目录写在里面,07Servlet高级编程,7,在 Servlet 内实现跳转,两种方法的适用场合 当不需要传递参数或者需要跳转到另一个服务器页面时使用重定向,07Servlet高级编程,8,在 Servlet 内实现跳转,两种方法的适用场合 当需要从 A 页面跳转到 B 页面时,存在着大量暂态数据(即在 B

4、 页面显示过后就可以不用的数据)时,为了节省内存,可以使用服务器内跳转,可以避免把很多内容存储在 session中,从而导致服务器内存消耗过大的情况,07Servlet高级编程,9,ServletContext 高级功能,ServletContext 是 application 对象所对应的接口,它具有一些高级功能,其中最常见的是获取绝对路径 ServletContext 能够直接获取当前工程中资源在服务器硬盘上的绝对路径,07Servlet高级编程,10,ServletContext 高级功能,获取方法 ServletContext.getRealPath(资源在项目中的路径);,07Ser

5、vlet高级编程,11,ServletContext 高级功能,获取绝对路径时的特别提醒 根据 Tomcat 的不同的安装方法,不同用户机器上显示的效果可能不相同 获取服务器上资源在硬盘上的绝对路径有什么作用?一般情况下,有些操作可能和服务器硬盘读写有关,如文件上传,此时就需要得知文件保存的路径,如果保存在当前项目中的某个目录中,那就必须知道该目录的在硬盘上的绝对路径,07Servlet高级编程,12,ServletContext 高级功能,获取绝对路径时的特别提醒 实际上,以下几种方法都可以得到 ServletContext 对象 通过 session 获得: javax.servlet.h

6、ttp.HttpSession.getServletContext(); 通过 pageContext 获得: javax.servlet.jsp.pageContext.getServletContext();,07Servlet高级编程,13,ServletContext 高级功能,获取绝对路径时的特别提醒 (3)通过 ServletConfig 获得: javax.servlet.ServletConfig.getServletContext(); (4)通过 Servlet 获得: javax.servlet.http.HttpServlet.getServletContext();,

7、07Servlet高级编程,14,使用过滤器,需要过滤器的情况 情况一:为了解决中文乱码问题,我们经常看到一段代码:request.setCharacterEncoding(gb2312); response.setContentType(text/html;charset=gb2312); 这是 Servlet 用来设置编码用的,如果 Servlet 的处理方法最前面没有加入这一段代码, 就很可能会出现乱码问题。如果是一个大工程的话,会有很多很多的 Servlet,于是很多人发现在这么多代码中重复设置编码,非常麻烦。而且,一旦需求变了,需要换成另外的编码,对程序员来说将是一件很繁琐的事情,0

8、7Servlet高级编程,15,使用过滤器,需要过滤器的情况 情况二:很多的门户网站都会有登录页面,这是为了业务需求,同时也是为了使用户控制更加的安全。如果客户没有登录就访问网站的某一页面,在很多情况下会引发安全问题。应该如何避免这种情况?传统情况下,可以使用 session 检查来完成,但是在很多页面上都添加 session检查代码,也会比较繁琐,07Servlet高级编程,16,使用过滤器,需要过滤器的情况 情况三:许多的网站都存在着各种不同的权限,比如,只有管理员才可以对网站的某些数据进行维护和修改,一般的普通用户是无法完成该功能的。登录过后,网页如何区分普通用户与管理员?如果是每一个页

9、面写一个判断用户类型的代码,似乎也非常繁琐,07Servlet高级编程,17,使用过滤器,过滤器属于一种小巧的、可插入的 Web 组件,它能够对 Web 应用程序的前期处理和后期处理进行控制,可以拦截请求和响应,查看、提取或者以某种方式操作正在客户端和服务器之间进行交换的数据,07Servlet高级编程,18,编写过滤器,Servlet 过滤器可以当作一个只需要在 web.xml 文件中配置就可以灵活使用、可以重用的模块化组件。它能够对 JSP、HTML、Servlet 文件进行过滤,07Servlet高级编程,19,编写过滤器,实现一个过滤器需要两个步骤: 实现接口 javax.servle

10、t.Filter;,07Servlet高级编程,20,编写过滤器,实现一个过滤器需要两个步骤: 实现 3 个方法 初始化方法:表示的是过滤器初始化时的动作。 public void init(FilterConfig config) ; 消亡方法:表示的是过滤器消亡时候的动作。 public void destroy() ; 过滤函数:表示的是过滤器过滤时的动作。 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) ;,07Servlet高级编程,21,过滤器的配置,

11、过滤器的配置有以下几个步骤: 用元素定义过滤器 元素有两个必要子元素: 元素用来设定过滤器的名字 元素用来设定过滤器的类路径,07Servlet高级编程,22,过滤器的配置,过滤器的配置有以下几个步骤: 用配置过滤器的映射 过滤所有文件 FilterName /* ,07Servlet高级编程,23,过滤器的配置,过滤一个或者多个 Servlet(JSP) FilterName /PATH1/ServletName1(JSPName1) FilterName /PATH2/ServletName2(JSPName2) ,07Servlet高级编程,24,过滤器的配置,过滤一个或者多个文件目录

12、FilterName /PATH1/* ,07Servlet高级编程,25,需要注意的问题,关于过滤器,有以下几个问题需要注意 过滤器的初始化和 doFilter 的调用时机 过滤器的初始化是在服务器运行的时候自动运行,07Servlet高级编程,26,需要注意的问题,过滤器常见应用场合总结如下: 获取请求数据并操作 性能保障 安全保障 会话处理,07Servlet高级编程,27,异常处理,在 Web 应用程序中,总会发生各种各样的异常:比如数据库连接失败,0 被作为除数,得到的值是空,或者是数组溢出等等。如果出现了这些异常,系统不做任何处理,显然是不行的。本节将介绍一种异常处理方法,比前面章节中讲解的异常处理更加简便,07Servlet高级编程,28,异常处理,异常

温馨提示

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

评论

0/150

提交评论