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;
}
}
}
运行如下:
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;
}
}
}
运行如下:
相关文章推荐
- 基于struts2拦截器的权限控制系统2——基于自定义JSP标签的前台html元素控制
- 自定义注解+Struts2拦截器实现简单权限控制
- 利用struts2拦截器加自定义注解实现权限控制
- [转载]Struts2拦截器 实现未登录拦截和权限控制
- 在struts2中使用拦截器(Interceptor)控制登录和权限
- 在struts2中使用拦截器(Interceptor)控制登录和权限
- JAVA_WEB Struts2学习:struts2自定义拦截器
- Struts2 自定义拦截器 实现简单权限检查
- Struts2自定义拦截器实例—登陆权限验证
- Struts2 自定义拦截器实例—登陆权限验证
- JAVAWEB开发之Struts2详解(三)——Struts2信息国际化、自定义拦截器以及Struts2文件上传和下载详解
- struts2中使用拦截器(Interceptor)控制登录和权限
- struts2采用拦截器做权限控制
- Struts2自定义拦截器实例—登陆权限验证
- Struts2权限控制拦截器
- JavaWeb 案例——访问权限控制
- struts2 实现权限控制拦截器
- Struts2自定义拦截器实例—登陆权限验证
- Struts2使用拦截器完成权限控制示例
- 【JavaWeb-17】国际化、自定义拦截器、struts2文件上传与下载、OGNL、contextMap