为什么点击jsp页面上的提交按钮,新增一条数据,结果却新增了两条数据,并给出代码防止重复提交
时间: 2024-03-08 12:47:31 浏览: 31
点击jsp页面上的提交按钮,新增一条数据会出现新增两条数据的情况,通常是因为表单重复提交。当用户在提交表单后,网络延迟或者浏览器缓存等问题导致页面没有及时刷新,用户又重新点击提交按钮时,就会发生表单重复提交的情况。为了解决这个问题,可以通过以下方式进行防止重复提交的操作:
1. 在表单的提交按钮上添加禁用属性,防止用户重复点击提交按钮
```html
<input type="submit" value="提交" onclick="this.disabled=true;this.form.submit();" />
```
2. 在后台代码中进行重复提交的校验,如果已经提交过表单,则不再进行数据的新增操作
```java
// 使用synchronized关键字保证同步
public synchronized boolean checkRepeatSubmit(String token) {
if (tokens.contains(token)) {
return true;
}
tokens.add(token);
return false;
}
```
以上是两种常见的防止表单重复提交的方式,可以根据具体需求进行选择。
相关问题
jsp页面跳转另外一个页面并点击按钮弹出页面
要在 JSP 页面中跳转到另一个页面并点击按钮弹出页面,可以使用 JavaScript 来实现。具体实现步骤如下:
1. 在 JSP 页面中添加一个按钮,并为其绑定一个点击事件。
```html
<button onclick="openNewPage()">打开新页面</button>
```
2. 在 JavaScript 中定义一个函数,用于跳转到另一个页面并弹出新页面。
```javascript
function openNewPage() {
// 跳转到另一个页面
window.location.href = "newPage.jsp";
// 弹出新页面
window.open("popup.jsp", "popup", "width=400,height=400");
}
```
在该函数中,首先使用 `window.location.href` 属性将页面跳转到 `newPage.jsp` 页面。然后使用 `window.open()` 方法打开一个新窗口,该方法接受三个参数:要打开的页面的 URL、窗口名称和窗口属性。在这里,我们将新窗口的宽度和高度都设置为 400。
这样,当用户点击按钮时,就会跳转到 `newPage.jsp` 页面,并弹出一个新窗口。注意,要在 `newPage.jsp` 页面中添加弹窗代码。
jsp中如何拿出数据库执行查找多少条数语句,并在另一个jsp页面中提取数据出来
你可以使用JDBC连接数据库进行查询,并使用ResultSet获取查询结果的行数。以下是示例代码:
```
<%
// JDBC连接数据库
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/mydatabase";
String username = "root";
String password = "password";
Connection con = null;
try {
Class.forName(driver);
con = DriverManager.getConnection(url, username, password);
// 查询总行数
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT COUNT(*) AS count FROM mytable");
int rowCount = 0;
if (rs.next()) {
rowCount = rs.getInt("count");
}
rs.close();
stmt.close();
// 在另一个JSP页面中提取数据
request.setAttribute("rowCount", rowCount);
RequestDispatcher rd = request.getRequestDispatcher("other.jsp");
rd.forward(request, response);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (con != null) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
%>
```
在另一个JSP页面中可以使用以下代码获取rowCount:
```
<%
int rowCount = (Integer) request.getAttribute("rowCount");
// 使用rowCount进行其他操作
%>
```