你的位置:首页 > Java教程

[Java教程]JSP网站开发基础总结《十一》


  继上一篇关于过滤器连总结后,本篇为大家详细介绍一下过滤器中过滤规则的dispatcher属性的使用,在servlet2.5中dispatcher的属性有四种,其中上一篇已经为大家介绍了error属性的使用,本篇将详细介绍一下剩余的三个属性的作用。

 1、servlet2.5中的dispatcher属性:

  

 servlet3.0中增加了一个异步操作属性,由于博主现在使用的是servlet2.5所以对于这个属性暂时先不为大家总结了。

 2、转发与重定向:(推荐博客:http://blog.163.com/yea_love/blog/static/183356380201323034842605/)

  转发:request.getRequestDispatcher("a.jsp").forward(request,response)或request.getRequestDispatcher("a.jsp").include(request,response)

  重定向:response.sendRedirect("a.jsp")

  区别:a、转发在服务器端完成的;重定向是在客户端完成的 ;

     b、.转发的速度快;重定向速度慢;

     c、转发的是同一次请求;重定向是两次不同请求 ;

     d、转发不会执行转发后的代码;重定向会执行重定向之后的代码 ;

     e、转发地址栏没有变化;重定向地址栏有变化 ;

     f、转发必须是在同一台服务器下完成;重定向可以在不同的服务器下完成 。

 3、添加过滤规则:

  在web.

<filter-mapping> <filter-name>firstFilter</filter-name> <url-pattern>/main.jsp</url-pattern> <dispatcher>REQUEST</dispatcher> </filter-mapping>

 4、添加重定向:

  在我们的firstFilter类中添加一个重定向:

public class firstFilter implements Filter {  public void destroy() {    System.out.println("Destory-----first");  }  public void doFilter(ServletRequest request, ServletResponse response,      FilterChain arg) throws IOException, ServletException {    System.out.println("start-----first");    //arg.doFilter(request, response);//没有该方法,页面将一直处于加载状态。        HttpServletRequest req = (HttpServletRequest)request;    HttpServletResponse res = (HttpServletResponse)response;    //重定向    res.sendRedirect(req.getContextPath()+"/mian.jsp");    //forward方式转发    //req.getRequestDispatcher("/main.jsp").forward(request, response);    //include方式转发    //req.getRequestDispatcher("/main.jsp").include(request, response);        System.out.println("end-----first");  }  public void init(FilterConfig arg0) throws ServletException {    System.out.println("Init-----first");  }}

 5、部署工程,测试:

  在浏览器地址栏输入我们的工程名:(例如:http://localhost:8080/HelloWord/index.jsp)

  

 6、添加转发:

  一、forward方式转发:

   a:通过Filter类实现。(代码部分见4)

   b:通过jsp页面完成。

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";System.out.println("index.jsp已加载");%><jsp:forward page="/main.jsp"></jsp:forward><!-- forward方式转发 --><!--<jsp:include page="/main.jsp"></jsp:include> include方式转发 --><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head>  <base href="<%=basePath%>">    <title>my one web</title>  <meta http-equiv="pragma" content="no-cache">  <meta http-equiv="cache-control" content="no-cache">  <meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  <meta http-equiv="description" content="This is my one web!"> </head>  <body>  <p>HelloWord!</p> </body></html>

  二、include方式:

   a:通过Filter类实现。(代码部分见4)

   b:通过jsp页面完成。(代码部分见6.一.b)

 7、添加过滤器规则:

  在web.

  好了,关于dispatcher属性的总结就为大家分享到这里,如有疑问,欢迎留言讨论。