总所周知,JSP中的java代码是在服务器端执行的程序,JavaScript代码在浏览器端执行,因此同一个页面的先执行Java代码,然后执行JavaScript代码。JavaScript是无法控制Java代码。
但是有一个需求要根据JavaScript的选择来决定Java代码执不执行。这个时候就要用到Ajax,需要2张JSP页面。当Ajax触发时候,另外一个JSP页面被加载,这个JSP页面中的Java被执行,以实现JavaScript控制Java代码。只能控制其他页面的Java代码,不能控制,本页面的Java代码。
1、在Oracle中建立表。
2、创建被调用的JSP页面update.jsp。
pageEncoding="utf-8"%>
加载页面String url="jdbc:oracle:thin:@localhost:1521:orcl"; //添加Oracle的连接地址,localhost即默认本机地址
String user="student"; //数据库的帐号
String password="student";//数据库的密码
Connection conn= DriverManager.getConnection(url,user,password); //将url,user和password实现数据库的连接
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);//实例化Statement对象
String sql="select * from sparametertbl t where t.PARAMETER='autoChecking' "; //查询语句
String sql2="update sparametertbl t set t.value='0' where t.parameter='autoChecking'";//修改语句1
String sql3="update sparametertbl t set t.value='1' where t.parameter='autoChecking'";//修改语句2
ResultSet rs=stmt.executeQuery(sql); //执行查询操作
String flag="";
while(rs.next()) { //利用循环获取结果集的数据
flag=rs.getString(2);
}
String show="";
if(flag.equals("1")){//当结果是1的时候置换成0
stmt.executeUpdate(sql2);//执行修改操作
show="关闭";
flag="0";
}else{ //当结果是0的时候置换成1
stmt.executeUpdate(sql3);//执行修改操作
show="开启";
flag="1";
}
rs.close(); //关闭rs
stmt.close(); //关闭操作
conn.close(); //关闭连接
%>
当前自动检测的状态是:
3、创建含Ajax的调用页面,index.jsp
pageEncoding="utf-8"%>
自动检测更改页面String url="jdbc:oracle:thin:@localhost:1521:orcl";
String user="student";
String password="student";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from sparametertbl t where t.PARAMETER='autoChecking' ";
ResultSet rs=stmt.executeQuery(sql);
String flag="";
while(rs.next()) {
flag=rs.getString(2);
}
String show="";
if(flag.equals("1")){
show="开启";
}else{
show="关闭";
}
rs.close();
stmt.close();
conn.close();
%>
当前自动检测的状态是: flag:
function docheck()
{
if(confirm("确定要修改状态吗?"))
{
jQuery.ajax({
cache: false,//清除缓存操作
url : "update.jsp",//URL指向要调用的页面
dataType:'jsp'//类型是JSP
});
location.reload();//刷新页面操作
} else{
}
}
4、最终效果:刚开始为关闭状态。点击按钮,提示是否改变状态,点击是。这时候Ajax触发另外一个页面的Java代码,SQL的update被执行。自动刷新页面,这时候显示为开启状态。当再次点击时,状态会再次发生改变。