最开始一直不去自定配置类,究其缘由发现是少了:html
/** * Shiro配置类 */ @Configuration
少了@Configuration,这个注解配置。java
一路顺畅的走了下来:面试
是否是要美滋滋的走上康庄大道了呢?ide
发现:code
anon,匿名放行机制无论用哦。怎么回事呢?
修改为了:htm
//放行页面; filterMap.put("/testThymeLeaf","anon"); //拦截某个目录下的全部页面; filterMap.put("/*","authc");
再配置shiro的时候,以下代码要注意:blog
一、下述代码中必须是LinkedHashMap 而不能是HashMap。get
二、anon定义必须在authc以前数学
不然anon定义不生效it
怎么还不行呢?
anon配置的匿名路径被拦截
主要缘由:配置过滤器集合时使用了HashMap
Map<String,String> filterMap=new HashMap<>();
正确代码以下:应该使用LinkedHashMap
Map<String,String> filterMap=new LinkedHashMap<>();
面试题时刻:
为何这里用LinkedHashMap?
划重点了:
(一)HashMap取值--->不是按照插入顺序
HashMap<String,Integer> hm=new HashMap<String, Integer>(); hm.put("大学语文",3); hm.put("英语",1); hm.put("音乐鉴赏",5); hm.put("数学",2); hm.put("形式政策",4); for (Map.Entry<String ,Integer> entry:hm.entrySet()){ System.out.println(entry.getKey()+" : "+entry.getValue()); }
(二):LinkedHashMap的取值--->是按照插入取值
LinkedHashMap<String,Integer> lhm=new LinkedHashMap<String,Integer>(); lhm.put("化学",1); lhm.put("生物",2); lhm.put("物理",3); lhm.put("语文",4); lhm.entrySet(); for (Map.Entry<String,Integer> entry:lhm.entrySet()){ System.out.println(entry.getKey()+" : "+entry.getValue()); }