(Struts2学习篇) Struts2 拦截器

2023-10-27

版本:struts2.5.5

此实例实现功能:用户需要指定用户名登陆,登陆成功进入相应页面执行操作,否则返回到登陆页面进行登陆,当直接访问操作页面(登陆后才能访问的页面)时则不允许,须返回登陆页面。

 

1、Struts.xml配置文件

<package name="authority" extends="struts-default">  
<!-- 定义一个拦截器 -->  
        <interceptors>  
            <interceptor name="authority"  
                class="com.vixuan.skydrive.interceptot.LoginInterceptor">  
            </interceptor>  
            <!-- 拦截器栈 -->  
            <interceptor-stack name="mydefault">  
                <interceptor-ref name="defaultStack" />  
                <interceptor-ref name="authority" />  
            </interceptor-stack>  
        </interceptors>          
        <!-- 定义全局Result -->  
        <global-results>  
            <!-- 当返回login视图名时,转入/login.jsp页面 -->  
            <result name="login">/login.jsp</result>  
        </global-results>
        
        <action name="login" class="com.vixuan.skydrive.action.LoginAction">  
            <result name="success">/welcome.jsp</result>  
            <result name="error">/login.jsp</result>  
            <result name="input">/login.jsp</result>  
        </action>         
         <action name="show" class="com.vixuan.skydrive.action.ShowAction">  
            <result name="success">/show.jsp</result>  
            <!-- 使用此拦截器 -->  
            <interceptor-ref name="mydefault" />  
        </action>          
</package>


登入Action(LoginAction)

package com.vixuan.skydrive.action;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.vixuan.skydrive.util.*;

public class LoginAction extends ActionSupport {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private String username;
	private String password;
	//判断值是否合法
	private boolean isInvalid(String value) {     
		return (value == null || value.length() == 0);     
	}    
		
	@Override
	public String execute() throws Exception {
		// TODO Auto-generated method stub
		 if (isInvalid(getUsername()))     
             return INPUT;     
     
         if (isInvalid(getPassword()))     
             return INPUT;
         
         if(this.getUsername().equals("root")&& this.getPassword().equals("123456")){  
             ActionContext.getContext().getSession().put(Constants.USER,getUsername());  
             ActionContext.getContext().getSession().put(Constants.PASS,getPassword());  
             return "success";  
         }  

		return ERROR;
	}
	//set 和  get
	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;
	}
	
	
	

}


显示Action(ShowAction)

package com.vixuan.skydrive.action;

import com.opensymphony.xwork2.ActionSupport;

public class ShowAction extends ActionSupport {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Override
	public String execute() throws Exception {
		// TODO Auto-generated method stub
		return SUCCESS;
	}
	
	

}


登入拦截器Interceptor(LoginInteceptor)

package com.vixuan.skydrive.interceptot;

import java.util.Map;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import com.vixuan.skydrive.util.*;

public class LoginInterceptor extends AbstractInterceptor {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Override
	public String intercept(ActionInvocation invocation) throws Exception {
		// TODO Auto-generated method stub
		 // 取得请求相关的ActionContext实例   
        ActionContext ctx = invocation.getInvocationContext();  
        Map session = ctx.getSession();  
        String user = (String) session.get(Constants.USER);  
  
        // 如果没有登陆,或者登陆所有的用户名不是yuewei,都返回重新登陆   
  
        if (user != null && user.equals("root")) {  
            System.out.println("验证通过");  
            return invocation.invoke();  
        }  
  
        ctx.put("error", "你还没有登录");  

		return Action.LOGIN;
	}

}


相关jsp源代码:

登入界面----login.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>  
  <head>    
    <title>用户登入</title>   
    <!-- 
    <link rel="stylesheet" type="text/css" href="styles.css" mce_href="styles.css"> 
    -->  
  </head>  
    
  <body>  
  <form action="login.action" method="post">  
        用户名:<input type="text" name="username"><br>  
       密码:<input type="password" name="password"><br>  
  <input type="submit" value="submit">  
  </form>  
     
</body>  
</html>  


 

拦截界面------welcomejsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>  
  <head>  
     
    <title> 欢迎界面</title>  
      
 <!-- 
 <link rel="stylesheet" type="text/css" href="styles.css" mce_href="styles.css"> 
 -->  
  
  </head>  
    
  <body>  
  <h1>登录成功后显示此页面</h1>  
  <a href="show.action">show</a>  
  </body>  
</html>  


成功界面--------show.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>  
  <head>  
      
    <title>show界面</title>  
      
    <!-- 
    <link rel="stylesheet" type="text/css" href="styles.css" mce_href="styles.css"> 
    -->  
  
  </head>  
    
  <body>  
    Show This Page   
        	登录后执行此页面<br>  
  </body>  
</html>  


 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

(Struts2学习篇) Struts2 拦截器 的相关文章

  • metasploit使用介绍

    文章目录 前言 一 metasploit介绍 1 产生原因 2 metasploit框架介绍 3 发展与壮大 二 使用metaspliot 1 模块介绍 2 模块命令基本使用 1 启动MSF 2 管理数据库 3 Msfconsole接口 4
  • [苹果开发者账号]04 申请苹果开发者账号 美国报税表

    申请苹果开发者账号时 当银行信息完成后 要填写美国报税表 填写时注意的地方 1 首先 选择报税表 使用默认的美国 2 填写美国报税表 中国的公司和中国人 全选否 3 填写详细的报税表 记录下红色箭头部分 选Corporation 公司 写报
  • python资料大全

    前言 Python是一种高级编程语言 已经成为了当今最受欢迎的编程语言之一 它被广泛用于Web开发 数据科学 人工智能 机器学习等领域 Python具有易学易用的特点 同时也具有强大的功能和灵活性 本篇博客将介绍Python的学习过程以及它
  • 多线程学习----join()的用法

    join的用法一 join 方法可以使得一个线程在另一个线程结束后再执行 如果join 方法在一个线程实例上调用 当前运行着的线程将阻塞直到这个线程实例完成了执行 首先来看个例子 author QingHe Creation on 2005
  • 修复office 2007或2010安装程序找不到Proplas.ww/Proplsww.cab

    此情况一般是我们删除了缓存MSOCache出现的 在安装office2007或10的盘下 默认是C盘 有一个隐藏文件MSOCache 在里面的All Users文件下创建 90120000 0011 0000 0000 0000000FF1
  • 二叉树的遍历C#实现,递归以及非递归

    前序遍历 输出规则 根节点 左子树 右子树 二叉树的前序遍历规则是从根节点开始 依层 逐层取 左子节点 若此节点没有 左子节点 说明此节点是叶子节点 往上 回溯 取 最小父节点的右节点 再重复 此步骤 取左子节点 直到 没有左子节点 也没有
  • 结构化方法与面向对象方法的比较

    结构化方法与面向对象方法的比较 一 结构化方法 结构化方法 Structured Methodology 采用了系统科学的思想方法 从层次的角度 自顶向下地分析和设计系统 结构化方法包括结构化分析 Structured Analysis 简
  • 20多岁年轻人应该有多少存款?

    20多岁年轻人应该有多少存款 本人22应届专升本软件工程毕业 在专科阶段做了很多兼职 保安 销售 服务员 兼职只能够个日常开销 还记得疫情那年 我专科还没毕业 被困在家里 后面4月份解封 我就早早的跟朋友去外面找工作 找了一份快递的工作 本
  • 数据结构:Trie字符串统计

    维护一个字符串集合 支持两种操作 I x 向集合中插入一个字符串 x Q x 询问一个字符串在集合中出现了多少次 共有 N 个操作 所有输入的字符串总长度不超过 1e5 字符串仅包含小写英文字母 Trie树 高效存储和查找字符串 按树结构存
  • 机器学习实践(2.1)LightGBM分类任务

    前言 LightGBM也属于Boosting集成学习模型 还有前面文章的XGBoost LightGBM和XGBoost同为机器学习的集大成者 相比越来越流行的深度神经网络 LightGBM和XGBoost能更好的处理表格数据 并具有更强的
  • 【Transformer】2、ViT:An image is worth 16x16: transformers for image recognition at scale

    文章目录 一 背景和动机 二 方法 三 效果 四 Vision Transformer 学习到图像的哪些特征了 五 代码 代码链接 https github com lucidrains vit pytorch 论文连接 https ope

随机推荐

  • Android Listview 以及list view适配器

    Listview 相关监听事件以及滑动按钮 适配器 是来连接数据源和图形化界面的桥梁 数组适配器arrayadapter 集合和数组 格式简单 简单适配器simpleadapter格式复杂 使用过程 星舰 添加数据元到适配器 试图展示 si
  • JAVA中scanner方法详解

    Scanner 是 Java 中的一个比较重要的类 它的作用是用来从控制台读取输入的 它可以接收字符串 整数等类型的输入 使用方法如下 1 使用 Scanner 对象 创建 Scanner 对象并传入要接收输入的字符串 Scanner in
  • 图像边缘特征

    图像边缘是图像的重要特征 是图像中特性 如像素灰度 纹理等 分布的不连续处 图像周围特性有阶跃变化或屋脊状变化的那些像素集合 图像的边缘部分集中了图像的大部分信息 一幅图像的边缘结构与特点往往是决定图像特质的重要部分 图像边缘的另一个定义是
  • scp命令传输出现ssh: Could not resolve hostname错误

    ssh Could not resolve hostname xxxxx Temporary failure in name resolution 原因是docker导出的镜像需要离线导入 在命名的时候根据docker镜像命名带上了 导致
  • 海思3559A上编译libjpeg-turbo源码操作步骤

    1 从https github com libjpeg turbo libjpeg turbo releases tag 2 0 2 下载libjpeg turbo 2 0 2版本 2 脚本build sh内容如下 cmake DCMAKE
  • Redis五种数据结构及常用操作指令、Redis在JAVA中如何封装使用

    由于在博主的博客专栏 杂货铺实战 中的杂货铺项目中用到了Redis 那么本篇博文就针对Redis的五种数据结构以及如何在JAVA中封装使用做一个简单的介绍 文章目录 数据结构 string字符串 string字符串简介 string字符串在
  • nginx代理常见问题

    1 http200 但是返回We re sorry but XXXX doesn t work properly without JavaScript enabled Please enable it to continue 项目1 可能原
  • React.js 之筛选篇

    span style font size 14px 这个框架有听过好几次了 但自己没实现过 今天终于自己学了下 模仿写了这个过滤 妙味视频里面的 目前遇到的情况是用babel会丢失代码提示 但在浏览器中可视 划分组件 组件链接 span
  • 交叉熵损失函数优缺点_如何简单通俗的理解交叉熵损失函数?

    前面小编给大家简单介绍过损失函数 今天给大家继续分享交叉熵损失函数 直接来看干货吧 一 交叉熵损失函数概念 交叉熵损失函数CrossEntropy Loss 是分类问题中经常使用的一种损失函数 公式为 接下来了解一下交叉熵 交叉熵Cross
  • 多线程任务Rollback

    问题 多线程任务 一个任务执行错误 其他任务应该同步取消 1 主线程监视 主线程监视任务线程 当一个任务线程出现执行错误时 直接调用System exit 0 结束程序 任务线程代码 package com example thread c
  • 小程序服务器角色,小程序在我们的生活中扮演什么角色?

    原标题 小程序在我们的生活中扮演什么角色 我们给大家讲过关于小程序的相关问题 还有互联网 的相关问题 相信大家还不知道这两者之间的关系 今天我们给大家讲解一下关于小程序与互联网 的关联 我们再来回忆以下关于小程序的概念 对于用户来说 小程序
  • 应用角度看kafka的术语和功能

    kafka的术语 Terminology Topic 和Consumer Group Topic 每条发布到 Kafka 集群的消息都有一个类别 这个类别被称为 Topic 物理上不同 Topic 的消息分开存储 逻辑上一个 Topic 的
  • 入门必备小游戏之炸金花

    游戏的规则 一付扑克牌 去掉大小王 每个玩家发3张牌 最后比大小 看谁赢 牌型 豹子 三张一样的牌 如3张6 分值100 顺金 又称同花顺 即3张同样花色的顺子 如红桃 5 6 7 分值75 顺子 又称拖拉机 花色不同 但是顺子 如红桃5
  • 差分+差分矩阵(更适合新手宝宝体质)

    快速掌握差分以及差分矩阵 文章目录 快速掌握差分以及差分矩阵 前言 差分 差分的定义 官方解释 差分自定义 跟前缀和放在一起理解 差分数组的应用 题目描述 差分矩阵 与前缀和矩阵进行比较 差分矩阵定义 官方解释 自定义 修改操作 跟前缀和对
  • openGauss学习笔记-43 openGauss 高级数据管理-事件触发器

    文章目录 openGauss学习笔记 43 openGauss 高级数据管理 事件触发器 43 1 语法格式 43 2 参数说明 43 3 示例 openGauss学习笔记 43 openGauss 高级数据管理 事件触发器 触发器会在指定
  • 物联网毕业设计 基于STM32的环境质量监测系统(源码+原理图+论文)

    文章目录 0 前言 1 设计架构 功能设计 2 原理图 3 软件设计 4 实现效果 5 相关代码 6 最后 0 前言 这两年开始毕业设计和毕业答辩的要求和难度不断提升 传统的毕设题目缺少创新和亮点 往往达不到毕业答辩的要求 这两年不断有学弟
  • 傻白入门芯片设计,三大基本定律(十)

    1 摩尔定律 Moore s Law 集成电路上可以容纳的晶体管数目在大约每经过18个月到24个月便会增加一倍 换言之 处理器的性能大约每两年翻一倍 同时价格下降为之前的一半 2 登纳德缩放定律 Dennard Scaling 随着晶体管尺
  • 2023.3.17

    Goby预置了最具攻击效果的漏洞引擎 覆盖Weblogic Tomcat等最严重漏洞 每天从互联网 如CVE 会产生大量的漏洞信息 我们筛选了会被用于真实攻击的漏洞进行每日更新 Goby也提供了可以自定义的漏洞检查框架 发动了互联网的大量安
  • go数组转tree

    数组转 tree目前发现就二种方式 go实现了两种 1 递归模式 2 双重循环 初始化数据 List 结构体 type List struct Name string json name Id int json id Pid int jso
  • (Struts2学习篇) Struts2 拦截器

    版本 struts2 5 5 此实例实现功能 用户需要指定用户名登陆 登陆成功进入相应页面执行操作 否则返回到登陆页面进行登陆 当直接访问操作页面 登陆后才能访问的页面 时则不允许 须返回登陆页面 1 Struts xml配置文件