读书人

netty里集成spring流入jedis

发布时间: 2013-01-26 13:47:01 作者: rapoo

netty里集成spring注入jedis

Jedis是官方推荐的连接redius的客户端,之所以没有使用redis的jdbc的原因是:

1) redis的jdbc的set方法有问题,set字符串,但是取出来的却是字符串长度

2)redis的jdbc的性能低并且不稳定,网上有人做测试证明过。

1.准备好需要的jar包

?

    详情见《netty里集成spring注入mysq连接池》

    3.注入jedis

    ?

    3.1构建访问redis通用类

    在RedisUtil.java里加入

    ?

      在applicationContext.xml里加入

      ?

        访问

        http://127.0.0.1:8081/sfds?username=yifangyou

        ?

        netty里集成spring流入jedis netty里集成spring流入jedis

        ?

        ?

        源码下载:http://down.51cto.com/data/229434

        ?

        修改HttpRequestHandler.java

        ?

        1. package?org.jboss.netty.example.http.snoop; ??? ?
        2. ??import?static?org.jboss.netty.handler.codec.http.HttpHeaders.*; ???import?static?org.jboss.netty.handler.codec.http.HttpHeaders.Names.*; ?
        3. ??import?static?org.jboss.netty.handler.codec.http.HttpResponseStatus.*; ???import?static?org.jboss.netty.handler.codec.http.HttpVersion.*; ?
        4. ?? ?import?java.sql.Connection; ?
        5. import?java.sql.PreparedStatement; ?import?java.sql.ResultSet; ?
        6. ??import?java.util.List; ???import?java.util.Map; ?
        7. ??import?java.util.Map.Entry; ???import?java.util.Set; ?
        8. ?? ???import?org.jboss.netty.buffer.ChannelBuffer; ?
        9. ??import?org.jboss.netty.buffer.ChannelBuffers; ???import?org.jboss.netty.channel.ChannelFuture; ?
        10. ??import?org.jboss.netty.channel.ChannelFutureListener; ???import?org.jboss.netty.channel.ChannelHandlerContext; ?
        11. ??import?org.jboss.netty.channel.ExceptionEvent; ???import?org.jboss.netty.channel.MessageEvent; ?
        12. ??import?org.jboss.netty.channel.SimpleChannelUpstreamHandler; ???import?org.jboss.netty.handler.codec.http.Cookie; ?
        13. ??import?org.jboss.netty.handler.codec.http.CookieDecoder; ???import?org.jboss.netty.handler.codec.http.CookieEncoder; ?
        14. ??import?org.jboss.netty.handler.codec.http.DefaultHttpResponse; ???import?org.jboss.netty.handler.codec.http.HttpChunk; ?
        15. ??import?org.jboss.netty.handler.codec.http.HttpChunkTrailer; ???import?org.jboss.netty.handler.codec.http.HttpRequest; ?
        16. ??import?org.jboss.netty.handler.codec.http.HttpResponse; ?import?org.jboss.netty.handler.codec.http.HttpResponseStatus; ?
        17. ??import?org.jboss.netty.handler.codec.http.QueryStringDecoder; ?import?org.jboss.netty.util.CharsetUtil; ?
        18. ?? ???/** ?
        19. ???*?@author?<a?href="http://www.jboss.org/netty/">The?Netty?Project</a> ????*?@author?Andy?Taylor?(andy.taylor@jboss.org) ?
        20. ???*?@author?<a?href="http://gleamynode.net/">Trustin?Lee</a> ????* ?
        21. ???*?@version?$Rev:?2368?$,?$Date:?2010-10-18?17:19:03?+0900?(Mon,?18?Oct?2010)?$ ????*/?
        22. ??public?class?HttpRequestHandler?extends?SimpleChannelUpstreamHandler?{ ??? ?
        23. ??????private?DatabaseUtil?databaseUtil; ???????private?RedisUtil?redisUtil; ?
        24. ??????private?HttpRequest?request; ???????/**?Buffer?that?stores?the?response?content?*/?
        25. ??????private?final?StringBuilder?buf?=?new?StringBuilder(); ??? ?
        26. ??????@Override???????public?void?messageReceived(ChannelHandlerContext?ctx,?MessageEvent?e)?throws?Exception?{ ?
        27. ??????????????HttpRequest?request?=?this.request?=?(HttpRequest)?e.getMessage(); ???????????????redisUtil.setData("yifangyou",?"testpassword"); ?
        28. ??????????????buf.setLength(0); ???????????????QueryStringDecoder?queryStringDecoder?=?new?QueryStringDecoder(request.getUri()); ?
        29. ??????????????Map<String,?List<String>>?params?=?queryStringDecoder.getParameters();????? ???????????????if?(!params.isEmpty())?{ ?
        30. ??????????????????HttpResponseStatus?httpResponseStatus=HttpResponseStatus.OK;??????????? ???????????????????if(params.containsKey("username")){ ?
        31. ??????????????????????List<String>?values=params.get("username"); ???????????????????????String?username=""; ?
        32. ??????????????????????if(values.size()>0){ ???????????????????????????username=values.get(0); ?
        33. ??????????????????????} ???????????????????????String?password=redisUtil.getData(username); ?
        34. ??????????????????????if(password==null){ ???????????????????????????buf.append("not?found?"); ?
        35. ??????????????????????}else{ ???????????????????????????buf.append(username+"'s?password?is:"+password); ?
        36. ??????????????????????} ???????????????????}else{ ?
        37. ??????????????????????buf.append("miss?username"); ???????????????????}??????? ?
        38. ??????????????????writeResponse(e,httpResponseStatus,buf); ???????????????}else{ ?
        39. ??????????????????buf.append("miss?username"); ???????????????????writeResponse(e,OK,buf); ?
        40. ??????????????} ??????} ?
        41. ? ??????private?void?writeResponse(MessageEvent?e,HttpResponseStatus?httpResponseStatus,StringBuilder?buf)?{ ?
        42. ?????????//?Decide?whether?to?close?the?connection?or?not. ??????????boolean?keepAlive?=?isKeepAlive(request); ?
        43. ? ??????????//?Build?the?response?object. ?
        44. ?????????HttpResponse?response?=?new?DefaultHttpResponse(HTTP_1_1,?httpResponseStatus); ??????????response.setContent(ChannelBuffers.copiedBuffer(buf.toString(),?CharsetUtil.UTF_8)); ?
        45. ?????????response.setHeader(CONTENT_TYPE,?"text/plain;?charset=UTF-8"); ?? ?
        46. ?????????//?Write?the?response. ??????????ChannelFuture?future?=?e.getChannel().write(response); ?
        47. ? ??????????//?Close?the?non-keep-alive?connection?after?the?write?operation?is?done. ?
        48. ?????????future.addListener(ChannelFutureListener.CLOSE); ??????} ?
        49. ? ??????private?void?send100Continue(MessageEvent?e)?{ ?
        50. ?????????HttpResponse?response?=?new?DefaultHttpResponse(HTTP_1_1,?CONTINUE); ??????????e.getChannel().write(response); ?
        51. ?????} ?? ?
        52. ?????@Override??????public?void?exceptionCaught(ChannelHandlerContext?ctx,?ExceptionEvent?e) ?
        53. ?????????????throws?Exception?{ ??????????e.getCause().printStackTrace(); ?
        54. ?????????e.getChannel().close(); ??????} ?
        55. ?????public?void?setDatabaseUtil(DatabaseUtil?databaseUtil)?{ ?
        56. ????????this.databaseUtil?=?databaseUtil; ?????} ?
        57. ?????public?DatabaseUtil?getDatabaseUtil()?{ ?
        58. ????????return?databaseUtil; ?????} ?
        59. ?????public?void?setRedisUtil(RedisUtil?redisUtil)?{ ?
        60. ????????this.redisUtil?=?redisUtil; ?????} ?
        61. ?????public?RedisUtil?getRedisUtil()?{ ?
        62. ????????return?redisUtil; ?????} ?
        63. ?} ?

        本文出自 “一方有” 博客,请务必保留此出处http://yifangyou.blog.51cto.com/900206/628163

读书人网 >互联网

热点推荐