亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? handlerinterceptor.java

?? spring framework 2.5.4源代碼
?? JAVA
字號:
/*
 * Copyright 2002-2007 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.springframework.web.portlet;

import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;

/**
 * Workflow interface that allows for customized handler execution chains.
 * Applications can register any number of existing or custom interceptors
 * for certain groups of handlers, to add common pre-processing behavior
 * without needing to modify each handler implementation.
 *
 * <p>A <code>HandlerInterceptor</code> gets called before the appropriate
 * {@link org.springframework.web.portlet.HandlerAdapter} triggers the
 * execution of the handler itself. This mechanism can be used for a large
 * field of preprocessing aspects, e.g. for authorization checks,
 * or common handler behavior like locale or theme changes. Its main purpose
 * is to permit the factoring out of otherwise repetitive handler code.
 *
 * <p>Typically an interceptor chain is defined per
 * {@link org.springframework.web.portlet.HandlerMapping} bean, sharing its
 * granularity. To be able to apply a certain interceptor chain to a group of
 * handlers, one needs to map the desired handlers via one
 * <code>HandlerMapping</code> bean. The interceptors themselves are defined as
 * beans in the application context, referenced by the mapping bean definition
 * via its
 * {@link org.springframework.web.portlet.handler.AbstractHandlerMapping#setInterceptors "interceptors"}
 * property (in XML: a &lt;list&gt; of &lt;ref&gt; elements).
 *
 * <p>A <code>HandlerInterceptor</code> is basically similar to a Servlet
 * {@link javax.servlet.Filter}, but in contrast to the latter it allows
 * custom pre-processing with the option to prohibit the execution of the handler
 * itself, and custom post-processing. <code>Filters</code> are more powerful;
 * for example they allow for exchanging the request and response objects that
 * are handed down the chain. Note that a filter gets configured in
 * <code>web.xml</code>, a <code>HandlerInterceptor</code> in the application context.
 *
 * <p>As a basic guideline, fine-grained handler-related pre-processing tasks are
 * candidates for <code>HandlerInterceptor</code> implementations, especially
 * factored-out common handler code and authorization checks. On the other hand,
 * a <code>Filter</code> is well-suited for request content and view content
 * handling, like multipart forms and GZIP compression. This typically shows when
 * one needs to map the filter to certain content types (e.g. images), or to all
 * requests.
 *
 * <p>Be aware that filters cannot be applied to portlet requests (they
 * only operate on servlet requests), so for portlet requests interceptors are
 * essential.
 *
 * <p>If we assume a "sunny day" request cycle (i.e. a request where nothing goes wrong
 * and all is well), the workflow of a <code>HandlerInterceptor</code> will be as
 * follows:
 *
 * <p><b>Action Request:</b><p>
 * <ol>
 *   <li><code>DispatcherPortlet</code> maps the action request to a particular handler
 * 		 and assembles a handler execution chain consisting of the handler that
 * 		 is to be invoked and all of the <code>HandlerInterceptor</code>
 * 		 instances that apply to the request.</li>
 *   <li>{@link org.springframework.web.portlet.HandlerInterceptor#preHandleAction(javax.portlet.ActionRequest, javax.portlet.ActionResponse, Object) preHandleAction(..)}
 * 		 is called; if the invocation of this method returns <code>true</code> then
 *		 this workflow continues</li>
 *   <li>The target handler handles the action request (via
 * 		 {@link org.springframework.web.portlet.HandlerAdapter#handleAction(javax.portlet.ActionRequest, javax.portlet.ActionResponse, Object) HandlerAdapter.handleAction(..)})</li>
 *   <li>{@link org.springframework.web.portlet.HandlerInterceptor#afterActionCompletion(javax.portlet.ActionRequest, javax.portlet.ActionResponse, Object, Exception) afterActionCompletion(..)}
 * 		 is called</li>
 * </ol>
 *
 * <p><b>Render Request:</b><p>
 * <ol>
 *   <li><code>DispatcherPortlet</code> maps the render request to a particular handler
 * 		 and assembles a handler execution chain consisting of the handler that
 * 		 is to be invoked and all of the <code>HandlerInterceptor</code>
 * 		 instances that apply to the request.</li>
 *   <li>{@link org.springframework.web.portlet.HandlerInterceptor#preHandleRender(javax.portlet.RenderRequest, javax.portlet.RenderResponse, Object) preHandleRender(..)}
 * 		 is called; if the invocation of this method returns <code>true</code> then
 *		 this workflow continues</li>
 *   <li>The target handler handles the render request (via
 * 		 {@link org.springframework.web.portlet.HandlerAdapter#handleRender(javax.portlet.RenderRequest, javax.portlet.RenderResponse, Object) HandlerAdapter.handleRender(..)})</li>
 *   <li>{@link org.springframework.web.portlet.HandlerInterceptor#postHandleRender(javax.portlet.RenderRequest, javax.portlet.RenderResponse, Object, ModelAndView) postHandleRender(..)}
 * 		 is called</li>
 *   <li>If the <code>HandlerAdapter</code> returned a <code>ModelAndView</code>,
 *       then <code>DispatcherPortlet</code> renders the view accordingly
 *   <li>{@link org.springframework.web.portlet.HandlerInterceptor#afterRenderCompletion(javax.portlet.RenderRequest, javax.portlet.RenderResponse, Object, Exception) afterRenderCompletion(..)}
 * 		 is called</li>
 * </ol>
 *
 * @author Juergen Hoeller
 * @author John A. Lewis
 * @since 2.0
 * @see HandlerExecutionChain#getInterceptors
 * @see org.springframework.web.portlet.HandlerMapping
 * @see org.springframework.web.portlet.handler.AbstractHandlerMapping#setInterceptors
 * @see org.springframework.web.portlet.HandlerExecutionChain
 */
public interface HandlerInterceptor {

	/**
	 * Intercept the execution of a handler in the action phase.
	 * <p>Called after a HandlerMapping determines an appropriate handler object
	 * to handle an {@link ActionRequest}, but before said HandlerAdapter actually
	 * invokes the handler.
	 * <p>{@link DispatcherPortlet} processes a handler in an execution chain,
	 * consisting of any number of interceptors, with the handler itself at the end.
	 * With this method, each interceptor can decide to abort the execution chain,
	 * typically throwing an exception or writing a custom response.
	 * @param request current portlet action request
	 * @param response current portlet action response
	 * @param handler chosen handler to execute, for type and/or instance evaluation
	 * @return <code>true</code> if the execution chain should proceed with the
	 * next interceptor or the handler itself. Else, <code>DispatcherPortlet</code>
	 * assumes that this interceptor has already dealt with the response itself
	 * @throws Exception in case of errors
	 */
	boolean preHandleAction(ActionRequest request, ActionResponse response, Object handler)
	    throws Exception;

	/**
	 * Callback after completion of request processing in the action phase, that is,
	 * after rendering the view. Will be called on any outcome of handler execution,
	 * thus allowing for proper resource cleanup.
	 * <p>Note: Will only be called if this interceptor's
	 * {@link #preHandleAction(javax.portlet.ActionRequest, javax.portlet.ActionResponse, Object)}
	 * method has successfully completed and returned <code>true</code>!
	 * @param request current portlet action request
	 * @param response current portlet action response
	 * @param handler chosen handler to execute, for type and/or instance examination
	 * @param ex exception thrown on handler execution, if any (only included as
	 * additional context information for the case where a handler threw an exception;
	 * request execution may have failed even when this argument is <code>null</code>)
	 * @throws Exception in case of errors
	 */
	void afterActionCompletion(
			ActionRequest request, ActionResponse response, Object handler, Exception ex)
	    throws Exception;

	/**
	 * Intercept the execution of a handler in the render phase.
	 * <p>Called after a HandlerMapping determines an appropriate handler object
	 * to handle a {@link RenderRequest}, but before said HandlerAdapter actually
	 * invokes the handler.
	 * <p>{@link DispatcherPortlet} processes a handler in an execution chain,
	 * consisting of any number of interceptors, with the handler itself at the end.
	 * With this method, each interceptor can decide to abort the execution chain,
	 * typically throwing an exception or writing a custom response.
	 * @param request current portlet render request
	 * @param response current portlet render response
	 * @param handler chosen handler to execute, for type and/or instance evaluation
	 * @return <code>true</code> if the execution chain should proceed with the
	 * next interceptor or the handler itself. Else, <code>DispatcherPortlet</code>
	 * assumes that this interceptor has already dealt with the response itself
	 * @throws Exception in case of errors
	 */
	boolean preHandleRender(RenderRequest request, RenderResponse response, Object handler)
	    throws Exception;

	/**
	 * Intercept the execution of a handler in the render phase.
	 * <p>Called after a {@link HandlerAdapter} actually invoked the handler, but
	 * before the <code>DispatcherPortlet</code> renders the view. Can thus expose
	 * additional model objects to the view via the given {@link ModelAndView}.
	 * <p><code>DispatcherPortlet</code> processes a handler in an execution chain,
	 * consisting of any number of interceptors, with the handler itself at the end.
	 * With this method, each interceptor can post-process an execution, getting
	 * applied in inverse order of the execution chain.
	 * @param request current portlet render request
	 * @param response current portlet render response
	 * @param handler chosen handler to execute, for type and/or instance examination
	 * @param modelAndView the <code>ModelAndView</code> that the handler returned
	 * (can also be <code>null</code>)
	 * @throws Exception in case of errors
	 */
	void postHandleRender(
			RenderRequest request, RenderResponse response, Object handler, ModelAndView modelAndView)
			throws Exception;

	/**
	 * Callback after completion of request processing, that is, after rendering
	 * the view. Will be called on any outcome of handler execution, thus allowing
	 * for proper resource cleanup.
	 * <p>Note: Will only be called if this interceptor's
	 * {@link #preHandleRender(javax.portlet.RenderRequest, javax.portlet.RenderResponse, Object)}
	 * method has successfully completed and returned <code>true</code>!
	 * @param request current portlet render request
	 * @param response current portlet render response
	 * @param handler chosen handler to execute, for type and/or instance examination
	 * @param ex exception thrown on handler execution, if any
	 * @throws Exception in case of errors
	 */
	void afterRenderCompletion(
			RenderRequest request, RenderResponse response, Object handler, Exception ex)
			throws Exception;

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲黄色片在线观看| 亚洲视频一区二区免费在线观看| 成人性视频网站| 美女视频黄 久久| 亚洲成人免费影院| 99久久婷婷国产综合精品 | 欧美tickling挠脚心丨vk| 99re在线精品| 色婷婷狠狠综合| 午夜激情一区二区| 国产精品白丝jk白祙喷水网站| 有码一区二区三区| 一区二区三区不卡视频| 亚洲国产wwwccc36天堂| 免费观看30秒视频久久| 99re66热这里只有精品3直播 | 日韩一区在线看| 欧美日韩专区在线| av一二三不卡影片| 性欧美大战久久久久久久久| 亚洲午夜国产一区99re久久| 亚洲一级二级三级在线免费观看| 夜夜嗨av一区二区三区四季av| 偷拍亚洲欧洲综合| 国产精品伦一区二区三级视频| 国产精品福利影院| 亚欧色一区w666天堂| 韩国在线一区二区| 日本高清不卡视频| 中文字幕高清不卡| 亚洲欧洲性图库| 久久av资源网| 欧美日韩精品一区二区三区四区 | 国产麻豆精品在线观看| 国产精品污网站| 亚洲欧美日韩综合aⅴ视频| 一区二区三区美女| 国产成人综合网站| 欧美一区二区三区日韩| 欧美精品久久久久久久多人混战 | 亚洲综合区在线| 视频在线观看一区二区三区| 美女精品自拍一二三四| 北岛玲一区二区三区四区| 欧美日韩另类一区| 国产精品毛片大码女人| 极品少妇xxxx偷拍精品少妇| 在线观看网站黄不卡| 国产精品久久久久久久第一福利 | 国产成人av影院| 欧美第一区第二区| 麻豆精品国产传媒mv男同| 欧美亚洲一区二区在线观看| 亚洲天堂免费在线观看视频| 色综合夜色一区| 亚洲精品成人悠悠色影视| 色综合天天综合色综合av| 综合网在线视频| 亚洲精品欧美激情| 99久久国产综合精品色伊| 色综合天天综合在线视频| 亚洲男同性视频| 欧美日韩一区二区三区免费看| 日韩精品成人一区二区在线| 欧美午夜理伦三级在线观看| 午夜天堂影视香蕉久久| 日韩免费电影网站| 日本中文字幕不卡| 国产综合色产在线精品| 国产精品丝袜一区| 欧美在线制服丝袜| 欧美aaaaaa午夜精品| 91精品国产全国免费观看| 韩国精品主播一区二区在线观看| 国产精品女上位| 欧美日韩成人综合天天影院| 国产精品国产三级国产aⅴ原创| 99这里只有精品| 日本在线不卡一区| 国产欧美一区二区精品久导航| 色综合久久综合网97色综合| 丝袜国产日韩另类美女| 久久精品亚洲精品国产欧美| 在线视频综合导航| 精品午夜一区二区三区在线观看| 国产精品久久久久桃色tv| www.日本不卡| 韩国视频一区二区| 国产精品综合一区二区| 一区二区三区成人| 日韩免费观看高清完整版| 在线免费精品视频| 在线视频一区二区三| 97精品久久久午夜一区二区三区 | 欧美亚洲高清一区| 成人在线综合网| 亚洲一区二区三区四区在线观看 | 麻豆免费看一区二区三区| 91精品国产欧美一区二区| av亚洲精华国产精华精华| 韩国欧美国产1区| 天天爽夜夜爽夜夜爽精品视频| 欧美国产精品久久| 日韩精品一区在线| 国产iv一区二区三区| 国产福利精品导航| 国产二区国产一区在线观看| 韩国av一区二区三区| 日本成人在线一区| 日本欧美在线观看| 久久国产精品无码网站| 99久久伊人久久99| 97精品久久久午夜一区二区三区 | 国产精品一区二区久激情瑜伽| 麻豆国产欧美日韩综合精品二区 | 另类成人小视频在线| 一区二区欧美视频| 亚洲国产成人精品视频| 综合色天天鬼久久鬼色| 中文字幕的久久| 中文字幕五月欧美| 中文字幕在线不卡| 日韩一区欧美一区| 夜夜嗨av一区二区三区网页 | 在线看国产一区| 91精品国产综合久久久久久 | 99久久免费精品| 91蝌蚪porny| 欧美大片日本大片免费观看| 久久久亚洲精品石原莉奈 | 色综合一个色综合亚洲| 91精品婷婷国产综合久久性色| 久久99精品一区二区三区| 性做久久久久久免费观看| 午夜精品久久一牛影视| 日本中文一区二区三区| 99久久久精品| 欧美一区日本一区韩国一区| 99久久久精品免费观看国产蜜| 久久综合久久综合九色| 日韩av一区二区在线影视| 国产午夜三级一区二区三| 亚洲理论在线观看| 国产.欧美.日韩| 91精品国产色综合久久不卡蜜臀| 欧美日韩视频专区在线播放| 中文字幕一区日韩精品欧美| 国产电影一区在线| 欧美精品v国产精品v日韩精品| 国产精品久久久久久久久免费丝袜| 理论电影国产精品| 91精品在线观看入口| 欧美成人a视频| 中文字幕一区二区三区四区| 欧美成人精精品一区二区频| 亚洲大片免费看| 欧美日韩不卡视频| 蜜臀久久久99精品久久久久久| 欧美丝袜丝交足nylons| 亚洲精品视频在线观看网站| av资源网一区| 国产精品九色蝌蚪自拍| 国产在线播精品第三| 在线电影国产精品| 午夜精品影院在线观看| 欧美日韩免费不卡视频一区二区三区| 亚洲美女区一区| 欧美另类videos死尸| 蜜桃视频第一区免费观看| 久久综合九色综合欧美亚洲| 石原莉奈一区二区三区在线观看| 色偷偷88欧美精品久久久| 成人av午夜电影| 精品午夜一区二区三区在线观看| 国产在线不卡一卡二卡三卡四卡| 亚洲精品久久久久久国产精华液| 成人app网站| 精品粉嫩aⅴ一区二区三区四区| 久久99国产精品久久99果冻传媒| 国产精品久久久久aaaa樱花| 在线免费av一区| 欧美aⅴ一区二区三区视频| 久久久久国产精品人| 国产成人aaa| 亚洲aaa精品| 亚洲精品老司机| 亚洲精品老司机| 欧美一区二区三区啪啪| 大桥未久av一区二区三区中文| 久久九九影视网| 日本欧美一区二区| 一区二区三区在线免费视频| 欧美国产精品中文字幕| 国产精品久久久久影院| 香蕉av福利精品导航| 亚洲国产精品二十页| 国产亚洲精品bt天堂精选| 精品欧美一区二区久久| 欧美日精品一区视频| 欧美亚洲图片小说|