linux下的Redis+spring+struts2实现点赞功能(八)
来源:互联网 发布:极速法术升级数据 编辑:程序博客网 时间:2024/06/04 19:00
使用Redis实现点赞功能,其实就是利用了jredis中的incr()方法,
这个方法每运行一次,其中对应的值就会加1,默认从0开始。
更多关于redis的方法:http://langgufu.iteye.com/blog/1434408
思路:
可以将点赞和踩这个两个功能,看做一个实体类的属性,
后面其实就是对它属性的操作。
1,在前台页面通过Struts2发送请求到后台。
2,定义接口实现点赞功能,在业务层中由spring创建redis池,从其中取到一个jedis。
调用其incr(),来实现。
3,通过action调用业务层,并将数据返回到页面。
通过后面的代码展示会更加详细了解这个功能的实现。
效果展示:
代码部分:
1,web.xml配置:
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd http://xmlns.jcp.org/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_9" version="2.4"> <display-name>Struts Blank</display-name> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:spring*.xml</param-value> </context-param> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener></web-app>
2,spring配置:
<context:property-placeholder location="classpath:redis.properties" /> <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"> <property name="maxTotal" value="${redis.pool.maxActive}" /> <property name="maxIdle" value="${redis.pool.maxIdle}" /> <property name="maxWaitMillis" value="${redis.pool.maxWait}" /> <property name="testOnBorrow" value="${redis.pool.testOnBorrow}" /> </bean> <bean id="shardedJedisPool" class="redis.clients.jedis.ShardedJedisPool" > <constructor-arg index="0" ref="jedisPoolConfig" /> <constructor-arg index="1"> <list> <bean class="redis.clients.jedis.JedisShardInfo"> <constructor-arg index="0" value="${redis.ip}" /> <constructor-arg index="1" value="${redis.port}" type="int" /> </bean> </list> </constructor-arg> </bean>
3,struts2配置:
<constant name="struts.enable.DynamicMethodInvocation" value="false" /><constant name="struts.devMode" value="true" /><constant name="struts.action.extension" value="action,do,,"/><constant name="struts.objectFactory" value="spring" /><package name="default" namespace="/" extends="json-default"> <action name="User_*" class="com.yc.web.actions.UserAction" method="{1}"> <result name="success" type="json"> <param name="root"> jsonModel </param> </result> </action></package>
4,redis.properties配置:
redis.pool.maxActive=1024
redis.pool.maxIdle=200
redis.pool.maxWait=1000
redis.pool.testOnBorrow=true
redis.pool.testOnReturn=true
redis.ip=192.168.14.215
redis.port=6379
5,jsp页面代码:
<style>#head { font-family: cursive; font-size: 25px; color: orange; cursor: pointer;}#content {height =300px; font-family: cursive; font-size: 20px;}.ding { border: 1px solid blue; height: 60px; width: 70px; margin-left: 150px; padding-left10px; float: left; background: #FFF;}.ding img { display: inline-block; margin-top: 15px; margin-left: 10px; cursor: pointer;}.sding { float: left; margin-top: 16px; font-family: cursive; text-decoration: underline;}</style><script src="js/jquery-1.11.3.js"></script><script type="text/javascript"> //当这个页面加载完毕 则给 loginbtn绑定单击事件 $(function() { $.ajax({ type : "POST", url : "User_Find.action", dataType : 'JSON', success : function(data) { if (data.code == 1) { $("#num").text(data.obj.ding); $("#numcai").text(data.obj.cai); } else { alert(data); } } }); }); function addDing() { $.ajax({ type : "POST", url : "User_Ding.action", dataType : 'JSON', success : function(data) { if (data.code == 1) { $("#num").text(data.obj.ding) } else { alert(data); } } }); }function addCai(){ $.ajax({ type:"POST", url:"User_Cai.action", dataType:'JSON', success: function(data){ if(data.code==1){ $("#numcai").text(data.obj.cai); }else{ alert(data); } } }); }</script></head><body> <center> <div style="background: #0F0; height: 400px; width: 600px;"> <table CELLPADDING="0" border="1px" bordercolor="yellow" height="400px" width="600px"> <tr> <th id="head" align="left" height="50px" colspan="3">年度最热门博客</th> </tr> <tr id="content"> <td height="200" colspan="3">都说飞得越高,摔得越惨,但是我想看看我到底会摔得有多惨,落地了,只要没死,那么爬起来,每走一步都是向上! <br> </br> 时间并不会真的帮我们解决什么问题,它只是把原来怎么也想不通的问题,变得不再重要了。 </td> </tr> <tr> <td colspan="3"> <div class="ding"> <span class="sding">顶</span><img alt="tup" src="images/ding.gif" onclick="addDing()"><span id="num"></span> </div> <div class="ding"> <span class="sding">踩</span><img alt="tup" src="images/cai.gif" onclick="addCai()"><span id="numcai"></span> </div> </td> </tr> </table> </div> </center></body>6,接口代码:public interface UserService { public String Ding(); public String Cai() ; public String[] Find() ;}
7,实现类,即业务层代码:
@Service(“userServiceImpl”)
public class UserServiceImpl implements UserService {
@Autowired
private ShardedJedisPool shardedJedisPool;
@Override
public String Ding() {
ShardedJedis jedis=shardedJedisPool.getResource();
jedis.incr(“User:ding”);
// 获取存储的数据并输出
String num = jedis.get(“User:ding”);
return num;
}
@Overridepublic String Cai() { // 设置 redis 字符串数据 ShardedJedis jedis=shardedJedisPool.getResource(); jedis.incr("User:cai"); // // 获取存储的数据并输出 String num = jedis.get("User:cai"); return num;}@Overridepublic String[] Find() { ShardedJedis jedis=shardedJedisPool.getResource(); // // 获取存储的数据并输出 String s[]=new String[2]; s[0] = jedis.get("User:ding"); s[1] = jedis.get("User:cai"); return s;}public void setShardedJedisPool(ShardedJedisPool shardedJedisPool) { this.shardedJedisPool = shardedJedisPool;}
}
8,action处理代码:
@Controller(“userAction”)
public class UserAction extends ActionSupport implements ModelDriven {
private User user;
/** * */private static final long serialVersionUID = 1825223373127715747L;private JsonModel jsonModel = new JsonModel();@Autowiredprivate UserService userServiceImpl;public JsonModel getJsonModel() { return jsonModel;}public void setJsonModel(JsonModel jsonModel) { this.jsonModel = jsonModel;}public String Ding() { //User user = new User(); //UserService userService=new UserServiceImpl(); //System.out.println("ding 来了。。。。"); String num=userServiceImpl.Ding(); if(num!=null&&!"".equals(num)){ user.setDing(Integer.parseInt(num)); jsonModel.setCode(1); jsonModel.setObj(user); } return SUCCESS;}public String Cai() { //User user = new User(); //UserService userService=new UserServiceImpl(); String num=userServiceImpl.Cai(); if(num!=null&&!"".equals(num)){ user.setCai(Integer.parseInt(num)); jsonModel.setCode(1); jsonModel.setObj(user); } return SUCCESS;}public String Find() { //User user = new User(); //UserService userService=new UserServiceImpl(); String num[]=userServiceImpl.Find(); user.setCai(Integer.parseInt(num[1])); user.setDing(Integer.parseInt(num[0])); jsonModel.setCode(1); jsonModel.setObj(user); return SUCCESS;}@Overridepublic User getModel() { user=new User(); return user;}
}
9,实体类:
public class User {
private int ding;
private int cai;public int getCai() { return cai;}public void setCai(int cai) { this.cai = cai;}public int getDing() { return ding;}public void setDing(int ding) { this.ding = ding;}
}
- linux下的Redis+spring+struts2实现点赞功能(八)
- (八)linux下编程实现ls功能的打开、访问 、关闭目录以及提取属性。
- Redis 点赞功能的应用
- 深入理解Spring Redis的使用 (八)、Spring Redis实现 注解 自动缓存
- 点赞功能的实现
- (spring redis第二章)Spring+Redis+Nginx实现不同服务器下的Session共享
- linux下的redis+spring集群整合(七)
- Spring学习(八)spring整合struts2
- redis实现点赞
- Spring-Data Redis 实现验证码的功能
- Spring+Struts2+JQuery配合实现简单的登录功能
- struts2-spring-hibernate实现员工的增删查功能
- struts2+spring+hibernate实现ARDU功能(ssh整合)
- Redis应用2-Redis实现开发者头条页面点赞功能
- Redis实现高并发下的抢购、秒杀功能
- Redis实现高并发下的抢购、秒杀功能
- redis实现高并发下的抢购/秒杀功能
- 一个“点赞”功能的实现代码
- Android API Guides---Toggle Buttons
- Oracle数据库--实用操作(6)触发器
- java枚举使用详解
- 谈谈你对面向对象的理解
- PHP编译执行Java源文件并重定向输出
- linux下的Redis+spring+struts2实现点赞功能(八)
- 头文件
- HDU2602 Bone Collector 01背包DP 模板题
- Java自动拆箱和装箱
- 函数模板(二)
- Mercurial版本管理系统
- n个元素进栈,共有多少种出栈顺序?
- 自定义属性的应用
- PPT--基础入门