Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 每次刷新都会更改数据库中的值_Java_Mysql_Jsp_Struts2 - Fatal编程技术网

Java 每次刷新都会更改数据库中的值

Java 每次刷新都会更改数据库中的值,java,mysql,jsp,struts2,Java,Mysql,Jsp,Struts2,我正在使用struts2和jsp进行查看,这里我面临一个问题。每当我刷新数据库中的值时,都会发生更改,所以当我试图检索jsp上的值时,它会给我这些更改后的值,这不是我想要的值,当我只单击该次时,它应该会发生更改,而不是当我刷新时。你知道怎么解决吗?任何帮助都将不胜感激 package com.rajesh.action; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSe

我正在使用struts2和jsp进行查看,这里我面临一个问题。每当我刷新数据库中的值时,都会发生更改,所以当我试图检索jsp上的值时,它会给我这些更改后的值,这不是我想要的值,当我只单击该次时,它应该会发生更改,而不是当我刷新时。你知道怎么解决吗?任何帮助都将不胜感激

package com.rajesh.action;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import com.opensymphony.xwork2.ActionSupport;

public class DepositAction extends ActionSupport {

private int accountno;
private String username;
private String password;
private String amount;
private int dataamount = 0;

public int getDataamount() {

return dataamount;
}

public void setDataamount(int dataamount) {
this.dataamount = dataamount;
}

public int getAccountno() {
return accountno;
}

public void setAccountno(int accountno) {
this.accountno = accountno;
}

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;
}

public String getAmount() {
return amount;
}

public void setAmount(String amount) {
this.amount = amount;
}

public String execute() throws Exception {

Connection con = GetCon.getCon();

PreparedStatement ps = con.prepareStatement("Select * from account where accountno=? and username = ? and password =?");
ps.setInt(1, accountno);
ps.setString(2, username);
ps.setString(3, password);

ResultSet rs = ps.executeQuery();

boolean status = rs.next();

System.out.println(status);

if (status == true) {

PreparedStatement ps1 = con.prepareStatement("Select * from account where accountno=?");

ps1.setInt(1, accountno);

ResultSet rs1 = ps1.executeQuery();

if (rs1.next()) {
dataamount = Integer.parseInt(amount) + rs.getInt(5);
System.out.println(rs1.getInt(5));
System.out.println(dataamount);

}

PreparedStatement ps2 = con.prepareStatement("update account set amount=? where accountno='"
                        + accountno + "'");
ps2.setInt(1, dataamount);
int state = ps2.executeUpdate();

if (state > 0)
System.out.println("AMOUNT DEPOSITED");

return SUCCESS;

} else {
return "error";
}
}
}
还有我的存款

<div id="header12">
<table>
<tr><td><h4>amount deposited is:<s:property value="amount"/> Rs</h4></td></tr>
<tr>
<td align="center" valign="middle"><h4>your current Balance is:<s:property value="dataamount" />   Rs</h4></td>
</tr>
</table>

存款金额为:卢比
你目前的余额是:卢比
还有我的deposit1.jsp

<form name=F1 onSubmit="return dil(this)" action="depositAction" method="post">
<table cellspacing="5" cellpadding="3">
<tr><td>ACCOUNT NO:</td><td> <input type="text" name="accountno"/></td></tr>
<tr><td>USER NAME:</td><td> <input type="text" name="username"/></td></tr>
<tr><td>PASSWORD:</td><td> <input type="password" name="password"/></td></tr>
<tr><td>AMOUNT:</td><td> <input type="text" name="amount"/></td></tr>

账号:
用户名:
密码:
数量:

您遇到了双重提交问题

传统方法是使用Post/Redirect/Get,Struts2上更难的方法是使用令牌拦截器,但如果您不是针对旧浏览器,就这样做:

<body>
    ....

    <script>
        window.history.pushState("","", location.href);
    </script>
</body>

....
window.history.pushState(“,”,location.href);
这将阻止刷新时重新提交


打开链接。

没有看到代码??这里没有人是超级英雄。我已经更新了我的问题,请参阅。