Struts2中为用户提供等待页面并测试Action的执行时间

2024-03-16 18:58

本文主要是介绍Struts2中为用户提供等待页面并测试Action的执行时间,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这是一个Struts2.0.11应用,代码如下

首先是web.xml文件

<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" 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_2_5.xsd"> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>waitLogin.jsp</welcome-file> </welcome-file-list> </web-app>

然后是用于输入用户名和密码以激活等待页面的waitLogin.jsp

<%@ page pageEncoding="UTF-8"%> <h1>使用Struts2中的execAndWait拦截器为用户提供等待页面</h1> <h3><font color="red">提示:</font>程序设定的用户名和密码各为<font color="blue"><strong>admin</strong></font>和<font color="blue"><strong>jadyer</strong></font></h3> <h3><font color="red">注意:</font>用户名或密码不正确时将停留在该页面不动</h3> <br><br> <form action="<%=request.getContextPath()%>/waitLogin.action" method="POST"> 姓名:<input type="text" name="username"><br> 密码:<input type="text" name="password"><br> <input type="submit" value="测试等待页面"> </form>

用户名和密码均正确时显示的登录成功页面waitLoginSuc.jsp

<%@ page language="java" pageEncoding="UTF-8"%> <h1>Login Success</h1>

然后是位于WEB-INF目录下的等待页面wait.jsp

<%@ page language="java" pageEncoding="UTF-8"%> <%-- <meta http-equiv="refresh" content="2;URL=waitLogin.action"> --%> <% response.setHeader("refresh", "2;URL=waitLogin.action"); %> <h2>数据已经提交,正在等待服务器返回信息,<font color="blue"><strong>请您耐心等待......</strong></font></h2> <br/> <br/> <h2><a href="<%=request.getContextPath()%>/waitLogin.action">如果该页面长时间没有响应,请点这里刷新</a></h2>

然后是Struts2的配置文件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> <package name="waitLogin" extends="struts-default"> <action name="waitLogin" class="com.zhangbing.action.WaitLoginAction" method="testWait"> <interceptor-ref name="timer"/><!-- 测试WaitLoginAction的执行时间 --> <interceptor-ref name="defaultStack"/> <interceptor-ref name="execAndWait"> <param name="delay">1000</param> </interceptor-ref> <!-- 配置execAndWait拦截器时,要求它必须位于所有拦截器的最下面 --> <!-- delay是指:若1秒之内处理完请求,就显示SUCCESS页面,否则显示WAIT页面 --> <result name="wait">/WEB-INF/wait.jsp</result> <result name="success">/waitLoginSuc.jsp</result> <result name="login">/waitLogin.jsp</result> </action> </package> </struts>

最后是Struts2的Action类WaitLoginAction.java

package com.zhangbing.action; import com.opensymphony.xwork2.ActionSupport; /** * 测试execAndWait拦截器时用到的Action */ @SuppressWarnings("serial") public class WaitLoginAction extends ActionSupport { private String username; private String password; /* 两个属性的setter和getter略 */ public String testWait() throws Exception { if(username.trim().equalsIgnoreCase("admin") && password.equals("jadyer")){ System.out.println("---------醒目的分隔线---------"); Thread.sleep(4000); //令当前线程休眠 4 秒 System.out.println("---------无敌的分隔线---------"); return SUCCESS; }else{ return LOGIN; } } }

这篇关于Struts2中为用户提供等待页面并测试Action的执行时间的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/816400

相关文章

mybatis执行insert返回id实现详解

《mybatis执行insert返回id实现详解》MyBatis插入操作默认返回受影响行数,需通过useGeneratedKeys+keyProperty或selectKey获取主键ID,确保主键为自... 目录 两种方式获取自增 ID:1. ​​useGeneratedKeys+keyProperty(推

go中的时间处理过程

《go中的时间处理过程》:本文主要介绍go中的时间处理过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 获取当前时间2 获取当前时间戳3 获取当前时间的字符串格式4 相互转化4.1 时间戳转时间字符串 (int64 > string)4.2 时间字符串转时间

Golang如何对cron进行二次封装实现指定时间执行定时任务

《Golang如何对cron进行二次封装实现指定时间执行定时任务》:本文主要介绍Golang如何对cron进行二次封装实现指定时间执行定时任务问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录背景cron库下载代码示例【1】结构体定义【2】定时任务开启【3】使用示例【4】控制台输出总结背景

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

SpringSecurity显示用户账号已被锁定的原因及解决方案

《SpringSecurity显示用户账号已被锁定的原因及解决方案》SpringSecurity中用户账号被锁定问题源于UserDetails接口方法返回值错误,解决方案是修正isAccountNon... 目录SpringSecurity显示用户账号已被锁定的解决方案1.问题出现前的工作2.问题出现原因各

Python的端到端测试框架SeleniumBase使用解读

《Python的端到端测试框架SeleniumBase使用解读》:本文主要介绍Python的端到端测试框架SeleniumBase使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录SeleniumBase详细介绍及用法指南什么是 SeleniumBase?SeleniumBase

MySQL 用户创建与授权最佳实践

《MySQL用户创建与授权最佳实践》在MySQL中,用户管理和权限控制是数据库安全的重要组成部分,下面详细介绍如何在MySQL中创建用户并授予适当的权限,感兴趣的朋友跟随小编一起看看吧... 目录mysql 用户创建与授权详解一、MySQL用户管理基础1. 用户账户组成2. 查看现有用户二、创建用户1. 基

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据

解决mysql插入数据锁等待超时报错:Lock wait timeout exceeded;try restarting transaction

《解决mysql插入数据锁等待超时报错:Lockwaittimeoutexceeded;tryrestartingtransaction》:本文主要介绍解决mysql插入数据锁等待超时报... 目录报错信息解决办法1、数据库中执行如下sql2、再到 INNODB_TRX 事务表中查看总结报错信息Lock