• 使用JSONRPC for java(AJAX)实例


    1、首先配置web.xml加入JSON-RPC的servlet监听:

     <servlet>
    <servlet-name>JSONRPCServlet</servlet-name>
    <servlet-class>
    jcore.jsonrpc.servlet.JSONRPCServlet
    </servlet-class>
    <load-on-startup>2</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>JSONRPCServlet</servlet-name>
    <url-pattern>/JRPC</url-pattern>
    </servlet-mapping>
    

    注:如果项目中使用了Sturts2,则需要令配置一个filter来让servlet生效

    2、将JSON-RPC.jar加入项目中

    3、创建需要使用JSON-RPC远程调用的java类

    package jcore.jsonrpc.rpcobj;
    import java.io.Serializable;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;
    import jcore.jsonrpc.common.JsonRpcObject;
    public class MyTestJsonRPC extends JsonRpcObject implements Serializable {
    //注:需要继承JsonRpcObject类,且实现序列化接口
    private List myList = new ArrayList(); private Map map = new HashMap(); public MyTestJsonRPC() { myList.add("good"); //myList.add(new TestDomain()); // map中也可以放入复合对象 map.put("first", "第一条值"); map.put("p2", new Date()); //map.put("domain", myList.get(1)); } /*** * 返回Map对象 * @return */ public Map getMap() { return map; } /*** * 获取一个普通对象 * @return */ public Object getStr() { return myList.get(0); } /*** * 获取一个复合对象 * @return */ public Object getMyObj() { return myList.get(1); } /*** * 获取List对象 * @return */ public List getList() { return myList; } }

    4、将JsonRpcClient.js文件加入项目中(WEB页面需要引入该JS)

    5、前台页面使用JSON-RPC远程调用Java对象

    在需要远程调用的前台页面代码中增加如下内容:

    5.1 jsp中注册需要远程调用的java对象

    <%
    jcore.jsonrpc.common.JsonRpcRegister.registerObject(request, "myTestJsonRPC", jcore.jsonrpc.rpcobj.MyTestJsonRPC.class);
    %>
    
    5.2引入JSON-RPC客户端JS并设置项目的路径变量

    <script charset="UTF-8" type="text/JavaScript" >
    var contextPath="<%=path%>";// 关键的地方
    </script>
    <script charset="UTF-8"  type="text/javascript" src="<%=basePath%>JsonRpcClient.js">
    </script>
    
    注:path变量是jsp页面头定义的变量

    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    5.3远程调用

    <script charset="UTF-8" type="text/JavaScript" >
    //fnGetRpc("MyTestJsonRPC");
    var myrpc = rpc.myTestJsonRPC;
    var  obj=myrpc.getStr();
    alert(obj);
    </script>
    
  • 相关阅读:
    做技术选型时,要注意些什么?
    .net core 实现默认图片
    启用跨源请求 (CORS)
    使用 Cookie 而无需 ASP.NET 核心标识的身份验证
    Windbg+Procdump解决w3wp.exe CPU过百问题
    .NET Core 2.0 Cookie中间件 权限验证
    想要学习设计模式,你得先会看类图,一张图读懂UML
    ef core
    Dapper MySql DateTime 异常
    简单理解Socket
  • 原文地址:https://www.cnblogs.com/jifeng/p/1810698.html
Copyright © 2020-2023  润新知