继上一篇关于过滤器连总结后,本篇为大家详细介绍一下过滤器中过滤规则的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.xml中为我们之前创建的过滤器,在增加一个过滤规则:

<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.xml中添加过滤转发事件的规则,只需要修改<dispatcher>的属性就可以了。

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

  

 

JSP网站开发基础总结《十一》的更多相关文章

  1. JSP网站开发基础总结《二》

    有了上一篇的学习,我相信大家对于JSP一定有了一定的认识,从今天开始我们真正开启JSP模式,如果你有HTML的基础,那学起JSP来也就方便了很多了,首先JSP做为网站开发语言,它与HTML有很多相似的 ...

  2. JSP网站开发基础总结《一》

    经过JAVASE的学习相信大家对JAVA已经不再陌生,那么JAVA都可以干什么呢?做算法.应用程序.网站开发都可以,从今天开始为大家奉上JAVAEE之JSP动态网站开发基础总结. 既然是动态网站开发, ...

  3. JSP网站开发基础总结《八》

    JSP的学习总结到本篇已经八篇了,内容比较多,但都是实战,本篇最后为大家介绍一个小效果:百度分页.就是当我们遍历的数据对象较多时,这时我们就会看到了这个效果了,那他是如何实现的呢?下面我们就一起学习一 ...

  4. JSP网站开发基础总结《七》

    按照计划本篇将为大家总结搜索功能的两种实现:确定搜索与模糊搜索.所谓精确搜索便是指,根据用户的输入的搜索内容,在数据库中寻找具有一一对应的关系的数据,一般都是用户在数据库中的主键值.而模糊搜索,是一种 ...

  5. JSP网站开发基础总结《十二》

    前两篇已经简单为大家介绍了一下,有关Filter接口的知识,本篇就让我们以一个登录小功能,来具体实现一下过滤器的作用,便于大家掌握.具体为大家介绍一下如何使用Filter对访问进行过滤,及如何防止中文 ...

  6. JSP网站开发基础总结《四》

    经过前几篇的摸爬滚打,下面我们就开始我们真正的数据库操作了,本篇重点在于如何在网站端编写数据库操作语句,内容不多,就是我们常见的增删改查. 0.数据库对象创建: 在JAVASE基础知识总结时,就为大家 ...

  7. JSP网站开发基础总结《十三》

    继上一篇为大家补充过滤器类后,本篇为大家简单介绍一下如何实现验证码效果.验证码的作用是什么呢?1.防止恶意注册2.防止恶意提交3.防止盗取账户等等,总的来说验证码的存在就是为了,防止非人为的操作,不过 ...

  8. JSP网站开发基础总结《九》

    本篇属于附加篇,在之前的总结中给大家提到过一个关于登录状态验证的效果,当时是通过Session对象完成的,今天我查了一下,JSP为我们封装了一个用于过滤用的过滤器类Filter,通过它我们就可以非常轻 ...

  9. JSP网站开发基础总结《六》

    对于本篇需要总结的内容,量估计有点大,大家好好看哈,绝对全是干货,代码的已经运行测试,不存在问题,大家可以参考学习,下面开始本篇的内容. 1.添加数据到数据库: 如何用户在JSP页面的填写的信息输入到 ...

  10. JSP网站开发基础总结《九》(转)

    本篇属于附加篇,在之前的总结中给大家提到过一个关于登录状态验证的效果,当时是通过Session对象完成的,今天我查了一下,JSP为我们封装了一个用于过滤用的过滤器类Filter,通过它我们就可以非常轻 ...

随机推荐

  1. PYTHON学习之路_PYTHON基础(6)

    学习内容: Python模块介绍 1.time &datetime模块 2.random 3.shutil 4.shelve 5.xml处理 6.configparser 7.hashlib ...

  2. 在VS2010配置MPI--win7下64位系统

    配置MPI经历了不少波折,把这些经历记录下来,告诫后来人. 1.版本要对 下载MPI,去官方网站 http://www.mpich.org/downloads/ 选择x86-64版本 2.步骤要对 1 ...

  3. webuploader 断点续传

    webuploader 实现 断点续传webuploader是百度开发的上传文件前端控件.可支持html5和flash,因此对浏览器的兼容比较好.因为需要用到ie8,ie8不支持html5,所以必须支 ...

  4. php composer使用经验

    1.使用composer引用了一个包,但是这个包没有使用命名空间,在项目中该如何使用这个包? 编辑composer.json文件 "autoload":{ "files& ...

  5. js继承理解(有引用)

    具体栗子:http://www.cnblogs.com/ayqy/p/4471638.html(地下为自己理解总结,可能晦涩,链接详细) 1.父类实例赋予子类原型. 2.利用子类函数引用 父类.cal ...

  6. C++ 非阻塞套接字的使用 (3)

    异步非阻塞套接字避免了死循环的接收问题,但是软件用起来体验还是很差.究其原因,软件在指令的发送.接收上, 采取了一种不合理的方式:在指令的发送后,立刻调用接收函数,等待回令. 若是采用同步阻塞套接字, ...

  7. C#与C++的区别!

    (1) 编译目标:C++代码经常编译成汇编语言.而C#则编译成中间语言(IL)它与Java的字节代码有些相似.IL随后在通过Iust-In-Time编译进程转换成本机的可执行代码.IL代码将作为一个装 ...

  8. IOS 跳转至AppStore的两种方式

    //第一种方法 直接跳转 id+编号 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms-apps: ...

  9. OpenGL 坐标与矩阵转换

    1. OpenGL 渲染管线 OpenGL渲染管线分为两大部分,模型观测变换(ModelView Transformation)和投影变换(Projection Transformation).做个比 ...

  10. netfx_NativeCompilation.msi 传说中的 .NET Native 预览版的文件列表

    卷 D 的文件夹 PATH 列表 卷序列号为 000000F6 CE0F:AB46 D:. │ LIST.TXT │ ├─12.0 │ └─Microsoft.Common.targets │ ├─I ...