问题:
RPC,所谓远程调用,就是由服务消费者发起请求调用服务提供者中的方法完成功能处理,然后服务提供者再将执行结果响应给服务消费者的一个过程。那么浏览器和服务器的交互方式,好像就是远程调用,那么我们能不能参照
浏览器和服务器交互的模式来实现项目之间的远程调用呢?
方案:
- 服务器消费者--->浏览器--->在服务消费者中声明类似浏览器发起请求和接收响应的代码。
- 服务器提供者--->MVC的web项目
实现:
HttpClient
使用:
1、服务提供者的代码就是正常的Web项目
2、服务器消费中导入HttpClient的jar包,然后编写相关代码完成rpc远程调用,参照源码
一.服务提供方代码
package com.bjsxt.controller;
import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.alibaba.fastjson.JSON;
import com.bjsxt.pojo.Pet;
import com.bjsxt.service.PetService;
@Controller
public class PetCon {
@Resource
private PetService petServiceImpl;
/**
* 获取所有的宠物信息
*/
@RequestMapping("pet")
public String getPet(HttpServletRequest req){
List<Pet> pl = petServiceImpl.getPetInfoService();
req.setAttribute("pl", pl);
return "pet.jsp";
}
/**
* 获取所有的宠物信息
* @param pname
* @param color
* @return
*/
@ResponseBody
@RequestMapping("pet2")
public List<Pet> getPet(String pname,String color){
System.out.println("Pet2请求数据===="+pname+":"+color);
List<Pet> pl = petServiceImpl.getPetInfoService();
return pl;
}
/**
* 处理Ajax请求,返回所有的宠物信息,Jsop方式
* @param pname
* @param color
* @return
* callback({name:zhansgan,age:18})
*/
@ResponseBody
@RequestMapping(value="petAjax",produces="text/script;charset=UTF-8")
public String getPetAjax(String callback,String pname,String color){
System.out.println("getPetAjax请求数据==跨域=="+pname+":"+color);
List<Pet> pl = petServiceImpl.getPetInfoService();
//将数据转换为json字符串
String jsonString = JSON.toJSONString(pl);
return callback+"("+jsonString+")";
}
/**
* 获取所有的宠物信息,coresFilter方式
*/
@ResponseBody
@RequestMapping("petFilter")
public List<Pet> getPetFilter(String pname,String color){
System.out.println("Pet2请求数据===="+pname+":"+color);
List<Pet> pl = petServiceImpl.getPetInfoService();
return pl;
}
}
service接口和service实现类略....
pom.xml文件如下..
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocatio

本文介绍了如何通过HttpClient来实现RPC的远程调用。详细讲述了从问题的提出,到解决方案的设计,再到具体的实现步骤。重点讲解了服务消费方的代码实现,包括引入HttpClient依赖,以及如何编写调用服务的代码。同时,提供了服务提供方的简单概述,并附带了一个常用的HttpClient工具类的封装示例。
最低0.47元/天 解锁文章
424

被折叠的 条评论
为什么被折叠?



