Struts2案例--開發許可權驗證攔截器
一個管理頁面,使用者必須登入才能進行操作,未登入不可操作。
建立專案struts-authInterceptor。
web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>struts-authInterceptor</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name >struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping >
</web-app>
登入頁面login.jsp:
<%@ 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%>">
</head>
<body>
<h2>使用者登入</h2>
${loginError }
<form action="login.action" method="post">
使用者名稱:<input type="text" name="username" /><br>
密碼:<input type="password" name="password"><br>
<input type="submit" value="登入" />
</form>
</body>
</html>
LoginAction.java:
package com.action;
import java.util.Map;
import org.apache.struts2.interceptor.SessionAware;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport implements SessionAware{ //實現介面來得到session
private String username; //接收客戶端提交的使用者名稱和密碼
private String password;
private Map<String, Object> session; //session儲存使用者資訊
public void setSession(Map<String, Object> session) {
this.session=session;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
//處理登入請求
public String login(){
if("admin".equals(username) && "123".equals(password)){
session.put("loginInfo", username);
return SUCCESS;
}else {
session.put("loginError", "使用者名稱或密碼不正確!");
return ERROR;
}
}
}
攔截器AuthInterceptor.java:
package com.interceptor;
import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
public class AuthInterceptor extends AbstractInterceptor {
@Override
public String intercept(ActionInvocation invocation) throws Exception {
//ActionContext:action的上下文
ActionContext context=ActionContext.getContext();
//獲取session
Map<String, Object> session=context.getSession();
if(session.get("loginInfo")!=null){ //值不為空,表示使用者已登入
String result=invocation.invoke(); //呼叫目標action,返回字串
return result;
}else{ //使用者未登入
return "login"; //表示需要登入
}
}
}
struts.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false"></constant>
<constant name="struts.devMode" value="true"></constant>
<package name="default" namespace="/" extends="struts-default">
<!-- 註冊攔截器 -->
<interceptors>
<interceptor name="auth" class="com.interceptor.AuthInterceptor"></interceptor>
<!-- 自定義攔截器棧myStack,組合了defaultStack和auth -->
<interceptor-stack name="myStack">
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="auth"></interceptor-ref>
</interceptor-stack>
</interceptors>
<!-- 通過此Action訪問後臺管理頁面 ,需要判斷使用者是否已登入,如果未登入則跳轉到登入頁面-->
<action name="auth">
<result>/WEB-INF/page/manager.jsp</result>
<result name="login">/login.jsp</result>
<!-- 引用自定義的攔截器棧 -->
<interceptor-ref name="myStack"></interceptor-ref>
</action>
<action name="login" class="com.action.LoginAction" method="login">
<result>/WEB-INF/page/manager.jsp</result>
<result name="error">/login.jsp</result>
</action>
</package>
</struts>
登入成功顯示的管理頁面manager.jsp:
<%@ 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%>">
</head>
<body>
後臺管理頁面,只有已登入的使用者才能訪問!
</body>
</html>
若使用者名稱或密碼輸入錯誤:
相關推薦
Struts2案例--開發許可權驗證攔截器
一個管理頁面,使用者必須登入才能進行操作,未登入不可操作。 建立專案struts-authInterceptor。 web.xml: <?xml version="1.0" encoding="UTF-8"?> <web-app xm
struts2學習(6)自定義攔截器-登錄驗證攔截器
back tps class res urn fff .com space war 需求:對登錄進行驗證,用戶名cy 密碼123456才能登錄進去; 登錄進去後,將用戶存在session中; 其他鏈接要來訪問(除了登錄鏈接),首先驗證
在struts2中配置自定義攔截器放行多個方法
return med ttr limit ring req tac cat invoke 源碼: 自定義的攔截器類: //自定義攔截器類:LoginInterceptor ; package com.java.action.interceptor; import j
整合spring之後,struts2裏面的自定義攔截器的invocation.invoke()總是返回input
put 每次 let 應該 singleton prot 定義 art 多例 這個真的是整死我了,還好看見了一篇博客提示了我, 解決方法: 在spring的bean配置中我沒有設置action的作用域為prototype,也就是多例的,如果不設置則就會是默認的singl
SpringBoot入門筆記(二)IDEA下springboot專案spring+mybatis+sqlserver+log4j+簡單登入驗證攔截器的框架搭建
IDEA下springboot專案spring+mybatis+sqlserver+log4j+簡單登入驗證攔截器的框架搭建 先貼一個專案的目錄結構 Attention:templates.html5是templates目錄下新建了一個html5目錄 1.專案建立 這個簡單,選
Struts2編寫自定義驗證攔截敏感詞彙(十二)
“兩個蝴蝶飛”特別喜歡"java1234知識分享網"小峰的實用主義,所以本文及其系列文章均是採用實用主義,從專案和程式碼的角度去分析。由於本人經驗有限,嘴皮子不溜,所以學術性,概念性,底層性的知識點暫時不做介紹。文章中有錯誤之處,歡迎拍磚和指點。特別感謝"java1234
struts2框架之自定義攔截器和配置
struts框架中也存在攔截器,只不過系統自動呼叫。框架自帶的攔截器的配置檔案所在的位置為: java Resources--->Libraries--->struts2-core-2.3.36.jar(核心包)--->struts-default.xml 這個配置檔案中放置
struts2.0 Interceptor Configuration(攔截器配置)
多個攔截器可以組成一個攔截器堆疊。每個攔截器命名為一。 Registering Interceptors <interceptors><interceptor name="security" class="com.company.securit
Struts2 -- 全域性異常處理(攔截器)
注:不足之處沒對ajax請求無法實現頁面跳轉控制(無法跳到錯誤頁面) <package name="InterceptorPackage" extends="struts-default"&
struts2 中package的預設攔截器不能攔截某些action的原因
package中action在新增fileUpload的攔截器的時候會在之前下面的程式碼: <interceptor-ref name="defaultStack" /> 給出的解釋是配置
基於lucene的案例開發:分詞器介紹
在lucene建立索引的過程中,資料資訊的處理是一個十分重要的過程,在這一過程中,主要的部分就是這一篇部落格的主題:分詞器。在下面簡單的demo中,介紹了7中比較常見的分詞技術,即:CJKAnalyzer、KeywordAnalyzer、SimpleAnaly
Struts2學習:interceptor(攔截器)的使用
網站 print 程序實現 int 自定義 package result process jsp 對於需要登陸驗證、權限驗證等功能的網站,每一次請求,每一個action都寫一段驗證的代碼,未免顯得冗余且不易維護。struts2提供了攔截器intercepto
解決方法|struts2執行action前加入攔截器,導致獲取不到引數
今天學到使用ONGL表示式實現型別轉換雖然我還是不懂ONGL表示式是啥,但抱著“先get書本例子的方法再慢慢深入學習”的想法還是跟著書本敲程式碼結果!在結果頁面裡怎麼也獲取不到輸入的引數!經過百度後發現,是因為我使用了自定義的攔截器,如果在配置檔案中加入了自定義的攔截器,那預
Struts2 官方教程:編寫攔截器
攔截器介面 自行編寫的攔截器,必須實現com.opensymphony.xwork2.interceptor.Interceptor 介面。 Interceptor.java public interface Inteceptor extends
Struts2學習第三天——攔截器與檔案傳輸
文件版本 開發工具 測試平臺 工程名字 日期 作者 備註 V1.0 2016.06.15 lutianfei none
Struts2學習第4天--攔截器
asi execute 部分 struts 代碼 inter nod efault alt 第1章 Struts2_day04筆記 1.1 上次課內容回顧 l OGNL表達式 n OGNL的概述 u OGNL:對象圖導航語言,是一門功能強大的
Struts2自定義攔截器案例:驗證使用者是否登入攔截器
Struts攔截器是struts最強大的功能之一,也是他的核心 它可以在Action前後做一些事情,比如使用者登入驗證,這裡主要針對使用者登入配置詳細說明 一 首先自定義一個使用者攔截類,必須實現Interceptor介面或者繼承他的實現類 因為我們是要攔截使用者登入的,這裡繼承Meth
第19講 struts2攔截器-登陸驗證
1在HeadFirstStruts2chapter03中,新建com.cruise.model包,新建User類,屬性userName,password,package com.cruise.model;public class User { &
關於struts2中的攔截器和登陸驗證
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
Struts2學習之2(請求引數的封裝,型別轉換,輸入驗證,自定義攔截器)
封裝請求引數 動態引數注入(請求引數,使用者輸入的) 方式一(動作類作為模型) 頁面 <form action="${pageContext.request.contextPath}/q1/login.do" method="pos