struts2自定义拦截器一——模拟登陆权限验证
生活随笔
收集整理的這篇文章主要介紹了
struts2自定义拦截器一——模拟登陆权限验证
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1、http://localhost:8083/struts2/user.jsp?表示用戶已登陸,存放session對(duì)象
2、http://localhost:8083/struts2/quit.jsp?表示用戶已退出,移除session對(duì)象
3、http://localhost:8083/struts2/login/addUIHelloWorld.do? 如果session存在則往下執(zhí)行,否則提示“你沒有權(quán)限執(zhí)行該操作”
4、http://localhost:8083/struts2/login/executeHelloWorld.do? 如果session存在則往下執(zhí)行,否則提示“你沒有權(quán)限執(zhí)行該操作”
???
代碼
user.jsp頁面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%
request.getSession().setAttribute("user", "ljq");
%>
用戶已經(jīng)登錄
????????????
quit.jsp頁面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%
request.getSession().removeAttribute("user");
%>
用戶已經(jīng)退出登錄
??????????????
Action類
package com.ljq.action;public class HelloWorldAction {
private String message;
public String addUI() {
this.message = "addUI";
return "success";
}
public String execute() throws Exception {
this.message = "execute";
return "success";
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
?????????????????
權(quán)限類
package com.ljq.interceptor;import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;
/**
* 限制沒有登錄的用戶進(jìn)入訪問頁面
*
* @author jiqinlin
*
*/
@SuppressWarnings("serial")
public class PermissionInterceptor implements Interceptor {
public void destroy() {
}
public void init() {
}
public String intercept(ActionInvocation invocation) throws Exception {
Object user = ActionContext.getContext().getSession().get("user");
// 如果user不為null,代表用戶已經(jīng)登錄,允許執(zhí)行action中的方法
if (user != null){
return invocation.invoke();
}
ActionContext.getContext().put("message", "你沒有權(quán)限執(zhí)行該操作");
return "success";
}
}
??????
struts.xml配置文件
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.i18n.encoding" value="UTF-8" />
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.action.extension" value="do" />
<package name="login" namespace="/login" extends="struts-default">
<interceptors>
<!-- 自定義攔截器 -->
<interceptor name="permission" class="com.ljq.interceptor.PermissionInterceptor" />
<!-- 配制默許的攔截器到攔截器棧 -->
<interceptor-stack name="permissionStack">
<!-- 此處先后順序好像沒影響哦,我嘗試過是沒影響的 -->
<interceptor-ref name="permission" />
<interceptor-ref name="defaultStack" />
</interceptor-stack>
</interceptors>
<!-- 配置默認(rèn)的攔截器 -->
<default-interceptor-ref name="permissionStack" />
<!-- 全局變量 -->
<global-results>
<result name="success">/WEB-INF/page/message.jsp</result>
</global-results>
<action name="*HelloWorld" class="com.ljq.action.HelloWorldAction"
method="{1}">
<!-- <interceptor-ref name="permissionStack" /> -->
</action>
</package>
</struts>
轉(zhuǎn)載于:https://www.cnblogs.com/linjiqin/archive/2011/03/19/1988797.html
總結(jié)
以上是生活随笔為你收集整理的struts2自定义拦截器一——模拟登陆权限验证的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 光与夜之恋约会怎么解锁
- 下一篇: 现在最高级的套装是多少等级的?