JS调用Java代码

1、JS调用Java代码:
格式
 <% Java Code %>
<script language="JavaScript">
function window_onload(){
//输出传过来的参数parent.HiddFrame.location.href = "<c:url value="/gyzfgl/zggmgyzfgl.do?method=sqbm_chgsq&d003="/>" +d003+"&d002="+d002+"&forwardName=d003onchange";
<%= request.getParameter("param1") %>
<%
//取得request.setAttribute("gmgyzfsqList", gmgyzfsqList);这种方式传过来的值
    List list = (List)request.getAttribute("gmgyzfsqbhList");
     if(list != null)
   {
    out.println("zggmgyzfglForm.d001.focus()");
 //调用JS方法clear()
   out.println("clear(parent.TopFrame.zggmgyzfglForm.d001)");
       for(int t=0;t<list.size();t++){
              Row qc = (Row)list.get(t);
        out.println("parent.TopFrame.addSelect(parent.TopFrame.zggmgyzfglForm.d001,\"" + qc.getTrimString("d001") + "\",\"" + qc.getTrimString("d001") + "\")");
         }
   }
 %>
 zggmgyzfglForm.action = "<c:url value="/gyzfgl/zggmgyzfgl.do?method=del&pzid="/>"+pzid+"&d001"+d001 ;
 zggmgyzfglForm.submit();
}
//清空下拉列表中的数据
function clear(select)
{
 var len = select.options.length;
 for(i=0; i<len; i++)
 {
 
  select.options.remove(0);
 }
}
//向下拉列表中赋值
function addSelect(select,mc,bm)
{
 select.options.add(new Option(mc,bm));
}
</script>
<body>
 <td align="right">申请编号</td><td><html:select property="d001" style="ime-mode:disabled;width:120" onchange="javascript:sqbm_onchange(this);"> </html:select></td>
</body>


2、Java调用JS代码:
例子1:
<% if (Math.random() < 0.5) { %>
Have a <B>nice</B> day!
<% } else { %>
Have a <B>lousy</B> day!
例子2:
if (Math.random() < 0.5) {
out.println("Have a <B>nice</B> day!");
} else {
out.println("Have a <B>lousy</B> day!");
}
<% } %>
例子3:
function showAlert(){
<%
UserTest test=new UserTest();
String str=test.showStr();//此方法返回一个字符串
request.setAttribute("result",str);//将返回结果存入request中
%>
alert("${requestScope.result}");
}
</script>
例子4:
<%
out.print("<javascript> var a = "+request.getParameter("paraml")+";</javascript>");
%>
这样其实就是在js中申明一个变量,值等于java代码中的一个值


 3、JS调用JSP变量:
 
在js调用jsp变量时,在最外面加单引号
var js变量 = '<%= jsp变量 %>';
Java代码
<%   
     String str="123";   
%>  
在JavaScript中有
Js代码
function getStr()   
{   
    var str_tmp = '<%= str %>' ;   
    alert(str_tmp);   
}  
如果不加单引号('')会提示找不着str;

### 如何在JavaScript中调用Java方法 #### 配置环境和支持技术 为了使JavaScript能够调用Java代码,通常依赖于特定的技术栈或框架支持。对于Web应用程序而言,一种常见的方式是通过DWR (Direct Web Remoting) 实现远程过程调用(RPC)[^1]。 另一种方式适用于嵌入到HTML页面中的Applets场景下,利用LiveConnect机制允许JavaScript直接交互操作Java对象及其成员函数[^4]。 #### 使用DWR库进行RPC调用 假设已经完成了必要的服务器端设置并暴露了一些服务接口供前端访问,则可以在客户端编写如下形式的JavaScript代码: ```javascript // 假设有一个名为'exampleService'的服务被注册到了DWR引擎里, // 并提供了一个叫做'sayHello'的方法可以接受字符串参数返回问候语句。 dwr.engine.remote.call({ url: '/path/to/dwr', methodName: 'sayHello', args: ['World'], callback: function(data){ console.log('Response from Java:', data); } }); ``` 这段代码片段展示了怎样借助DWR发送异步请求给后端运行着的Servlet容器内的某个指定路径下的处理器,并传递所需的数据作为输入参数;一旦收到响应就会触发回调函数执行进一步逻辑处理。 #### 利用反射机制创建可脚本化的实例方法 如果目标不是构建完整的Web应用而是更简单的跨语言互操作需求的话,那么还可以考虑采用基于反射API的方式来动态获取Class类型的MethodInfo对象进而间接达到目的。这里给出一段简化版的例子说明这一思路的具体实践步骤[^2]: ```java public class MyScriptable { public String myJavaInstanceMethod(Double value) throws Exception{ // 这里的业务逻辑可以根据实际应用场景自定义修改... return "Received double value:" + value; } } ``` 接着,在JavaScript这边就可以这样写: ```javascript var clazz = java.lang.Class.forName("MyScriptable"); var methodInfo = clazz.getMethod("myJavaInstanceMethod", [java.lang.Double]); var instance = clazz.newInstance(); var result = methodInfo.invoke(instance, [new java.lang.Double(3.14)]); console.log(result); // 输出: Received double value:3.14 ``` 需要注意的是上述做法仅限于某些特殊环境下有效,比如Rhino JavaScript解释器环境中或是其他具备相似特性的平台之上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值