安博电竞入口_anggame安博电竞_安博网站
安博电竞入口

韩国色情电影,3d地图-安博电竞入口_anggame安博电竞_安博网站

admin admin ⋅ 2019-05-21 08:18:58

关于程序中一些字典信息、装备信息应该在程序启动时加载到缓存中,用时先到缓存中取,假如没有射中,再到数据库中获取一起放到缓存中,这样做能够减轻数据库层的压力。现在暂时先整合ehcache缓存,一起预留了集成redis和memcached的接口。

先开发两个最基本的功用,便是注册和登录,关于页面简直便是直接用bootstrap的风格,现在没有过多的规划。

1、整合ehcache

在spring boot中整合ehcache仍是很便利的,首要增加依靠:


org.springframework.boot
spring-boot-starter-cache



net.sf.ehcache
ehcache
2.10.2

新增ehcache的装备韩国色情电影,3d地图-安博电竞进口_anggame安博电竞_安博网站文件,ehcache.xml,即:


xsi:noNamespaceSchemaLocation="ehcache.xsd"
updateCheck="false"
monitoring="autodetect"
dynamicConfig="true韩国色情电影,3d地图-安博电竞进口_anggame安博电竞_安博网站">




name="SystemTempCache"
maxEntriesLocalHeap="0"
maxEntriesLocalDisk="10屠门镇之关西荡寇000000"
eternal="false"
timeToIdleSeconds="0"
timeToLiveSeconds="600"
ove韩国色情电影,3d地图-安博电竞进口_anggame安博电竞_安博网站rflowToDisk="false"
diskPersistent="false"
dis051095510kExpiryThreadIntervalSeconds="120"
diskSpoolBufferSizeMB="30"
memoryStoreEvictionPolicy="LRU">



name="Sys帅哥自拍t岳子豪emEternalCache"
maxEntriesLocalHeap龙之色韩国色情电影,3d地图-安博电竞进口_anggame安博电竞_安博网站="0"
maxEntriesLocalDisk="10000000"
eternal="true"
overflowToDisk="false"
diskPersistent="false"
diskExpiryThreadIntervalSeconds="120"
diskSpoolBufferSizeMB="30"
memoryStoreEvictionPolicy="LRU">



其间设置了两种缓存类型,一个是暂时缓存,另一个是永久缓存。

此处运用缓存办法不是依据注解的,尽管依据注解的办法也很便利,可是个人觉得仍是自己程序控制缓存好一些严康力。

程序中会将站点的装备信息加载到缓存中,那么运用办法如下:

(1)、首要界说一个缓存接口,本程序中需求用到缓存的,有必要完成该接口,即:

package com.swnote.common.cache;

/**
* 缓存接口
*
* @author lzj
* @since 1.0
* @date [2019-04-27]
*/
public interface ICache {
/**
* 依据key获取缓存数据
*
* @param key
* @return
*/
public T get(Object key);

/**
* 寄存缓存数据
*
* @param key
* @param value
*/
public void put(Object key, T value);

/**
* 依据key移除内容
*
* @param key
*/
public void remove(Object key);
}

(2)、站点装备信息缓存ConfigCa瞿博雯che,完成该接口,即:

package com.swnote.common.cache;

import com.swnote.common.domain.Config;
import com.swnote.common.service.IConfigService;
import com.swnote.common.util.Const;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.Cache;
import org.springframework.cache.CacheManager;
import org.springframework.context.annotation.DependsOn;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import java.util.List;

/**
* 缓存装备信息
* 装备信息放到体系永久缓存中,寄存方式为:"_CONFIG" + configId为key,value为装备信息目标
*
* @author lzvalensiyasj
* @since 1.0
* @date [2019-04-27]
*/
@Slf4j
@DependsOn("configService")
@Component("configCac韩国色情电影,3d地图-安博电竞进口_anggame安博电竞_安博网站he")
public class ConfigCache implements ICache {

/**
* 注入依据Spring供给的Cache接口实例,默许由Ehcache完成
* TODO 今后也能够是Redis、Memcached供给完成
*/
@Autowired
private CacheManager cacheManager;

@Autowired
private IConfigService configService;

/**
*老倪除除乐 体系暂时缓存实例
*/
private Cache cache;

/**
* key的前缀
*/
private String keyPrefix = "_CONFIG";

@PostConstruct
public void init() {
// 获取体系永久缓存实例
cache = cacheManager.getCache(Const.CACHE_SYSTEM_ETERNAL);
log.info("获取体系永久缓存实例");

log.info("开端加载一切装备信息");
List configs = configService.list();
if (configs != null &&丈夫楼 !configs.isEmpty()) {
configs.stream().forEach(config -> cache.put(keyPrefix + config.getConfigId(), config));
}
log.info("加载结束一切装备信息");
}

@Over董卿的老公和孩子相片ride
public Config get(Object key) {
Cache.ValueWrapper valueWrapper = cache.get(keyPrefix + key);
if (valueWrapper == null) {
// 此刻从数据库从头加载一次
Config config = configService.getById((String) key);
if (config == null) {
return null;
}

// 再次放韩国色情电影,3d地图-安博电竞进口_anggame安博电竞_安博网站到缓存中
cache.put(keyPrefix + config.getConfigId(), config);

return config;
}
return (Config) valueWrap诱母全攻略per.get();
}

@Override
public void put(Object key, Config value) {
cache.put(keyPrefix + key, value);
}

@Override
public void remove(Object key) {
cache.evict(keyPrefix + key);
}
}

2、注册功用

注册页面作用如下:

页面风格很素,这个暂时先这样。

首要看一下UserController中处理注册信息的要害代码,即:

/**
* 保存注册信息
*
* @param model
* @param request
* @return
*/
@RequestMapping(value = "/auth/signup", method = RequestMethod.POST)
@ResponseBody
public Result signup(Model model, HttpServletRequest request) {
Result result = new Result();
try {
// 接纳参数
String name = request.getParamet韩国色情电影,3d地图-安博电竞进口_anggame安博电竞_安博网站er("name");
String email = request.getParameter("email");
String password = request.getParameter("password");

// 简略校验
if (StringUtils.isEmpty(name) || StringUtils.isEmpty(email) || StringUtils.isEmpty(password)) {
throw n格策一柱擎天ew TipException("短少必要恳求参数");
}

if (!StringUtil.isEmail(email)) {
throw new TipException("邮箱不符全标准");
}

// 校验用户名
User tempUser = userService.getByName(name);
if (tempUser != null && !StringUtils.isEmpty(tempUser.getUserId())) {
throw new TipException("该用户现已注册了");
}

// 校验邮箱
tempUser = userService.getByEmail(email);
if (tempUser != null && !StringUtils.isEmpty(tempUser.getUserId())) {
throw new TipExcep悟空录tion("该邮箱现已注册了");
}

// 获取用户ip
String ip = HttpUtil.getIpAddr(request);

// 构建用户信息
User user = new User();
user.setLoginName(name);
user.setEmail(email);
user.setPassword(StringUtil.md5(password));
user.setCreateIp(ip);

// 保存初水视频水出芙蓉用户信息
boolean flag = userService.create(user);
if (!flag) {
throw new TipException("用户创立失利");
}

result.setCode(Result.CODE_SUCCESS);
result.setMsg("用户创立成功");
} catch (Exception e) {
log.error("用户创立失利", e);
result.setCode(Result.CODE_EXCEPTION);
resul傻子阿七t.setMsg("用户创立失利");
}
return result;
}

在UserService中有一个create办法,即:

@Override
public boolean create(User user) {
// 获取当时时刻
Date now = new Date();

// 设置主键
user.setUserId(IdGenarator.guid());
// 设置未实名认证
user.setRealStatus(User.REAL_STATUS_NO);

// 用户是否需求激活
Config config = configCache.get(Const.CONFIG_USER_ACTIVE);
if (config != null && "1".equals(config.getConfigValue())) {
// TODO 发送激活邮件信息
// 阐明需求激活
user.setIsActive(User.ACTIVE_NO);
} else {
// 阐明不需求激活,默许激活
user.setIsActive(User.ACTIVE_YES);
}

// 设置启用账号状况
user.setStatus(User.STATUS_YES);
// 设置创立时刻
user.setCreateTime(now);
// 设置重视数为0
user.setFollows(0);
// 设置粉丝数为0
user.setFans(0);
return save(user);
}

此处有一个还没有完成的功用,便是发送激活邮件信息,这个功用后边会补上,这儿先处于TODO状况。

3、登录功用

登录页面作用如下:

UserController中要害的代码如下:

/**
* 处理登录信息
*
* @param r撸管是什么equest
* @return
*/
@RequestMapping(value = "/auth/login", method = RequestMethod.POST)
@ResponseBody
public Result login(HttpServletRequest request, HttpSession session) {
Result result = new Result();
try {
// 接纳参数
String name沈文裕被父亲毁了 = request.getParameter("name");
String password = request.getParameter("password");

if (StringUtils.isEmpty(name) || StringUtils.isEmpty(password)) {
throw new TipException("短少必要恳求参数");
}

// 获取用户ip
String ip = HttpUtil.getIpAddr(request);

User user = userService.verifyUser(name, password, ip);
if (user == null) {
thro小学生女w new TipException("用户名或暗码过错");
}

// 放置session信息
session.setAttribute(Const.SESSION_USER, user);

// TODO 还有一些相关计算信息,后边再加上

result.setCode(Result.CODE_SUCCESS);
result.setMsg("登录成功");
} catch (TipException e) {
result.setCode(Result.CODE_EXCEPTION);
result.setMsg(e.getMessage());
} catch (Exception e) {
log.error("登录失利", e);
result.setCode(Result.CODE_EXCEPTION);
result.setMsg("登录失利");
}
return result;
}

当用户登录时,还有一些相关计算信息,这儿因为其它功用还没有开发完,所以获取计算信息的代码后边再加上。

相关新闻

admin

admin

TA太懒了...暂时没有任何简介

精彩新闻