当前位置: 首页 > news >正文

手机网站维护费网站开发包括网站过程

手机网站维护费,网站开发包括网站过程,建筑外观设计网站推荐,网站便宜建设Redis的共享session应用 1. 项目的相关工作 导入sql文件 找到对应的sql文件即可 基本表的信息 基本架构 导入对应的项目文件#xff0c;启动相关的service服务; 在nginx-1.18.0目录下启动命令行start nginx.exe#xff1b; 2. 基于session实现登录的流程 这里利用到Javaweb中… Redis的共享session应用 1. 项目的相关工作 导入sql文件 找到对应的sql文件即可 基本表的信息 基本架构 导入对应的项目文件启动相关的service服务; 在nginx-1.18.0目录下启动命令行start nginx.exe 2. 基于session实现登录的流程 这里利用到Javaweb中cookie和session的内容 Javaweb中的对登录状态的校验 Tomcat会自动把id当做cookie发送个客户端浏览器 从而浏览器解析并存入内存中 然后该会话下一次请求时会携带该cookie信息再次访问并设置请求头id** 服务端就会内存中找是否有id相同的session完成校验登录状态的功能 Redis采用缓存判断用户存在之后将用户信息缓存到ThreadLocal中 3. 实现发送短信验证码功能 写UserService的实现类实现发送验证码的功能 其中校验格式和生成验证码分别采用RegexUtils和RandomUtil工具类 Slf4j Service public class UserServiceImpl extends ServiceImplUserMapper, User implements IUserService {Overridepublic Result sendCode(String phone, HttpSession session) {// 1. 校验手机号if (RegexUtils.isPhoneInvalid(phone)) {// 2. 如果不符合返回错误信息(采用RegexUtils的isPhoneInvalid()方法正则表达式判断手机格式是否正确)return Result.fail(手机号格式错误);}// 3. 符合生成验证码(hutool工具类中到的随机生成方法)String code RandomUtil.randomNumbers(6);// 4. 保存验证码session.setAttribute(code, code);// 5. 发送验证码(模拟发送)log.debug(发送短信验证码成功验证码{}, code);// 返回okreturn Result.ok();} }4. 实现短信验证码登录和注册功能 Override public Result login(LoginFormDTO loginForm, HttpSession session) {// 1. 校验手机号(从表单中获取phone)String phone loginForm.getPhone();if (RegexUtils.isPhoneInvalid(phone)) {// 如果不符合返回错误信息(采用RegexUtils的isPhoneInvalid()方法正则表达式判断手机格式是否正确)return Result.fail(手机号格式错误);}// 2. 校验验证码// 从之前存的session中取出验证码然后和表单中的验证码进行比较Object cacheCode session.getAttribute(code);String code loginForm.getCode();if(cacheCode null || !cacheCode.toString().equals(code)){// 3. 不一致报错(编码风格采用反向校验避免出现菱形代码)return Result.fail(验证码错误);}// 4. 一致根据手机号查询用户(extends ServiceImplUserMapper, User继承了MP可以直接实现单表查询)User user query().eq(phone, phone).one();// 5. 判断是否用户存在if(user null) {// 6. 不存在创建一个新用户并保存user creatUserWithPhone(phone);}// 7. 存在保存用户信息到session中session.setAttribute(user, user);return Result.ok(); }private User creatUserWithPhone(String phone) {// 1. 创建用户User user new User();user.setPhone(phone);user.setNickName(SystemConstants.USER_NICK_NAME_PREFIX RandomUtil.randomString(10));// 2. 保存用户(MP保存用户)save(user);return user; }5. 实现登录校验功能 在每个模块中都有登录校验的过程为了实现代码简洁高效采用拦截器的思想 每个控制层业务中都可能需要用到拦截的用户信息并且要保证线程安全所以把拦截的用户信息的请求进入Tomcat的请求都是独立的线程存入ThreadLocal中开辟内存空间保存线程线程之间互不干扰 并且为了避免敏感信息回传给前端只需要给出部分信息即可 Data public class UserDTO {private Long id;private String nickName;private String icon; }之前在登录login中存储在session中的user修改使用了BeanUtil工具类 // 7. 存在保存用户信息到session中, 使用BeanUtil工具类自动将user中的属性复制到UserDTO中UserDTO对象 session.setAttribute(user, BeanUtil.copyProperties(user, UserDTO.class));配置拦截器配置类添加拦截器并且设置放行资源 Configuration public class MvcConfig implements WebMvcConfigurer {Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new LoginIntercepter()).excludePathPatterns(/user/code,/user/login,/blog/hot,/shop/**,/shop-type/**,/upload/**,/voucher/**);} }创建LoginInterceptor登录状态拦截器类 public class LoginInterceptor implements HandlerInterceptor {Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {// 1. 获取sessionHttpSession session request.getSession();// 2. 获取session中的用户Object user session.getAttribute(user);// 3. 判断用户是否存在if(user null) {// 4. 不存在拦截return false;}// 5. 存在保存用户信息到ThreadLocalUserHolder.saveUser((UserDTO) user);// 6. 放行return true;}Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {HandlerInterceptor.super.afterCompletion(request, response, handler, ex);} }最后获取对应的用户并返回userUserDTO信息 GetMapping(/me) public Result me(){// 获取当前登录的用户并返回UserDTO user UserHolder.getUser();return Result.ok(user); }6. 集群的session共享问题 Redis替代session共享存储的主要优点 高效性能Redis是内存缓存数据库具有高速访问和处理能力可以更快地读取和写入共享的会话数据。 可扩展性Redis能够负载均衡处理大量的并发请求适用于分布式系统的扩展需求。 可靠性Redis的数据存储方式比传统的文件存储更加可靠具有数据自动备份、容错等机制更加适用于生产环境下的应用。 因此在分布式系统中使用Redis作为共享存储可以提高系统的性能、可扩展性和可靠性是一种很好的选择。
http://www.w-s-a.com/news/394569/

相关文章:

  • 懂做游戏钓鱼网站的网站建设技术的发展
  • 网站被百度收录百度一下你就知道 官网
  • 雅客网站建设做网站用什么做
  • 做宣传海报网站专业网站设计速寻亿企邦
  • 秦皇岛市住房和城乡建设局网站有关网站开发的参考文献
  • 晋城城乡建设局网站深圳外贸业务员工资
  • 招聘网站开发的公司销售运营主要做什么
  • 徐州网站无障碍建设wordpress证书
  • c语言可以做网站吗请人做网站收费多少
  • 中英双语网站怎么做网站为什么做静态
  • 毕业设计做音乐网站可以吗网站运营方案
  • windos 下做网站工具网站右侧返回顶部
  • 点餐网站怎么做济源网站建设济源
  • 嘉兴公司网站制作文明网站的建设与管理几点思考
  • 扬州公司做网站徐州网站建设优化
  • 手机网站弹出层插件有哪些wordpress 文章标签
  • 网站建设详细合同范本长沙注册公司流程与费用
  • 搜索引擎网站录入wordpress怎么修改导航
  • 业务接单网站重庆网站制
  • 绿色农产品网站景区网站建设策划方案
  • 服务器做ssr后还可以做网站吗品牌形象设计公司
  • 太原网站制作计划wordpress创建文章
  • 网站优化要怎么做seo网站关键词优化报价
  • 公司网站友情链接怎么做副链华为荣耀手机官网
  • 一条龙做网站旅游网页设计模板图凡科
  • 中山网站建设哪家便宜在中国做外国网站怎么收钱
  • 网站优化大计孝感注册公司
  • 设计接单app平台有哪些在线网站seo诊断
  • 兰州网站建设推广现代营销手段有哪些
  • 郴州网站seo优化网络安全哪个培训班比较好