现在的位置: 首页 > 综合 > 正文

JavaScript控制JSP中的Java代码

2017年10月11日 ⁄ 综合 ⁄ 共 3119字 ⁄ 字号 评论关闭

      总所周知,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。

<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<%@ page import="java.sql.*"%>  <!--   添加java的sql包 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>加载页面</title>
</head>
<body>

<%Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); //加载Oracle数据库的驱动   
  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(); //关闭连接   
%>  
当前自动检测的状态是:<%=show%> <%=flag%> 
</body>
</html>

3、创建含Ajax的调用页面,index.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<%@ page import="java.sql.*"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>自动检测更改页面</title>
<script type="text/javascript" src="js/jquery.js" ></script>
</head>
<body>

<%Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();    
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();    
%>  
当前自动检测的状态是:<%=show%> flag: <%=flag%> 


<a href="#" onclick="docheck()"><button type="button">改变状态</button></a>
  <script type = "text/javascript" language = "javascript">  
   function docheck()  
   {   
	   if(confirm("确定要修改状态吗?"))   
       {   
		  jQuery.ajax({
			    cache: false,//清除缓存操作
				url : "update.jsp"	,//URL指向要调用的页面
				dataType:'jsp'//类型是JSP
					});
		  location.reload();//刷新页面操作
		}  else{
		}
   }  
   </script>
   
</body>
</html>

4、最终效果:刚开始为关闭状态。点击按钮,提示是否改变状态,点击是。这时候Ajax触发另外一个页面的Java代码,SQL的update被执行。自动刷新页面,这时候显示为开启状态。当再次点击时,状态会再次发生改变。

 

 

 

 

抱歉!评论已关闭.