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

服務(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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产午夜精品久久久久小说 | 欧美成人一区二区三区 | 污污美女| 国产精品一区二区不卡的视频 | 国产图片综合区 | 99热精品在线播放 | 操双性人 | 2018高清国产一道国产 | 99久久爱热6在线播放 | 日本wwxx护士 | 美女露尿口 | 免费看日本| 欧美最猛性xxxxx男男 | 国产在线一区二区杨幂 | 国产福利在线免费观看 | 美女被扒开屁股进去网 | 国语刺激对白勾搭视频在线观看 | 女仆色网址 | 国产精品www夜色影视 | 天堂va在线| 精品夜夜澡人妻无码AV蜜桃 | 大肚孕妇的高h辣文 | 嫩草影院永久入口在线观看 | 成年看片免费高清观看 | 午夜国产在线视频 | 欧美乱子伦xxxx12在线 | 美女在线看永久免费网址 | 久久精品国产亚洲AV天美18 | 果冻传媒新在线观看免费 | 亚洲美女人黄网成人女 | 免费看全黄特黄毛片 | 国产香蕉97碰碰在线视频 | 国产在线视频色综合 | 亚洲一级特黄特黄的大片 | 日韩精品视频美在线精品视频 | 973影院 | 亚洲国产美女精品久久久久 | 亚洲福利一区二区三区 | 1024国产看片在线观看 | 欧美整片完整片视频在线 | 午夜福利电影网站鲁片大全 |