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

盗版网站是如何做的百度seo关键词

盗版网站是如何做的,百度seo关键词,微信第三方,网站转入备案jeesite#xff0c;其框架主要为#xff1a; 后端 核心框架#xff1a;Spring Framework 4.0 安全框架#xff1a;Apache Shiro 1.2 视图框架#xff1a;Spring MVC 4.0 服务端验证#xff1a;Hibernate Validator 5.1 布局框架#xff1a;SiteMesh 2.4 工作流引擎…  jeesite其框架主要为 后端 核心框架Spring Framework 4.0 安全框架Apache Shiro 1.2 视图框架Spring MVC 4.0 服务端验证Hibernate Validator 5.1 布局框架SiteMesh 2.4 工作流引擎Activiti 5.15、FoxBPM 6 任务调度Spring Task 4.0 持久层框架MyBatis 3.2 数据库连接池Alibaba Druid 1.0 缓存框架Ehcache 2.6、Redis 日志管理SLF4J 1.7、Log4j 工具类Apache Commons、Jackson 2.2、Xstream 1.4、Dozer 5.3、POI 3.9 2、前端 JS框架jQuery 1.9。 CSS框架Twitter Bootstrap 2.3.1。 客户端验证JQuery Validation Plugin 1.11。 富文本CKEcitor 文件管理CKFinder 动态页签Jerichotab 手机端框架Jingle 数据表格jqGrid 对话框jQuery jBox 下拉选择框jQuery Select2 树结构控件jQuery zTree 日期控件 My97DatePicker 这里对于jeesite感觉其功能还是挺强大的但是有一点致命缺点就是其缓存机制本来缓存是为了提速但是当这里的缓存加上了MVC并且在前端进行请求后不适时宜地将请求的相关类对象进行缓存这就导致了单例化和伪持久化。怎么说来就是说当前端修改Person对象实例并提交到服务端试图保存时由于某些原因如权限不足导致保存失败这本来应该是很正常的但是偏偏由于在这之前缓存将Person对象实例更新了从而缓存中的该实例是修改后的这样后来再次获取该对象由于缓存存在优先取缓存而不是从DB里获取导致后来获取的对象的数据都是错误的修改但保存失败的这就变相单例化而且是无法获得正确数据了。 例如如下的接口 [java] view plain copy RequiresPermissions(sys:user:edit)       RequestMapping(value  save)       public String save(User user, HttpServletRequest request, Model model, RedirectAttributes redirectAttributes) {                         //判断是否有权限修改用户信息                      //先清缓存因为框架原因只要更新了该用户则会同步更新该用户缓存从而无法获得真正的该用户信息,所以需要清除掉该缓存这里先注释掉看问题           //UserUtils.clearCache(user);           User oldUser  systemService.getUser(user.getId());           ListStringroleIdListOld  oldUser.getRoleIdList();           User operator  UserUtils.getUser();           ListStringroleIdListOperator  operator.getRoleIdList();           //自己不能修改自己的权限   //      if(user.getId().equals(operator.getId())){   //          addMessage(model, 修改用户信息失败, 不能修改自己的权限);   //          UserUtils.clearCache();   //          return form(oldUser, model);   //          }           if(!roleIdListOperator.containsAll(roleIdListOld)){               addMessage(model, 修改用户信息失败, 您的权限不足);               UserUtils.clearCache();               return form(oldUser, model);           }           user.setRoleList(roleList);           // 保存用户信息           systemService.saveUser(user);           // 清除当前用户缓存           if (user.getPhone().equals(UserUtils.getUser().getPhone())){               UserUtils.clearCache();               //UserUtils.getCacheMap().clear();           }           addMessage(redirectAttributes, 保存用户  user.getPhone()  成功);           return redirect:  adminPath  /sys/user/list?repage;       }   再看下getUser: [java] view plain copy public static User getUser(String id){       User user  (User)CacheUtils.get(USER_CACHE, USER_CACHE_ID_  id);       if (user   null){           user  userDao.get(id);           if (user  null){               return null;           }           user.setRoleList(roleDao.findList(new Role(user)));           CacheUtils.put(USER_CACHE, USER_CACHE_ID_  user.getId(), user);           CacheUtils.put(USER_CACHE, USER_CACHE_LOGIN_NAME_  user.getPhone(), user);       }       return user;   }   这里的 [java] view plain copy systemService.getUser(user.getId());   会一直拿到该对象实例的缓存值而该值在修改提交到服务端时框架已经更新了再进到controller中。 所以即使在 [java] view plain copy if(!roleIdListOperator.containsAll(roleIdListOld)){               addMessage(model, 修改用户信息失败, 您的权限不足);               UserUtils.clearCache();               return form(oldUser, model);           }   这里返回了其他地方获取该user的值 [java] view plain copy getUser(user.getId());   还是会是缓存的值。 也相当于单例的、全局的实例值 解决方法 在关系到修改等的地方每次都需要对该实例进行缓存的清空。同时在修改时修改对象最好就是拿出db的该记录逐个参数进行修改替换 [java] view plain copy RequiresPermissions(user:list:edit)       RequestMapping(value  editUserInfoSave)       public String editUserInfoSave(User user,Model model, RedirectAttributes redirectAttributes) {                      //先清除该user的缓存防止干扰到其他地方的引用。其实还是会有并发问题会在清除之前被引用到           UserUtils.clearCache(user);                   //从db中获取user注意这个userSave 是修改前的与user的值不一样注意一点如果直接从getUser(user.getId());中获取同时并没有清缓存的前提下                   //UserUtils.clearCache(user);则会导致拿到的user并非DB里的user而是缓存前端提交的                                   User userSave  systemService.getUserFromDB(user.getId());           /**           * 替换更新修改信息           */           userSave.setName(user.getName());           userSave.setFirstnameStr(user.getFirstnameStr());           userSave.setLastnameStr(user.getLastnameStr());           userSave.setIdStr(user.getIdStr());           userSave.setUsername(user.getUsername());           userSave.setBirthdateStr(user.getBirthdateStr());           userSave.setEmail(user.getEmail());           userSave.setUserType(user.getUserType());           userSave.setGenderStr(user.getGenderStr());           // 保存用户信息           systemService.saveUser(userSave);           addMessage(redirectAttributes, 保存用户  user.getPhone()  成功);           return redirect:  adminPath  /user/user/list?repage;       }   这里的getUserFromDB: [java] view plain copy /**   * 根据ID获取用户——通过DB   * param id   * return 取不到返回null   */   public static User getUserFromDB(String id){          User user  userDao.get(id);       user.setRoleList(roleDao.findList(new Role(user)));       return user;   }   因此特别需要注意缓存的使用不是任何地方都适合使用缓存。 顶0 踩
http://www.huolong8.cn/news/436283/

相关文章:

  • 网站开发制作费用网站建设与管理 宋一兵
  • 网上商店网站设计中国建筑网官网新闻
  • 建网站的要求网站备案信息传
  • 装修设计网站免费网站产品页排名怎么做
  • 班级网站设计与制作华为云速建站可以做英文网站
  • 百度免费网站制作成都广告公司工资一般多少
  • 网站集约化建设的讲话海口网站开发师招聘
  • 怎么做网站下载链接广告公司简介模板免费
  • qt 做网站网页设计结论与心得
  • 西安自助建站做网站网络公司推广方案
  • 网站快速排名服务商用什么软件开发手机app
  • 徐州制作网站的公司有哪些做网站的主机配置
  • 路由器统一登录网站职高门户网站建设标准
  • 网站价格套餐网站推广链接怎么做
  • 网站编辑是什么产品策划书范文案例
  • 做计划的网站可以做课程的网站
  • 网站开发哪里培训好有什么兼职做it的网站好
  • 广州做贸易网站无锡网站建设有限公司
  • 网站程序方面延边app网站开发
  • 做教育网站需要规划哪些内容深圳网站建设luony
  • 网站设计教程视频下载下载好了网站模板怎么开始做网站
  • asp.net购物网站模板中国建设人才网官网
  • 软件外包收费标准桂林网站优化公司
  • 网上做视频赚钱的网站有哪些wordpress语言中文
  • 做征婚网站忻州网站建设
  • 网站建设需要什么技能企业建账实训总结
  • 购物网站开发模板wordpress装到路由器上
  • wordpress网站备案用html做女装网站
  • 外贸网站支付接口河北网站搜索排名优化方案
  • 查看邮箱注册过的网站友情链接的形式