<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    java隨記

    堅持就是勝利!

     

    springboot中action綁定ServletRequest的attirbute的值傳參

    有些時候需要在后臺處理一封裝一些參數送到action中便于業務處理.比于app中的token驗證,
    根據token查找到對應的用戶信息。比如分布式框架中獲取用戶信息等.springboot中可以自
    定義參數解析器來綁定參數,通過它可以拿到ServletRequest中的attirbute中的值進行參數
    綁定。

    自定義一個annotation,通過這個注解中的 name查找attribute中的key對應的值 

    import java.lang.annotation.ElementType;
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
    import java.lang.annotation.Target;
    @Target(ElementType.PARAMETER)
    @Retention(RetentionPolicy.RUNTIME)
    public @interface AttributeResolve {
    String name() default "user";
    }

    自定義一個解析器類

    import javax.servlet.http.HttpServletRequest;
    import org.springframework.core.MethodParameter;
    import org.springframework.web.bind.support.WebDataBinderFactory;
    import org.springframework.web.context.request.NativeWebRequest;
    import org.springframework.web.method.support.HandlerMethodArgumentResolver;
    import org.springframework.web.method.support.ModelAndViewContainer;
    public class AttributeArgumentResolver implements HandlerMethodArgumentResolver{
    @Override
    public Object resolveArgument(MethodParameter arg0, ModelAndViewContainer arg1, NativeWebRequest arg2,
    WebDataBinderFactory arg3) throws Exception {
    // TODO Auto-generated method stub
    Object resultObj=null;
     AttributeResolve mp =  arg0.getParameterAnnotation(AttributeResolve.class);
     if(mp!=null) {
    String attributeName= mp.name();
    HttpServletRequest request = arg2.getNativeRequest(HttpServletRequest.class);
    resultObj = request.getAttribute(attributeName);
     }
    return resultObj;
    }
    @Override
    public boolean supportsParameter(MethodParameter arg0) {
    // TODO Auto-generated method stub
    return  arg0.hasParameterAnnotation(AttributeResolve.class);
    }

    springboot中注冊自定義的參數解析器
    @Configuration
    public class MyWebMvcConfig extends WebMvcConfigurerAdapter{
    public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
            argumentResolvers.add(new AttributeArgumentResolver());
        }
    }


    使用方法.
    需要在action調用前向HttpServletRequest中的attribute中注入值 ,可以自定義一個filter,在filter中進行處理
    如在filter中處理app傳過來的token驗證后取得對應的用戶信息等.下面例子簡單放入一個對象
    @WebFilter(filterName = "axssFilter", urlPatterns = "/*",
    initParams = {
    @WebInitParam(name = "ignores", value = "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*")// 忽略資源
    }
    )
    public class XssFilter implements javax.servlet.Filter{
    private Set<String> prefixIignores = new HashSet<String>();
    @Override
    public void destroy() {
    // TODO Auto-generated method stub
    }
    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
    throws IOException, ServletException {
    // TODO Auto-generated method stub
    HttpServletRequest request = (HttpServletRequest) req;
    HttpServletResponse response = (HttpServletResponse) res;
                Blogger user = new Blogger();
              user.setUsername("asfdasdf");
             request.setAttribute("user", user);
                   chain.doFilter(request, response);  
    }
    }

    action獲取attribute中放入的對象
            @RequestMapping("/index")
    public String index(@AttributeResolve(name="user") Bloggerbh, HttpServletRequest request,Model model) 

    嗯,還算優雅


    posted on 2017-09-29 11:58 傻 瓜 閱讀(1708) 評論(0)  編輯  收藏 所屬分類: 雜項

    導航

    統計

    常用鏈接

    留言簿(7)

    我參與的團隊

    隨筆分類

    隨筆檔案

    文章分類

    友情鏈接

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 在线看免费观看AV深夜影院| 美女巨胸喷奶水视频www免费| 在线观看H网址免费入口| 久久亚洲一区二区| 在线观看特色大片免费网站| 亚洲AV无码乱码在线观看富二代| 久久国产精品国产自线拍免费| 亚洲精品乱码久久久久久| 中文字幕无码免费久久| 亚洲国产精品久久久久网站| 99精品视频免费在线观看| 中文字幕亚洲综合久久2| 日本免费xxxx| 亚洲日韩精品A∨片无码加勒比| 日韩激情淫片免费看| 国产成人综合亚洲| 在线观看亚洲精品福利片| 成全视频免费观看在线看| 亚洲黄色网址在线观看| 女人18毛片水真多免费看| 全部在线播放免费毛片| 亚洲人成人无码网www电影首页| 日韩午夜理论免费TV影院 | 国产啪亚洲国产精品无码| 久久www免费人成看国产片| 久久亚洲精品无码AV红樱桃| 美女视频黄是免费的网址| 国产亚洲精品欧洲在线观看| 在线a亚洲v天堂网2019无码| 最近中文字幕免费mv在线视频| 日韩亚洲人成在线| 亚洲综合色在线观看亚洲| 99久久人妻精品免费一区| 久久亚洲精品11p| 国产午夜亚洲精品午夜鲁丝片| 69xx免费观看视频| 特a级免费高清黄色片| 亚洲精品福利网泷泽萝拉| 国产一区二区免费在线| 无码A级毛片免费视频内谢| 国产精品亚洲专区无码唯爱网|