6、Struts2拦截器实现权限控制
1、创建如下项目结果

2、在com.entity包下创建
package com.entity;
public class User {
private String name;
private String pwd;
public User() {
}
public User(String name, String pwd) {
this.name = name;
this.pwd = pwd;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
@Override
public String toString() {
return "User [name=" + name + ", pwd=" + pwd + "]";
}
}
User.java
3、在com.action包下创建LoginAction.java
package com.action; import javax.servlet.http.HttpSession; import org.apache.struts2.ServletActionContext; import com.entity.User;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
/**
* 登录的Action
* @author pc
*
*/
public class LoginAction extends ActionSupport {
private User user;
public String login(){
HttpSession session=ServletActionContext.getRequest().getSession(); //登录成功,将用户放入session作用域中
if(user!=null){
System.out.println("user:"+user);
//保存用户信息到Session中
session.setAttribute("user", user);
return SUCCESS;
}else{
return ERROR;
} }
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
} }
LoginAction.java
4、在com.interceptor包下创建LoginInteceptor.java
package com.interceptor; import java.util.Map; import javax.servlet.http.HttpSession; import org.apache.struts2.ServletActionContext; import com.entity.User;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
/**
* 权限验证检查拦截器
* @author pc
*
*/
public class LoginInteceptor extends AbstractInterceptor { @Override
public String intercept(ActionInvocation invocation) throws Exception {
//Map<String, Object> session=invocation.getInvocationContext().getSession();
HttpSession session=ServletActionContext.getRequest().getSession();
User user=(User)session.getAttribute("user");
System.out.println("loginInte:"+user); if(user==null){
//请求的Action
return invocation.invoke();
}else{
return Action.LOGIN; }
} }
LoginInteceptor.java
5、在src下创建struts.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "struts-2.1.dtd" >
<struts>
<!--1. 中文乱码处理 -->
<constant name="struts.i18n.encoding" value="UTF-8"/> <package name="default" namespace="/" extends="struts-default">
<!--2. 配置所有拦截器的节点 -->
<interceptors>
<!-- 定义权限验证拦截器 -->
<interceptor name="myLogin" class="com.interceptor.LoginInteceptor"></interceptor> <!-- 定义拦截器栈 -->
<interceptor-stack name="myStack"> <!-- 引用自定义拦截器 -->
<interceptor-ref name="myLogin"/> <!-- 引用系统默认拦截器 -->
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors> <!-- 3.定义默认拦截器 -->
<default-interceptor-ref name="myStack"/> <!-- 4.定义全局结果 -->
<global-results>
<result name="login" type="redirect">/login.jsp</result>
</global-results>
<!-- 5.配置Action=明星 -->
<action name="login" class="com.action.LoginAction" method="login">
<result name="success">/index.jsp</result>
<result name="error">/error.jsp</result>
<!-- 引用拦截器==小工 -->
<interceptor-ref name="myStack"/>
</action>
</package>
</struts>
struts.xml
6、在WebRoot下创建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%>"> <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head> <body>
<center>
<fieldset style="width:300px;">
<legend>登录</legend>
<!-- 在浏览器直接请求页面,拦截器不会发生任何作用,
拦截器只针对于Action的请求发生作用
也就是login.action走拦截器,直接请求index.jsp不会走拦截器-->
<form action="login.action" method="post">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" name="user.name"/></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="user.pwd"/></td>
</tr>
<tr>
<td><input type="submit" value="提交"/></td>
<td><input type="reset" value="重置"/></td>
</tr>
</table>
</form>
</fieldset>
</center>
</body>
</html>
login.jsp
7、在WebRoot下创建index.jsp文件
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="/struts-tags" prefix="s"%>
<%
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%>"> <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head> <body>
<h1>操作成功</h1>
<s:if test="user.name eq 'holly'">
holly你来啦?
</s:if>
<s:else>
我不认识你?你是谁?
</s:else>
</body>
</html>
index.jsp
8、在WebRoot下创建error.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%>"> <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head> <body>
操作失败!
</body>
</html>
error.jsp
9、编辑WebRoot下WEB-INF下web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<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> <welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list> </web-app>
web.xml
10、运行


当把login.jsp页面的form表单的action值改为index.jsp后,再看登录后的效果

6、Struts2拦截器实现权限控制的更多相关文章
- Struts2使用拦截器完成权限控制示例
http://aumy2008.iteye.com/blog/146952 Struts2使用拦截器完成权限控制示例 示例需求: 要求用户登录,且必须为指定用户名才可以查看系统中某个视图资源:否 ...
- Struts2基础-4-2 -struts拦截器实现权限控制案例+ 模型驱动处理请求参数 + Action方法动态调用
1.新建项目,添加jar包到WEB-INF目录下的lib文件夹,并添加到builde path里面 整体目录结构如下 2.新建web.xml,添加struts2核心过滤器,和默认首页 <?xml ...
- struts自己定义拦截器--登录权限控制
说明:该自己定义的拦截器实现用户登录的权限控制. login.jsp--->LoginAction--重定向-->MainAction--->main.jsp 一.1.整体的步骤: ...
- Struts2拦截器配置实例
拦截器介绍 拦截器 的使用 ,源自Spring AOP(面向切面编程)思想 拦截器 采用 责任链 模式 * 在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链. * 责任链每一个节 ...
- Struts2拦截器详解
一.Struts2拦截器原理: Struts2拦截器的实现原理相对简单,当请求struts2的action时,Struts 2会查找配置文件,并根据其配置实例化相对的 拦截器对象,然后串成一个列 ...
- Struts2拦截器浅析
一.拦截器简介: Struts2大多数核心功能是通过拦截器实现的,每个拦截器完成某项功能. 拦截器方法在Action执行之前或者之后执行. 拦截器栈: 从结构上看,拦截器栈相当于多个拦截器的组合. 在 ...
- Struts2使用Interceptor实现权限控制的应用实例详解
Struts2使用Interceptor实现权限控制的应用实例详解 拦截器:是Struts2框架的核心,重点之重.因此,对于我们要向彻底学好Struts2.0.读源码和使用拦截器是必不可少的.少说了. ...
- 从struts2拦截器到自定义拦截器
拦截器可谓struts2的核心了,最基本的bean的注入就是通过默认的拦截器实现的,一般在struts2.xml的配置中,package内直接或间接继承了struts-default.xml,这样st ...
- Struts2拦截器登录验证
Struts2拦截器 Struts2拦截器的概念和Spring Mvc拦截器一样. Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截 ...
随机推荐
- MFC中CListCtrl说明
转载:http://blog.csdn.NET/lhy2199/article/details/5177032 listctrl默认view 风格为report CListCtrl类封装"列 ...
- python学习-基础语法
字符编码 1.python 2.x 默认是ASCII 编码 不支持中文,所以在代码有中文的时候 需要在文件最上一行加上#coding=utf-8.python 3.x则没有该问题. 变量命名规则 1. ...
- 关于AVL实现的代码记录
试题集合: https://www.patest.cn/contests/pat-a-practise/1064 https://www.patest.cn/contests/pat-a-practi ...
- C# ObjectHelper
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 查增删改MySQL数据库固定模式
省略相关包的导入... public class Base { public static Connection connection = null; public static PreparedSt ...
- hdu5976贪心乘法逆元
hdu 5976 Detachment题目连接 题意: 给定一个自然数x,让你给出一种拆分方式n=a1+a2+...(ai≠aj),使得每个小部分的乘积s=a1*a2*...最大 解题思路: 我们要乘 ...
- 笔记 bug和任务 工具
云表格 https://www.huoban.com/禅道
- tomcat配置https方法
利用tomcat服务器配置https双向认证 步骤 1.为服务器生成证书进入控制台,切换到%JAVA_HOME%/bin目录,具体操作略. 使用keytool为Tomcat生成证书,假定目标机器的域名 ...
- matlab中选择图片路径
%读取训练图片数据文件 [FileName,PathName] = uigetfile('*.*','选择测试图片数据文件t10k-images.idx3-ubyte'); %暴露图片路径 saved ...
- 【翻译】创建Cordova项目
下载或者更新Node.js到最新版本 在电脑终端输入命令来安装Cordova CLI sudo npm install -g cordova 如果使用Windows电脑,需要在使用cmd命令行输入 n ...