SpringMVC代码示例如下:
@RequestMapping(value = "doSendMessageServer",method=RequestMethod.POST, consumes="application/json")
@ResponseBody
public EasyResult doSendMessageServer(@RequestBody JSONObject jsonObject,HttpServletRequest request) {
String userkey=(String)jsonObject.get("userkey");
String content=(String)jsonObject.get("content");
String requestStr = GsonUtils.toJson(userkey) + GsonUtils.toJson(content);
logger.info("发送消息。req:" + requestStr);
try {
ChannelUser channelUser=null;
ChannelId channelId=CacheChannelUser.userkeyChannelId.get(userkey);
if(channelId!=null){
// 查找对应id的channel
channelUser=CacheChannelUser.cacheChannel.get(channelId.toString());
// channelUser=CacheChannelUser.cacheChannel.get(userkey);
if (null != channelUser) {
//test
itstack.demo.netty.server.pojo.Result result=new itstack.demo.netty.server.pojo.Result();
result.setContent(content);
result.setStatus(1);
result.setType(Global.SEND_SERVER_HANDLE_MSG);
TextWebSocketFrame tws = new TextWebSocketFrame(JSONObject.toJSONString(result));
channelUser.getChannel().writeAndFlush(tws);
} else {
return EasyResult.buildErrResult("对方已经下线");
}
}
return EasyResult.buildSuccessResult();
} catch (Exception e) {
logger.info("发送消息失败。req:" + requestStr, e);
return EasyResult.buildErrResult(e);
}
}
Client代码示例如下:
public static void main(String[] args) {
try {
NettyClient client=new NettyClient();
client.testHttpclient("1111111111");
// client.connect("192.168.3.128", 7398);
} catch (Exception e) {
e.printStackTrace();
}
}
public void testHttpclient(String userkey){
JSONObject jsonParam=new JSONObject();
jsonParam.put("userkey", userkey);
jsonParam.put("content", "这是内容");
String url="http://192.168.31.199:8080/itstack-demo-netty-server-web/socketServerController/doSendMessageServer.do";
try {
HttpClientUtil.httpPost(url, jsonParam);
// HttpClientUtil.doGet(url+"?userkey=1212&content=12312","UTF-8");
} catch (Exception e) {
e.printStackTrace();
}
}
HttpClientUtil工具类:
import java.io.IOException;
import java.net.URLDecoder;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.alibaba.fastjson.JSONObject;
public class HttpClientUtil {
private static Logger logger = LoggerFactory.getLogger(HttpClientUtil.class); //日志记录
/**
* httpPost
* @param url 路径
* @param jsonParam 参数
* @return
*/
public static JSONObject httpPost(String url,JSONObject jsonParam){
return httpPost(url, jsonParam, false);
}
/**
* post请求
* @param url url地址
* @param jsonParam 参数
* @param noNeedResponse 不需要返回结果
* @return
*/
public static JSONObject httpPost(String url,JSONObject jsonParam, boolean noNeedResponse){
//post请求返回结果
DefaultHttpClient httpClient = new DefaultHttpClient();
JSONObject jsonResult = null;
HttpPost method = new HttpPost(url);
try {
if (null != jsonParam) {
//解决中文乱码问题
StringEntity entity = new StringEntity(jsonParam.toString(), "utf-8");
entity.setContentEncoding("UTF-8");
entity.setContentType("application/json");
method.setEntity(entity);
}
HttpResponse result = httpClient.execute(method);
url = URLDecoder.decode(url, "UTF-8");
/**请求发送成功,并得到响应**/
if (result.getStatusLine().getStatusCode() == 200) {
String str = "";
try {
/**读取服务器返回过来的json字符串数据**/
str = EntityUtils.toString(result.getEntity());
if (noNeedResponse) {
return null;
}
/**把json字符串转换成json对象**/
jsonResult=JSONObject.parseObject(str);
} catch (Exception e) {
logger.error("post请求提交失败:" + url, e);
}
}
} catch (IOException e) {
logger.error("post请求提交失败:" + url, e);
}
return jsonResult;
}
/**
* 发送get请求
* @param url 路径
* @return
*/
public static JSONObject httpGet(String url){
//get请求返回结果
JSONObject jsonResult = null;
try {
DefaultHttpClient client = new DefaultHttpClient();
//发送get请求
HttpGet request = new HttpGet(url);
HttpResponse response = client.execute(request);
/**请求发送成功,并得到响应**/
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
/**读取服务器返回过来的json字符串数据**/
String strResult = EntityUtils.toString(response.getEntity());
/**把json字符串转换成json对象**/
jsonResult=JSONObject.parseObject(strResult);
url = URLDecoder.decode(url, "UTF-8");
} else {
logger.error("get请求提交失败:" + url);
}
} catch (IOException e) {
logger.error("get请求提交失败:" + url, e);
}
return jsonResult;
}
}
相关推荐
SpringMVC作为一个强大的MVC框架,提供了便捷的方式来处理文件上传。本示例主要探讨如何使用SpringMVC实现在不同服务器之间的文件上传,以实现文件服务器与业务逻辑的解耦。 首先,我们需要理解为什么要进行跨...
HttpClient库是由Apache软件基金会开发的,广泛应用于各种网络通信场景,包括数据的获取、上传、下载等。本篇文章将详细介绍如何使用HttpClient进行HTTP请求,并提供一个完整的Java代码实例。 首先,我们需要引入...
本项目结合了SpringMVC的多数据源配置和HttpClient的文件上传功能,实现了复杂的企业级应用需求。在实际开发中,根据业务场景的不同,可能还需要处理更多细节,如数据源的负载均衡、错误处理和日志记录等。理解和...
1. 创建HttpClient实例:配置连接池、超时等参数。 2. 构建HttpGet、HttpPost或其他HttpMethod对象,设置URL和请求头。 3. 将请求体(如果有的话)转化为适合的格式,如JSON。 4. 执行HTTP请求并获取HttpResponse。 ...
首页修改 dateformat.js 时间参数转换 SpringMVC配置文件集中 快递参数接口 1.1.4 des加解密字符串和文件 1.1.5 redis 加锁,redis升级成2.8.2 freemarker工具类 1.1.6 spring websocket 实现在线聊天 maven升级...
首页修改 dateformat.js 时间参数转换 SpringMVC配置文件集中 快递参数接口 1.1.4 des加解密字符串和文件 1.1.5 redis 加锁,redis升级成2.8.2 freemarker工具类 1.1.6 spring websocket 实现在线聊天 maven升级...
首页修改 dateformat.js 时间参数转换 SpringMVC配置文件集中 快递参数接口 1.1.4 des加解密字符串和文件 1.1.5 redis 加锁,redis升级成2.8.2 freemarker工具类 1.1.6 spring websocket 实现在线聊天 maven升级...
首页修改 dateformat.js 时间参数转换 SpringMVC配置文件集中 快递参数接口 1.1.4 des加解密字符串和文件 1.1.5 redis 加锁,redis升级成2.8.2 freemarker工具类 1.1.6 spring websocket 实现在线聊天 maven升级...
总的来说,`httpmime4.1.1.jar`是SpringMVC中实现文件上传的关键组件,它借助于强大的Apache HttpClient库,为开发者提供了方便、可靠的文件上传解决方案。无论是在SpringMVC框架内还是独立使用,它都能帮助我们有效...
首页修改 dateformat.js 时间参数转换 SpringMVC配置文件集中 快递参数接口 1.1.4 des加解密字符串和文件 1.1.5 redis 加锁,redis升级成2.8.2 freemarker工具类 1.1.6 spring websocket 实现在线聊天 maven升级...
这个服务类将处理所有与API交互的逻辑,包括请求的构建、参数设置、签名计算等。 SpringMVC作为前端控制器,负责接收HTTP请求,调用后端服务,并将结果返回给前端。在这个案例中,前端可能会有一个上传图片的表单,...
3. **发送HTTP请求**:利用Java的HttpURLConnection或者第三方库如Apache HttpClient,构造POST请求并附带鉴权信息和请求参数。 4. **解析响应结果**:接收到服务器的响应后,解析JSON格式的返回数据,提取出人脸...
MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。依赖版本为`<mybatis.version>3.2.8</mybatis.version>`。 4. **MySQL数据库**:MySQL是广泛使用的开源关系型数据库管理系统,用于存储和查询数据。...
- SpringMVC - Spring - MyBaits - MyBatis Generator - MyBatis PageHelper - Druid - Lombok - JWT - Spring Security - JavaMail - Thymeleaf - HttpClient - FileUpload - Spring Scheduler - Hibernate ...
│ 06.FastDFS安装步骤-文件上传.avi │ 07.配置nginx插件访问图片.avi │ 08.测试图片上传.avi │ 09.FastDFS工具类的使用.avi │ 10.图片上传过程分析.avi │ 11.图片上传Service.avi │ 12.图片上传完成.avi │ ...
`commons-fileupload.jar` 用于处理 MultipartFile 类型的请求参数,支持文件上传功能。 `jackson` 或 `gson` 系列的 jar 包则用于 JSON 数据的序列化和反序列化,Spring MVC 可以通过它们将 Java 对象转换成 JSON ...
进去之后会触发一个页面刷新的方法,之后在里面填写寄存产品的信息 其中,会员信息和产品信息都是从数据库中查询出来的,可以进行自动赋值,还有寄存单号是自动生成的随机数,之后金额的value也是在...短信HttpClient
13. **项目国际化**:Struts2或SpringMVC的国际化支持。 14. **数据校验**:Struts2的Validator,Spring的Validation。 15. **网络蜘蛛**:爬虫技术,网页抓取。 16. **对象缓存**:内存缓存机制,如Ehcache。 17. *...