我想使用spring mvc控制器获取用户输入命令和参数,然后调用sendCommand方法。
调用网址,如:
http://127.0.0.1:8090/offheap/cmd?command=set a 1 b 2 c 3
控制器将接受以下命令作为字符串。
设置a 1 b 2 c 3
然后它将调用sendCommand方法将键a设置为值1;键b,值2;键c,值3进入本地缓存。
下面的控制器代码:
@ResponseBody
@RequestMapping(value = "/offheap/cmd")
public String userInput(@RequestParam String command) {
String[] commandArray = command.split(" ");
String cmd = StringUtils.upperCase(commandArray[0]);
Object result;
if (commandArray.length > 1) {
//TODO, how to construct the args??
byte[][] args = null;
result = ohcCacheStrategy.sendCommand(OffheapCacheCommand.valueOf(cmd), args);
} else {
result = ohcCacheStrategy.sendCommand(OffheapCacheCommand.valueOf(cmd));
}
return JSON.toJSONString(result);
}
下面的SendCommand方法代码:
public Object sendCommand(OffheapCacheCommand command, byte[]... args) {
//logic here, will ignore.
}
我知道要使用byte [] ... args,一个应该构造一个byte [] []数组,其中包含要传递给sendCommand方法的数据。
但是问题是byte [] []数组很难构造。
有人会构造这个byte [] []数组吗?
答案 0 :(得分:0)
根据下面的代码解决了它。
public String sendCommand(@RequestParam String command, @RequestParam String args) {
String cmd = StringUtils.upperCase(command);
String[] argsArray = args.split(" ");
Object result;
if (argsArray.length > 0) {
byte[][] byteArray = new byte[argsArray.length][];
for (int i = 0; i < argsArray.length; i++) {
byte[] element = SerializationUtils.serialize(argsArray[i]);
byteArray[i] = element;
}
result = ohcCacheStrategy.sendCommand(OffheapCacheCommand.valueOf(cmd), byteArray);
} else {
result = ohcCacheStrategy.sendCommand(OffheapCacheCommand.valueOf(cmd));
}
return JSON.toJSONString(result);
}