首页>代码>Spring MVC+Freemarker+Bootstrap整合实现spring-data-redis增删改查的入门学习实例>/springmvc_redis_freemarker_bootstrap_demo/src/main/java/com/zuidaima/controller/UserController.java
package com.zuidaima.controller;

import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.UUID;

import javax.annotation.PostConstruct;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ZSetOperations;
import org.springframework.data.redis.core.ZSetOperations.TypedTuple;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

import com.zuidaima.module.User;

@Controller
@RequestMapping("user")
public class UserController {

	@Autowired
	public RedisTemplate<String, String> redisTemplate;
	public ZSetOperations<String, String> zsetOps;
	public HashOperations<String, String, Object> zhashOps;

	public static final String REDIS_KEY_USER_IDS = "user_ids";

	public static final String REDIS_KEY_USER = "user_%s";

	@PostConstruct
	public void init() {
		zsetOps = redisTemplate.opsForZSet();
		zhashOps = redisTemplate.opsForHash();
	}

	@RequestMapping(value = "", method = RequestMethod.GET)
	public String index(@RequestParam(value = "p", required = false) Integer p,
			ModelMap model) throws UnsupportedEncodingException {
		if (p == null || p <= 0) {
			p = 1;
		}
		int total = zsetOps.zCard(REDIS_KEY_USER_IDS).intValue();
		int pageSize = 5;
		int pageTotal = total / pageSize + (total % pageSize > 0 ? 1 : 0);
		if (pageTotal > 0 && p > pageTotal) {
			p = pageTotal;
		}
		int start = (p - 1) * pageSize;
		int end = p * pageSize - 1;

		// 按创建时间倒叙排序
		Set<TypedTuple<String>> _ids = zsetOps.reverseRangeWithScores(
				REDIS_KEY_USER_IDS, start, end);
		List<User> users = new ArrayList<User>();
		Iterator<TypedTuple<String>> iterator = _ids.iterator();
		while (iterator.hasNext()) {
			TypedTuple<String> _id = iterator.next();
			String id = _id.getValue();
			String userKey = String.format(REDIS_KEY_USER, id);
			String createTime = zhashOps.get(userKey, User.PRO_CREATETIME)
					.toString();
			String name = new String(zhashOps.get(userKey, User.PRO_NAME)
					.toString().getBytes("iso8859-1"), "utf-8");
			User user = new User();
			user.setCreateTime(createTime);
			user.setName(name);
			user.setId(id);
			users.add(user);
		}
		model.put("users", users);
		model.put("total", total);
		model.put("p", p);
		model.put("page_total", pageTotal);
		return "user/index";
	}

	@RequestMapping(value = "create", method = RequestMethod.GET)
	public void create(ModelMap model) {
		User user = new User();
		model.put("user", user);
	}

	@RequestMapping(value = "create", method = RequestMethod.POST)
	public String create(@ModelAttribute("user") User user) {
		UUID uuid = UUID.randomUUID();
		String id = uuid.toString().replaceAll("\\-", "");
		user.setId(id);
		Date now = new Date();
		user.setCreateTime(now.toLocaleString());
		String userKey = String.format(REDIS_KEY_USER, id);
		zhashOps.put(userKey, User.PRO_ID, id);
		zhashOps.put(userKey, User.PRO_NAME, user.getName());
		zhashOps.put(userKey, User.PRO_CREATETIME, user.getCreateTime());
		zsetOps.add(REDIS_KEY_USER_IDS, id + "", now.getTime());
		return "redirect:/user.htm";
	}

	@RequestMapping(value = "delete", method = RequestMethod.GET)
	public String delete(@RequestParam(value = "id", required = false) String id) {
		String userKey = String.format(REDIS_KEY_USER, id + "");
		redisTemplate.delete(userKey);
		zsetOps.remove(REDIS_KEY_USER_IDS, id);
		return "redirect:/user.htm";
	}
}
最近下载更多
gaoxin222  LV14 2024年12月18日
1335203  LV10 2022年7月1日
1690356080  LV38 2021年5月28日
zhaoming200677  LV13 2021年1月20日
泪染珍珠  LV9 2020年9月8日
蛇头凌志  LV8 2020年8月15日
weixiaoderen123  LV2 2020年3月8日
skipple3  LV39 2020年2月26日
feiying985  LV11 2019年10月19日
build138  LV20 2019年6月16日
最近浏览更多
gaoxin222  LV14 2024年12月18日
xwpvip 2023年7月6日
暂无贡献等级
是一个鸽子啊  LV17 2023年6月14日
youwuzuichen  LV11 2023年3月27日
jsq233 2023年3月13日
暂无贡献等级
banerwu  LV3 2023年1月3日
幸存者hhhhh 2022年7月7日
暂无贡献等级
1335203  LV10 2022年7月1日
qq1466625431  LV6 2022年6月28日
刘亦菲9527  LV15 2022年2月12日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友