今天发现写的程序中的一个bug
function StartPrint(){
<%
java codes.................
%>
}
这样写是不对滴,即使StartPrint没有被触发,java代码也会被执行。。。也就是说,即使没点按钮,也会插入日志。。。。
解决方法:
开始尝试了自己写个方法,然后在js中调用。。发现传参,连接数据库之类的操作很麻烦 。。
看了一下别的文件,发现一个写好的,可以直接拿过来用的处理页面,哈哈哈哈。。。
function StartPrint(){
try
{
var log_sql = "…………………………";
//ajax异步提交
if (! Ext.fly('frmDummy'))
{
var frm = document.createElement('form');
frm.id = 'frmDummy';
frm.name = id;
frm.className = 'x-hidden';
document.body.appendChild(frm);
}
Ext.Ajax.request({
url: 'gosql.jsp',
method: 'POST',
form: Ext.fly('frmDummy'),
callback: function(o, s, r) {
//alert(r.responseText);
},
params: {mysql:log_sql}
})
}
catch(err)
{
//alert(err)
}
document.getElementById('BtnPrintOut').style.display='none';
document.getElementById('BtnClearAll').style.display='none';
print();
}
看了一下gosql,它是封装成一个事务了。。。。
<%request.setCharacterEncoding("utf-8");
ResultSet rs = null;
String sql = "";
sql = request.getParameter("mysql");
try
{
//需要级联删除的sql语句,以百分号分隔了,然后分别进行删除
conn.setAutoCommit(false);
String []deleSqlArray = sql.split("%");
for(int i = 0; i < deleSqlArray.length;i++)
{
System.out.println(deleSqlArray[i]);
stmt.executeUpdate(deleSqlArray[i]);
}
conn.commit();
conn.setAutoCommit(true);
out.println("success");
}
catch(Exception err)
{
conn.rollback();
out.println("failure");
}
conn.close();
%>
<%@ include file="closeconnection.jsp"%>
closeconnection.jsp
<%
//关闭连接
try
{
if(conn!=null)
{
if(!conn.isClosed())
{
conn.close();
conn = null;
}
}
}
catch(Exception excp3)
{
System.out.println("Connection Closed Error");
}
%>