-2

我调用各种 java 类文件来从 jsp 页面向表中插入数据。有时数据不会插入所有表中。因此,它创建完整性如何使用从 jsp 页面提交/回滚来避免这个问题

4

2 回答 2

3

JSP 不应连接到数据库并执行此类逻辑。它们用于渲染视图 - 仅此而已。

在 JSP 和数据库之间放置一个 servlet。让 servlet 验证输入参数并将其绑定到对象,将请求路由到其他对象以完成请求,将对象添加到响应范围,并确定下一个视图。它被称为 Model-2 MVC。

您可能正在将scriptlet 代码放入您的JSP。这是一种 1998 年的风格,在很大程度上已经名誉扫地。

更好的解决方案是学习 JSTL 并将所有 scriptlet 代码排除在 JSP 之外。它还会迫使您将逻辑移出页面并移至它所属的服务器端。

于 2012-05-16T11:50:44.603 回答
0

使用 try catch 和 if-else 语句检查数据是否正确插入,如果在插入事务过程中出现错误,则使用回滚。

Connection conn = null;
Statement stmt = null;

try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String connectionUrl = "jdbc:sqlserver://localhost;databaseName=dbname;user=username;password=password";
conn = DriverManager.getConnection(connectionUrl); 
conn.setAutoCommit(false);
stmt = conn.createStatement();
stmt.executeUpdate(sql);
stmt.executeUpdate(sql);
stmt.executeUpdate(sql);
stmt.executeUpdate(sql);

conn.commit();
}
catch(Exception e) {
if(!conn.isClosed()){
conn.rollback();
}
System.out.println(e);
}
finally{
if(!stmt.isClosed()){
stmt.close();
}
if(!conn.isClosed()){
conn.close();
}
}

或尝试使用 JSTL 更轻松 观看JSF 框架教程

于 2013-06-07T13:02:09.887 回答