您的位置:首页 > 编程语言 > Java开发

Java Struts2自定义拦截器-权限控制案例

2018-04-03 16:20 351 查看
Struts2框架自带的拦截功能已经很强了,如果没有特殊的要求一般可以满足,如果有特殊的要求,可以自定义拦截器。
login.jsp<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML>
<html>
<head>
<title>Document</title>
<meta charset="utf-8">
</head>
<body>
登录<br/>
<form action="login" methor="get">
<p>用户名:<input type="text" name="name"/></p>
<p>密 码:<input type="password" name="pass"/></p>
<p><input type="submit" value="submit"/></p>
</form>
</body>
</html>
note.jsp<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML>
<html>
<head>
<title>Document</title>
</head>
<body>
This is my JSP page. <br>
</body>
</html>
main.jsp<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML>
<html>
<head>
<title>Document</title>
<meta charset="utf-8">
</head>
<body>
<p>欢迎来到登陆成功主页----拦截器有关的案例----权限控制</p>
<p>姓名:<s:property value="name"/></p>
<p>密码:<s:property value="pass"/></p>
......
</body>
</html>
web.xml<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndEx
4000
ecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping></web-app>
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>
<package name="tokenTest" extends="struts-default">
<interceptors>
<interceptor name="auth" class="top.k10000.AuthInterceptor"></interceptor>
<interceptor-stack name="authStack">
<interceptor-ref name="auth"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>

<action name="login" class="top.k10000.LoginAction">
<result name="success">/main.jsp</result>
<result name="login">/login.jsp</result>
</action>

<action name="note">
<result>/WEB-INF/note.jsp</result>
<result name="login">/login.jsp</result>
<interceptor-ref name="authStack"></interceptor-ref>
</action>
</package>
</struts> LoginAction.javapackage top.k10000;
import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport{
private String name;
private String pass;
Map session;

public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}

public String execute() throws Exception{
if(name.equals("admin")&&pass.equals("admin123")){
session=ActionContext.getContext().getSession();
session.put("loginSign","loginSuccess");
return SUCCESS;
}
else{
return LOGIN;
}
}

}
AuthInterceptor.javapackage top.k10000;
import java.util.Map;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

public class AuthInterceptor extends AbstractInterceptor{
@Override
public String intercept(ActionInvocation invocation) throws Exception {
Map session = invocation.getInvocationContext().getSession();
if(session.get("loginSign")==null){
return "login";
}
else{
String result = invocation.invoke();
return result;
}
}

}
运行如下:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: