多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > 利用SpringMVC攔截器控制Controller返回值

利用SpringMVC攔截器控制Controller返回值

來源:程序員人生   發布時間:2014-10-10 08:00:00 閱讀次數:2715次

    背景:需求是在Controller中方法沒有實現時,返回模擬結果。主要用于項目初期前臺跟后臺的交互,Web項目就是在前臺發出請求然后后臺響應并返回結果。本示例利用攔截器和注解實現跳過執行方法直接返回定義結構的功能。

    通過定義一個StringResult注解,在訪問方法的時候返回StringResult中的內容。通過Debug注解來定義方法是否要返回StringResult中的內容。

Debug默認為TRUE

package com.tiamaes.dep.annotation; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface Debug { boolean value() default true; }


package com.tiamaes.dep.annotation; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface StringResult { String value(); }
定義好注解之后寫攔截器類,攔截器需要實現HandlerInterceptor

package com.tiamaes.dep.interceptor; import java.io.PrintWriter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import com.tiamaes.dep.annotation.Debug; import com.tiamaes.dep.annotation.StringResult; public class DebugInterceprot implements HandlerInterceptor { private boolean debug = true; public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //首先判斷是否是Debug模式(全局),如果否則使攔截器失效 if(!this.debug) return true; if(handler instanceof HandlerMethod){ HandlerMethod method = (HandlerMethod)handler; Debug isDebug = method.getMethodAnnotation(Debug.class); StringResult stringResult = method.getMethodAnnotation(StringResult.class); //如果沒有@StringResult注解則跳過攔截 //判斷方法上注解的Debug值,如果否則不攔截 if(stringResult==null||(isDebug !=null && isDebug.value() == false)){ return true; }else{ //攔截方法,并將stringResult中的內容返回給前臺 PrintWriter out = response.getWriter(); out.print(stringResult.value()); } } return false; } public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { // TODO Auto-generated method stub } public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // TODO Auto-generated method stub } public boolean isDebug() { return debug; } public void setDebug(boolean debug) { this.debug = debug; } }
XML配置

<mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**"/> <bean class="com.tiamaes.dep.interceptor.DebugInterceprot"> <property name="debug" value="true"/> </bean> </mvc:interceptor> </mvc:interceptors>
Controller中的寫法

package com.tiamaes.dep.system.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import com.tiamaes.dep.annotation.Debug; import com.tiamaes.dep.annotation.StringResult; @Controller @RequestMapping("/test") public class AspectTestController { @RequestMapping("/1") @ResponseBody //@Debug(false) @StringResult("Interceptor") public String test1(){ return "The controller request!"; } }
此方法可用以在控制器中的方法沒有寫好的時候進行前臺功能的測試,思路大概如此,更加強大的功能需要各位大神們開發。這個只是我的突發奇想,并沒有實際在項目中試過。如果有人在項目中試了請告訴我效果,謝謝。

如果有人用了,建議保留StringResult注解,因為這個注解可以讓你知道你的方法要返回一個什么樣的結果。

敏捷是一條很長的路,摸索著前進著!!






生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 欧美性猛交99久久久久99 | 99日韩精品| 九九精 | 永久免费精品视频 | 欧美性生交xxxxx久久久 | 社区天堂 | 中文国产成人精品久久96 | 波多野结衣一区二区三区四区 | 国产一区视频在线播放 | 最近最新中文字幕免费大全3 | 日本特黄特色大片免费播放视频 | 亚洲在线中文字幕 | 国产成人精品福利网站人 | 亚洲欧洲日本天天堂在线观看 | 国产一级做a爰大片免费久久 | 免费一区二区三区 | 欧美在线一二三区 | 国产精品女人在线观看 | 久久综合精品国产一区二区三区无 | 欧美成人一区二区 | 98国内自拍在线视频 | 亚洲久久久久久久 | 欧美一区二区在线观看视频 | 国产精品亚洲专一区二区三区 | 久久精品二区 | 国产视频一二三区 | 夜趣第一宅男福社区国产 | 精品国产一区二区三区久久 | 欧美一区二区在线观看免费网站 | 欧美日韩亚洲精品一区 | 精品国产免费一区二区三区五区 | 亚洲三级精品 | 永久免费视频网站在线观看 | 成人亚洲国产精品久久 | 中文字幕亚洲综合久久2 | 网站在线观看免费视频 | 亚洲第一在线视频 | 久久久久亚洲精品影视 | 国产精品亚洲精品观看不卡 | 国产成人综合亚洲欧美在 | 九九亚洲 |