由SpringMVC中的Controller註解@RequestMapping引發的思考
<span style="font-family:Times New Roman;">package thinkinginjava; import java.lang.reflect.*; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class UseCaseTracker { public static void trackUseCases(List<Integer> useCases, Class<?> cl) { for (Method m : cl.getDeclaredMethods()) { System.out.println(m.toString()); UseCase uc = m.getAnnotation(UseCase.class); if (uc != null) { System.out.println("Found Use Case : " + uc.id() + " " + uc.description()); if(uc.id() == 48){ try { Object pwdu = cl.newInstance(); System.out.println(cl.isInstance(pwdu)); System.out.println(m.invoke(pwdu, "jichenxiao")); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } } useCases.remove(new Integer(uc.id())); } } for(int i : useCases){ System.out.println("Warning: Missing Use Case - " + i); } } public static void main(String[] args){ List<Integer> useCases = new ArrayList<Integer>(); Collections.addAll(useCases, 47,48,49); trackUseCases(useCases, PasswordUtils.class); } }</span><span style="font-family:Microsoft YaHei;"> </span>
上述程式中使用了反射,getDeclaredMethods()和getAnnotation()均屬於AnnotationElement介面(Class、Method和Filed等類都實現了該介面)。通過getDeclaredMethod()返回類中的方法,型別為Method,然後再使用getAnnotation()返回UseCase註解物件。如果被註解的方法中沒有該型別的註解,則返回null。通過id()和description()方法從UseCase中提取元素的值。通過註解命中一個方法,並使用invoke()去呼叫該方法。最終的輸出結果為:
相關推薦
由SpringMVC中的Controller註解@RequestMapping引發的思考
<span style="font-family:Times New Roman;">package thinkinginjava; import java.lang.reflect.*; import java.util.ArrayList; import java.util.Collecti
SpringMVC中@Controller和@RequestMapping用法和其他常用註解
一、簡介 在SpringMVC 中,控制器Controller 負責處理由DispatcherServlet 分發的請求,它把使用者請求的資料經過業務處理層處理之後封裝成一個Model ,然後再把該Model 返回給對應的View 進行展示。在Spring
SpringMVC中@Controller和@RequestMapping用法
fff set blank content block 方法 封裝 keyword 屬性 一、簡介 在SpringMVC 中,控制器Controller 負責處理由DispatcherServlet 分發的請求,它把用戶請求的數據經過業務處理層處理之後封裝
SpringMVC中controller入參接收部分註解簡單介紹
RequestHeader:@RequestHeader 註解,可以把Request請求header部分的值繫結到方法的引數上。 public void getAccountByOpenId(@RequestHeader("id") String id){}; api:
【SpringMVC】@Controller和@RequestMapping註解說明
一、@Controller註解 1、說明: 用於指示Spring類的例項是一個控制器,控制器可以支援同時處理多個請求動作。 2、保證Spring能找到控制器: (1)在SpringMVC的配置檔案的標頭檔案中引入spring-context (2)使用
SpringMVC中Controller的@ResponseBody註解分析
需求分析:需要 利用 out 物件返回給財付通是否接收成功 。那麼將需要如下程式碼: /** * 返回處理結果給財付通伺服器。 * @param msg: Success or fail。 * @throws IOExcepti
由SpringMVC中RequetContextListener說起
listener attribute 請求 bool 程序 div n) https 操作 零、引言 RequetContextListener從名字結尾Listener來看就知道屬於監聽器。 所謂監聽器就是監聽某種動作,在其開始(初始化)和結束(銷毀)的時候進行
SpringMVC中controller返回json數據的兩種方法
rac new enter req imp 工具 response 返回 basepath SpringMVC中controller返回json數據的兩種方法 1.jsp的ajax請求: function getJson(){ $.ajax({ t
springMVC中的註解@RequestParam與@PathVariable的區別
actor nal lencod mat 控制 關系 tor oid 沒有 @PathVariable綁定URI模板變量值 @PathVariable是用來獲得請求url中的動態參數的 @PathVariable用於將請求URL中的模板變量映射到功能處理方法的參數上。//配
關於SpringMVC中Controller接口的三種實現類的使用與說明
resolv term strac editor 服務 xml配置 數據加載 edi add 要說Controller接口的實現類使用與說明之前,先簡要說明一下SpringMVC的工作原理。 ①客戶端發出一個請求,web服務器接受了這個請求後,就會與web.xml中配置的D
詳解SpringMVC中Controller的方法中參數的工作原理
使用 extc component 格式 cab swa sse 字符串 logs Spring MVC中Controller的處理方法的參數可以是Integer,String,自定義對象,ServletRequest,ServletResponse,ModelAndVie
springmvc中@requestbody註解接收請求引數
一、POST請求的四種常用方式 1、application/x-www-form-urlencoded 瀏覽器原生的表單,值為urlencoded之後的 key1=value1&key2=value2...... 2、multipart/form-data
springmvc中@requestbody註解接收請求參數
pri 傳輸 四種 文件表 multi post 傳輸文件 解析json 方式 一、POST請求的四種常用方式 1、application/x-www-form-urlencoded 瀏覽器原生的表單,值為urlencoded之後的 key1=value1&a
SpringBoot,Spring 中常用註解@RequestMapping/@GetMapping/@PostMapping /@PutMapping/@DeleteMapping介紹
1、@Controller @Controller 用來響應頁面,表示當前的類為控制器。 2、@RestController @RestController 是@ResponseBody和@Controller的結合 表明當前類是控制器且返回的是一
SpringMVC中controller接收Json資料
1.jsp頁面傳送ajax的post請求: function postJson(){ var json = {“username” : “imp”, “password” : “123456”}; $.ajax({ type : “post”, url : “<%=bas
【SpringMVC】2. 註解@RequestMapping的使用
注意!!! 此文章需要配置了SpringDispatcherServlet和InternalResourceViewResolver才能夠使用,如果不會配置,請翻看我【SpringMVC】系列的第一篇文章《【SpringMVC】1. SpringMVC的第一個程
SpringMVC中controller接收Json資料(重要)!
SpringMVC中controller接收Json資料 1.jsp頁面傳送ajax的post請求: function postJson(){ var json = {"username" : "imp", "password" : "123456"};
SpringMVC中@ModelAttribute註解的作用
[email protected]註釋void返回值的方法 [java] view plain copy print? @Controller public class HelloModelController { @Mo
springmvc中Controller方法的返回值
圖解 action ons 轉發 mod dispatch 結果 oid 請求轉發 1.1 返回ModelAndView controller方法中定義ModelAndView對象並返回,對象中可添加model數據、指定view。 1.2 返回void 在contr
使用jodd form簡化SpringMVC中Controller的配置
Jodd是一個開源專案,,有一個好用的jsp標籤,可以大大簡化有表單輸入的controller。 使用Jodd的優點: <!--[if !supportLists]-->1.<!--[endif]-->簡化和統一controller,拋棄extend