1、jsp页面  输入框,提交按钮

 <%@ page language="java" contentType="text/html" pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<s:form action="User_login" namespace="/login">
<!---token标签--->
<s:token></s:token>
<!-- <!---用于显示action的错误,因为设置的是拦截到后再次返回此页,所以设置了这个标签-->
<!-- <s:actionerror/> --> <s:textfield name="username" label="用户名"></s:textfield>
<s:submit label="提交"></s:submit>
</s:form>
</body>
</html>

2、struts.xml

动作类成功执行后通过转发的方式跳转到success.jsp页面。

 <?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>
<constant name="struts.i18n.encoding" value="utf-8"/>
<package name="default" namespace="" extends="struts-default">
<global-results>
<result name="error">/error.jsp</result>
</global-results>
</package> <package name="users" extends="default" namespace="/login">
<action name="User_login" class="cn.gs.ly.UserAction" method="login"> <!--使用默认拦截器-->
<interceptor-ref name="defaultStack"></interceptor-ref>
<!--使用token拦截器-->
<!-- <interceptor-ref name="token"></interceptor-ref> -->
<!--使用tokenSession拦截器-->
<interceptor-ref name="tokenSession"></interceptor-ref>
<!--拦截到后的输出界面-->
<result name="invalid.token">/message.jsp</result> <result name="success">/User_login_success.jsp</result>
<result name="failure">/index.jsp</result>
</action>
</package> </struts>

3、UserAction类

每次用户提交表单后,输出表单提交的提示。

 package cn.gs.ly;

 import com.opensymphony.xwork2.ActionSupport;

 public class UserAction extends ActionSupport {
private String username;
private String token; public String getUsername(){
return username;
}
public void setUsername(String username){
this.username=username;
}
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
} public String login(){
System.out.println(username+"表单已提交");
return SUCCESS;
} }

登陆成功跳  success.jsp

 <%@ page language="java" contentType="text/html" pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<h2>登陆成功,这是登陆成功页面</h2>
</body>
</html>

重复提交跳  message.jsp

<%@ page language="java" contentType="text/html" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<h3>请勿重复提交</h3>
<!---用于显示action的错误,因为设置的是拦截到后再次返回此页,所以设置了这个标签-->
<s:actionerror/>
</body>
</html>

登陆失败跳  error.jsp

 <%@ page language="java" import="java.util.*" isErrorPage="true"%>
<%@ page contentType="text/html; charset=utf-8" %>
<%@ taglib uri="/struts-tags" prefix="s"%>
<%
String path = request.getContextPath();
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>page</title>
</head>
<body>
<center>
<h1>出错了!</h1>
<hr>
异常信息:<s:property value="exception"/><br>
<a href="<%=path%>/index.jsp">返回首页</a>
</center>
</body>
</html>

struts2 token 防止表单重复提交的更多相关文章

  1. struts2之防止表单重复提交

    struts.xml配置文件 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts ...

  2. struts2的防止表单重复提交

    防止表单重复提交其实就是struts2的一个拦截器的使用: struts.xml配置文件: <?xml version="1.0" encoding="UTF-8& ...

  3. 【Struts2】防止表单重复提交

    一.概述 二.Struts2中解决方案 三.实现步骤 一.概述 regist.jsp----->RegistServlet 表单重复提交 危害: 刷票. 重复注册.带来服务器访问压力(拒绝服务) ...

  4. PHP简单利用token防止表单重复提交

    <?php /* * PHP简单利用token防止表单重复提交 * 此处理方法纯粹是为了给初学者参考 */ session_start(); function set_token() { $_S ...

  5. PHP生成token防止表单重复提交

    .提交按钮置disabled 当用户提交后,立即把按钮置为不可用状态.这种用js来实现. 提交前代码如下: $()  {  $exec="insert into student (user_ ...

  6. PHP简单利用token防止表单重复提交(转)

    <?php/* * PHP简单利用token防止表单重复提交 */function set_token() { $_SESSION['token'] = md5(microtime(true)) ...

  7. php通过token验证表单重复提交

    PHP防止重复提交表单 2016-11-08 轻松学PHP 我们提交表单的时候,不能忽视的一个限制是防止用户重复提交表单,因为有可能用户连续点击了提交按钮或者是攻击者恶意提交数据,那么我们在提交数据后 ...

  8. AOP+Token防止表单重复提交

    表单重复提交: 由于用户误操作,多次点击表单提交按钮 由于网速等原因造成页面卡顿,用户重复刷新提交页面 避免表单重复提交的方式: 1.页面上的按钮做防重复点击操作 2.在数据库中可以做唯一约束 3.利 ...

  9. PHP使用token防止表单重复提交的方法

    本文实例讲述了PHP使用token防止表单重复提交的方法.分享给大家供大家参考,具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2 ...

随机推荐

  1. 前端开发HTML&css入门——伪类选择器和一些特殊的选择器

    伪类和伪元素 有时候,你需要选择本身没有标签,但是仍然易于识别的网页部位,比如段落首行或鼠标滑过的连接.CSS为他们提供一些选择器:伪类和伪元素. 常用的一些伪类选择器: :link :visited ...

  2. vue图片不存在时加载默认图片

    在文件中的img那里添加:οnerrοr="errorImg01",然后设置errorImg01的路径如果直接写成 errorImg01: ('../../assets/image ...

  3. 34. Find First and Last Position of Element in Sorted Array (JAVA)

    Given an array of integers nums sorted in ascending order, find the starting and ending position of ...

  4. NSURLSession断点下载

    #import <Foundation/Foundation.h> @class XHDownLoadManager; #pragma mark - delegate Method @pr ...

  5. mkfifo - 创建FIFO(命名管道)

    SYNOPSIS(总览) mkfifo [options] file... POSIX options(选项): [-m mode] GNU options(选项)(最短格式): [-m mode] ...

  6. Zabbix--05 Grafana、percona、自动发现和自动注册

    目录 一. Grafana自定义图形 1.安装grafana 2.安装并激活zabbix插件 3.数据展示 4.自定义图形仪表盘 5.自定义图形饼图 二. percona模版监控mysql 1.安装p ...

  7. Codeforces1234F. Yet Another Substring Reverse(状压dp)

    题目链接:传送门 思路: 由于只能翻转一次子串,就相当于找出两个不连续的子串,把在后面的一个子串翻转过来,和第一个子串拼接. 因为题目仅要求子串中的字符不重复,所以字符的先后顺序无关,翻转的操作就相当 ...

  8. 10年前文章_respin 下制作iso 文件的脚本说明

    1.prepare_spin.sh 用于在 /var/rpm 下生成  lhs-local 需要的repositery 2.respin.sh 使用revisor 生成 iso 3. post_spi ...

  9. Manjaro系统和软件安装记录

    Linux桌面环境  ArchLinux官方wiki manjaro官方wiki pacman官方wiki 从www.distrowatch.com可以查看Linux发行版排行榜,可以看到manjar ...

  10. java术语(PO/POJO/VO/BO/QO/DAO/DTO)

    一.概念理解 ​ 这些概念用于描述对象的类型:由于java是面向对象的语言:程序的世界就是各个对象之间的"交互":在交互的工程中会存在多个层次,每个层次中所拥有(关注)的内容都是不 ...