国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|正則表達式|

服務器之家 - 編程語言 - JAVA教程 - struts2如何使用攔截器進行用戶權限控制實例

struts2如何使用攔截器進行用戶權限控制實例

2020-09-27 15:50阿木俠 JAVA教程

本篇文章主要介紹了struts2如何使用攔截器進行用戶權限控制實例,非常具有實用價值,需要的朋友可以參考下

大多數網站會設置用戶權限,如過濾非法用戶,用戶不登錄時不能進行訪問,或者設置訪問的權限,如部分內容僅對VIP開放等等,這些權限的控制都可以用struts2中的攔截器來實現。

下面通過一個簡單的Demo來模擬這種用戶權限控制的實現流程,設定三種不同身份的用戶,commen為普通用戶,VIP為會員用戶,還有一種admin為管理員。

先看一下Demo的整體結構:

struts2如何使用攔截器進行用戶權限控制實例

首先搭建struts2框架的開發環境(前面博客中有介紹),環境搭建完之后又再看一看如何配置struts.xml:

?
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
32
33
34
35
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
 "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
 <package name="hello" extends="struts-default" namespace="/">
  <interceptors>
   <interceptor name="testInterceptor" class="org.interceptor.InterceptorTest"></interceptor>
   <!-- 一個攔截器棧中可以定義多個攔截器 -->
   <interceptor-stack name="testStack">
    <interceptor-ref name="testInterceptor" />
    <interceptor-ref name="defaultStack" />
   </interceptor-stack>
  </interceptors>
  <!--全局結果處理 -->
  <global-results>
   <result name="error">/Error.jsp</result>
  </global-results>
  <action name="login" class="org.interceptor.LoginAction">
   <result>/WEB-INF/pages/index.jsp</result>
  </action>
  <action name="admin" class="org.interceptor.LoginAction" method="AdminExecute">
   <interceptor-ref name="testStack"></interceptor-ref>
   <result>/WEB-INF/pages/admin.jsp</result>
  </action>
  <action name="vip" class="org.interceptor.LoginAction" method="vipExecute">
   <interceptor-ref name="testStack"></interceptor-ref>
   <result>/WEB-INF/pages/vipUser.jsp</result>
  </action>
  <action name="commen" class="org.interceptor.LoginAction" method="commenExecute">
   <interceptor-ref name="testStack"></interceptor-ref>
   <result>/WEB-INF/pages/commen.jsp</result>
  </action>
 </package>
</struts>

 其中,<global-results></global-results>是全局的result,有很多時候一個<result>可供很多<action>使用,這時可以使用<global-results>標簽來定義全局的<result>。執行順序:當一個Action返回的String沒有相應的<result>與之對應,Struts2就會查找全局的<result>,所以本次模擬測試中不符合條件被攔截的請求都會轉到error.jsp。

Action類,不做處理,全部放行,讓攔截器處理:

?
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
public class LoginAction implements SessionAware{
 @SuppressWarnings("unused")
 private String username;
 private Map<String,Object> session;
 public void setUsername(String username) {
  this.username = username;
  session.put("username", username);
 }
 public void setSession(Map<String, Object> session) {
  // TODO Auto-generated method stub
  this.session = session;
 }
  
 public String AdminExecute(){
  return "success";
 }
 public String vipExecute(){
  return "success";
 }
 public String commenExecute(){
  return "success";
 }
 public String execute(){
  return "success";
 }
}

Inteceptor(攔截器類):

?
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
public class LoginAction implements SessionAware{
 @SuppressWarnings("unused")
 private String username;
 private Map<String,Object> session;
 public void setUsername(String username) {
  this.username = username;
  session.put("username", username);
 }
 public void setSession(Map<String, Object> session) {
  // TODO Auto-generated method stub
  this.session = session;
 }
  
 public String AdminExecute(){
  return "success";
 }
 public String vipExecute(){
  return "success";
 }
 public String commenExecute(){
  return "success";
 }
 public String execute(){
  return "success";
 }
}

 只是 模擬攔截器的實現思路,沒有持久層的數據,這里的方法是使用invocation.getProxy().getActionName()方法來獲取struts.xml中配置的action名稱,和用戶表單提交的名稱做對比,如果輸入的用戶名是以action名開頭的,就放行,否則攔截。

登錄jsp:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
 <base href="<%=basePath%>" rel="external nofollow" rel="external nofollow"
 <title>login</title>
 </head>
 
 <body>
 <form action="login.action">
  <input type="text" name="username"/>
  <input type="password" name="password"/>
  <input type="submit" value="login">
 </form>
 </body>
</html>

攔截后跳轉頁:

?
1
2
3
<body>
 <h4>你的權限不足,請先升級權限...</h4>
 </body>

訪問資源代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
 <base href="<%=basePath%>" rel="external nofollow" rel="external nofollow" >
 <title>index</title>
 </head>
 
 <body>
 <a href="admin.action" rel="external nofollow" >admin</a><br/>
 <a href="vip.action" rel="external nofollow" >vip</a><br/>
 <a href="commen.action" rel="external nofollow" >commen</a>
 </body>
</html>

其余admin.jsp等界面沒有內容,只是為了區分實現跳轉頁面不同。

運行結果:

使用commen角色登錄:

struts2如何使用攔截器進行用戶權限控制實例

點擊VIP以及admin跳轉鏈接時:

struts2如何使用攔截器進行用戶權限控制實例

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://blog.csdn.net/weixin_36380516/article/details/71429800?utm_source=tuicool&utm_medium=referral

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 在线播放91 | 在线国v免费看 | 精品乱子伦一区二区三区 | 亚洲二区视频 | 成人久久久| 不卡一区二区三区四区 | 欧美久久综合 | 久久香蕉国产视频 | 午夜影院| 亚洲免费在线播放 | 懂色av中文一区二区三区天美 | 日韩中文字幕在线播放 | 久久这里只有国产精品 | 成人精品福利视频 | 国产成人av网站 | 国产成人精品久久二区二区91 | 色婷婷综合网 | 蜜桃视频一区 | 国产欧美日韩一区 | 国产精品视频免费 | 欧美精品一区在线观看 | 国产一区二区三区在线 | 日本不卡一区二区三区在线观看 | 精品一区二区三区中文字幕 | 国产综合区 | 国产视频一区二区三区在线观看 | 性做久久久久久 | a视频在线 | 一区二区三区精品 | 久久久亚洲国产美女国产盗摄 | 国产精品综合一区二区 | 日韩中文在线观看 | 亚洲视频精品 | 亚洲视频免费在线观看 | 久久国产区 | 自拍第1页 | 午夜社区 | 国产高清自拍视频 | 伊人一区二区三区 | 欧美视频免费在线 | 日本一区二区三区中文字幕 |