繼上一篇關于過濾器連總結后,本篇為大家詳細介紹一下過濾器中過濾規則的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.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="descr二、include方式:
a:通過Filter類實現。(代碼部分見4)
b:通過jsp頁面完成。(代碼部分見6.一.b)
7、添加過濾器規則:
在web.xml中添加過濾轉發事件的規則,只需要修改<dispatcher>的屬性就可以了。
好了,關于dispatcher屬性的總結就為大家分享到這里,如有疑問,歡迎留言討論。
新聞熱點
疑難解答