<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 傻 瓜 閱讀(1725) 評論(0)  編輯  收藏 所屬分類: 雜項

    導航

    統計

    常用鏈接

    留言簿(7)

    我參與的團隊

    隨筆分類

    隨筆檔案

    文章分類

    友情鏈接

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 狼友av永久网站免费观看| 四虎在线最新永久免费| 亚洲AV中文无码乱人伦在线视色| 亚洲性色高清完整版在线观看| 99精品视频在线观看免费专区| 久久亚洲精品无码| 香蕉成人免费看片视频app下载| 亚洲Av永久无码精品三区在线| 男女一边桶一边摸一边脱视频免费 | 日韩精品无码免费一区二区三区 | 亚洲精品国产成人专区| 99re免费在线视频| 亚洲一级毛片免费看| 毛片免费全部免费观看| 亚洲AV无码成人精品区日韩| 免费a级毛片在线观看| 精品一区二区三区免费视频| 亚洲线精品一区二区三区影音先锋| 三上悠亚在线观看免费| 亚洲国产精品久久久久婷婷软件| 亚洲视频免费一区| 亚洲国产成人AV在线播放| 亚洲AV无码乱码在线观看牲色 | 3344免费播放观看视频| 亚洲中文精品久久久久久不卡| 日产乱码一卡二卡三免费| 一级成人生活片免费看| 亚洲国产精品一区二区久久| 免费人成网站在线观看10分钟| 老牛精品亚洲成av人片| 亚洲精品无码国产| 国产h视频在线观看免费| MM1313亚洲精品无码久久| 国产亚洲免费的视频看| 国语成本人片免费av无码| 一级a性色生活片久久无少妇一级婬片免费放 | 亚洲不卡中文字幕无码| 男人的好看免费观看在线视频| 精品视频免费在线| 精品亚洲A∨无码一区二区三区| 免费无码成人AV片在线在线播放|