一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - spring aop 攔截業(yè)務(wù)方法,實現(xiàn)權(quán)限控制示例

spring aop 攔截業(yè)務(wù)方法,實現(xiàn)權(quán)限控制示例

2020-07-26 14:51云在青山 Java教程

這篇文章主要介紹了spring aop 攔截業(yè)務(wù)方法,實現(xiàn)權(quán)限控制示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下。

難點:aop類是普通的java類,session是無法注入的,那么在有狀態(tài)的系統(tǒng)中如何獲取用戶相關(guān)信息呢,session是必經(jīng)之路啊,獲取session就變的很重要。思索很久沒有辦法,后來在網(wǎng)上看到了解決辦法。

思路是:

i. SysContext  成員變量 request,session,response 

ii. Filter 目的是給 SysContext 中的成員賦值 

iii.然后在AOP中使用這個SysContext的值

要用好,需要理解  ThreadLocal和  和Filter 執(zhí)行順序

1.aop獲取request,response,session等

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class SysContext {
  private static ThreadLocal<HttpServletRequest> requestLocal=new ThreadLocal<HttpServletRequest>();
  private static ThreadLocal<HttpServletResponse> responseLocal=new ThreadLocal<HttpServletResponse>();
  
  public static HttpServletRequest getRequest(){
   return requestLocalget();
  }
  
  public static void setRequest(HttpServletRequest request){
   requestLocalset(request);
  }
  
  public static HttpServletResponse getResponse(){
   return responseLocalget();
  }
  
  public static void setResponse(HttpServletResponse response){
   responseLocalset(response);
  }
  
  public static HttpSession getSession(){
   return (HttpSession)(getRequest())getSession();
  }
 }

2.添加過濾器

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class GetContextFilter implements Filter{
 
  @Override
  public void destroy() {
   
  }
 
  @Override
  public void doFilter(ServletRequest request, ServletResponse response,
    FilterChain chain) throws IOException, ServletException {
   SysContextsetRequest((HttpServletRequest)request);
   SysContextsetResponse((HttpServletResponse)response);
   chaindoFilter(request, response);
  }
 
  @Override
  public void init(FilterConfig config) throws ServletException {
   
  }
 
 }

3.配置web.xml 

將這部分放置在最前面,這樣可以過濾到所有的請求

?
1
2
3
4
5
6
7
8
9
<filter>
  <filter-name>sessionFilter</filter-name>
  <filter-class>comuneifilterGetContextFilter</filter-class>
 </filter>
 
 <filter-mapping>
  <filter-name>sessionFilter</filter-name>
  <url-pattern>*</url-pattern>
 </filter-mapping>

4.spring aop before

從session中取出用戶名,如果不存在,拋出異常跳轉(zhuǎn),將錯誤信息放到request中

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
@Aspect
 public class AdminAspect {
  ActionContext context = ActionContextgetContext();
  HttpServletRequest request;
  HttpServletResponse response;
 
  @Before("execution(* comuneiActionAdminActiongetPrivileges())")
  public void adminPrivilegeCheck()
    throws Throwable {
   HttpSession session = SysContextgetSession();
   request = SysContextgetRequest();
   response = SysContextgetResponse();
   String userName = "";
   
   try {
    userName = sessiongetAttribute("userName")toString();
    if(userName==null||userNameequals(""))
     throw new Exception("no privilege");
   } catch (Exception ex) {
    requestsetAttribute("msg", "{\"res\":\"" + "無權(quán)限" + "\"}");
    try {
     requestgetRequestDispatcher("/jsp/jsonjsp")forward(
       request, response);
    } catch (ServletException e) {
     eprintStackTrace();
    } catch (IOException e) {
     eprintStackTrace();
    }
   }
  }
 }

5.applicationContext.xml

?
1
<bean id="adminAspect" class="comuneiaopAdminAspect"></bean>

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:http://www.cnblogs.com/yxy2016/articles/5508114.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 果冻传媒在线播放观看w | 国产三级精品三级男人的天堂 | 亚洲精品在线看 | 手机看片国产免费久久网 | 午夜伦伦电影理论片费看 | 亚洲欧美日韩另类在线 | 国模娜娜一区二区三区 | 2019aw网站| 国产精品久久毛片蜜月 | 久久黄色小视频 | 国产91一区二区在线播放不卡 | 午夜一区二区福利视频在线 | 精品手机在线视频 | 四虎麻豆国产精品 | 80日本xxxxxxxxx | 鞋奴的视频VK | 国产欧美国产综合第一区 | 国产成人亚洲精品91专区高清 | 91最新高端约会系列178 | 午夜大片在线观看 | 惩罚美女妲己的尤老师 | 双性总裁被调教1v1 双性双根 | 天天操精品| 免费看男女做好爽好硬视频 | 91短视频在线观看2019 | 成熟女人50岁一级毛片不卡 | 欧美一级专区免费大片 | 啊好大好粗 | 性柔术xxxhd| 俄罗斯美女大逼 | 国产精品成人一区二区 | 免费超级乱淫视频播放性 | 91九色丨porny丨制服 | 欧洲第一区第二区第三区 | 国产a一级毛片午夜剧院 | 亚洲欧美国产精品完整版 | 5g在线观看 | 四虎精品在线视频 | 国产成人一区二区三区视频免费蜜 | 太深了 太粗h1v1 | 99精品国产高清一区二区三区香蕉 |