springmvc 自定義註解

 

1. 自定義一個註解html

@Documented //文檔生成時,該註解將被包含在javadoc中,可去掉
@Target(ElementType.METHOD)//目標是方法 
@Retention(RetentionPolicy.RUNTIME) //註解會在class中存在,運行時可經過反射獲取 
@Inherited
public @interface AuthLoginAnnotation {
  /**
     * 檢查是否已登陸(註解的參數
     *

     * @return true-檢查;默認不檢查爲false
     */
boolean check() default false; }

  • 註解方法不能有參數。
  • 註解方法的返回類型侷限於原始類型,字符串,枚舉,註解,或以上類型構成的數組。
  • 註解方法能夠包含默認值。
  • 註解能夠包含與其綁定的元註解,元註解爲註解提供信息,有四種元註解類型:
 
 

  1. @Documented – 表示使用該註解的元素應被javadoc或相似工具文檔化,它應用於類型聲明,類型聲明的註解會影響客戶端對註解元素的使用。若是一個類型聲明添加了Documented註解,那麼它的註解會成爲被註解元素的公共API的一部分。java

 
 

  2. @Target – 表示支持註解的程序元素的種類,一些可能的值有TYPE, METHOD, CONSTRUCTOR, FIELD等等。若是Target元註解不存在,那麼該註解就能夠使用在任何程序元素之上。web

 
 

  3. @Inherited – 表示一個註解類型會被自動繼承,若是用戶在類聲明的時候查詢註解類型,同時類聲明中也沒有這個類型的註解,那麼註解類型會自動查詢該類的父類,這個過程將會不停地重複,直到該類型的註解被找到爲止,或是到達類結構的頂層(Object)。spring

 
 

  4. @Retention – 表示註解類型保留時間的長短,它接收RetentionPolicy參數,可能的值有SOURCE(源文件中起做用), CLASS, 以及RUNTIME(保留到運行時起做用)。數組

 

 

2. 定義一個相應的攔截器,在springMVC配置文件中進行配置mvc

  攔截器:app

  spring爲咱們提供了org.springframework.web.servlet.handler.HandlerInterceptorAdapter這個適配器,繼承此類,能夠很是方便的實現本身的攔截器。ide

       能夠根據咱們的須要重寫preHandle(預處理)、postHandle後處理(調用了Service並返回ModelAndView,但未進行頁面渲染)afterCompletion返回處理(已經渲染了頁面)工具

 

public class AuthLoginInteceptor extends HandlerInterceptorAdapter {
    @Autowired
    UserInfoService userInfoService ;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { HandlerMethod methodHandler=(HandlerMethod) handler; AuthCheckAnnotation auth=methodHandler.getMethodAnnotation(AuthCheckAnnotation.class);      //若是@AuthLoginAnnotation (check=false) 這裏的auth爲false,即不用進行攔截驗證,@AuthCheckAnnotation默認爲前面定義的true   if(auth!=null&&!auth.check()){ if(!isLogin(request)){
        request.getRequestDispatcher("login.do").forward(request, response);
        return false;

       }
}      return true; } }

 

3. 在springMVC.xml文件中添加攔截器post

   <mvc:interceptors>
            <mvc:interceptor>
            <mvc:mapping path="/*.do"  />
            <bean  class="com.k.common.interceptor.AuthLoginInteceptor "/>        
        </mvc:interceptor>
    </mvc:interceptors>

 

4. 在springMVC controller中使用實例

    @AuthLoginAnnotation(check=true)
    @RequestMapping("tomember.do")
    @ResponseBody
    public Object toMember(HttpServletRequest request,HttpServletResponse response){
        .......
        return Ret.toJson(responseBody);
    }

 

 參考一篇ImportNew中簡單講解JAVA註解的文章:http://www.importnew.com/14479.html

相關文章
相關標籤/搜索