JDK1.6版添加了新的ScriptEngine类,允许用户直接执行js代码。
我们提供的服务有:成都做网站、网站制作、微信公众号开发、网站优化、网站认证、北海街道ssl等。为1000+企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的北海街道网站制作公司
在Java中直接调用js代码
不能调用浏览器中定义的js函数,会抛出异常提示ReferenceError: “alert” is not defined。
package com.sinaapp.manjushri;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException; /** * 直接调用js代码 */
public class ScriptEngineTest {
public static void main(String[] args) {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("javascript");
try{
engine.eval("var a=3; var b=4;print (a+b);");
// engine.eval("alert(\"js alert\");"); // 不能调用浏览器中定义的js函数 // 错误,会抛出alert引用不存在的异常
}catch(ScriptException e){
e.printStackTrace();
}
}
}
答:jsp中java代码可以写在js中。
示例如下:
script type="text/javascript"
function check(){
var username=document.getElementById("username");
var username=document.getElementById("password");
//java代码块
%
String sql="select * from Manger";
String user;
String pass;
ResultSet rs=DBHelper.query(sql);//sql代码已经写好在被的类中,此处为直接调用!!
while(rs.next()){
user=rs.getString("username");
pass=rs.getString("password");%
if(username.value=="%=user %" passsword.value=="%=pass%")
{
return true;
}else if(username.value==""|| password.value==""){
username.setCustomValidity("账号或密码不能为空");
return false;
}else{
username.setCustomValidity("账号或密码错误,请从新输入");
return false;
}
%
}
%
}
/script
js与java是不同语言,运行在不同环境下,因此无法直接获得对方数据。
java运行在服务器端,在同一个jsp文件中,java先运行,js后运行,java可以生成一段js代码,保证js运行得到相应的结果,因此可以用java定义js变量的方式来传递数据,例如:
script
var url="%=url%";
alert(username);
/script
上面例子,%%中的内容会在服务器端运行,在“”中间输出网址,浏览器就会加载下面的结果:
script
var url="gif8.cn";
alert(url);
/script
这部分就是标准的js代码了。
如果页面是JSP页面,则可以直接嵌套写,如:
javascriptvar jsstr = "abc";/javascript
% String str = new String(" % javascriptjsstr/javascript% "; %
如果是HTML页面,则只有用DWR调用JAVA方法进行值的传递。
js是前台页面应用技术,java是后台应用技术,js后台是用不上的,如果需要,可以jsp在前台混插使用。
Java是不可以插入js的,但是可以输出js,一般有以下两种方法:
1.通过request跳转的方式,在中间弹出js代码。
2.可以通过out.print()打印的方式把整个页面打印出来,这中间虽然是Java中输出,但是也是输出的页面。
大体这么多,也可能有我不知道的方法,如果觉的可以,给分,谢谢。
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款