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

    導航

    統計

    常用鏈接

    留言簿(7)

    我參與的團隊

    隨筆分類

    隨筆檔案

    文章分類

    友情鏈接

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 色偷偷亚洲第一综合网| 亚洲第一成年人网站| 久久人午夜亚洲精品无码区| 成年女人18级毛片毛片免费| 亚洲午夜无码久久| 好吊妞视频免费视频| 亚洲国产精品久久人人爱| 精品国产免费人成电影在线观看| 亚洲综合色丁香麻豆| 免费专区丝袜脚调教视频| 久久亚洲精品国产精品婷婷| 午夜成人免费视频| 免费VA在线观看无码| 亚洲综合无码精品一区二区三区 | 免费观看黄色的网站| 亚洲妓女综合网99| 中国在线观看免费高清完整版| 激情综合亚洲色婷婷五月APP| 午夜a级成人免费毛片| 黄色毛片视频免费| 亚洲av无码专区国产乱码在线观看| 久久狠狠躁免费观看| 亚洲久悠悠色悠在线播放| 国产成人精品免费直播| 中文字幕免费视频精品一| 亚洲人成网站在线播放影院在线| 美女视频黄是免费的网址| 春暖花开亚洲性无区一区二区| 国产AⅤ无码专区亚洲AV| 91在线手机精品免费观看| 亚洲午夜无码久久久久小说| 亚洲精品NV久久久久久久久久| 麻豆精品不卡国产免费看| 国产人成亚洲第一网站在线播放| 免费v片在线观看无遮挡| 人人揉揉香蕉大免费不卡| 亚洲熟妇AV一区二区三区宅男| 日韩精品亚洲aⅴ在线影院| 久久久久久免费视频| 一个人免费观看日本www视频| 亚洲第一香蕉视频|