当前位置:   article > 正文

数据采集系统(数据调查)学习总结(二)_数据采集与实时计算这个课程知识点做一个总结分析

数据采集与实时计算这个课程知识点做一个总结分析

现在继续之前学习数据采集系统项目的总结:

       权限模块大体也是用户-角色-权限这个模式来做的,我觉得有些做法挺好的,就是首先对外方法的控制通过添加一个common字段,来区别是否是公共方法,一是方便用户设定哪些可以对外开发,二是减少系统对方法的判断。对于权限部分,我们先是粗粒度的控制每一个url,也包括配置过滤拦截器来实现,然后处理?后面的参数。

       那么现在公共方法解决了,不同角色的权限拦截控制怎么做,那就是普遍的用法,就是遍历角色权限列表有无该方法,有则放行,无则拦截,这种做法是后台设定,前台页面自己开发不同权限块,显然这个大众思想现在我们不再使用,那我们就引入细粒度控制--标签替换,就是对ssh框架中的struts框架某些标签做方法过滤,这样前台显示时就可以根据角色设定的权限来判断加载,确实是很简单,对开发者也很省事的方法,这个项目中我们重写了框架<s:action,<c:submit这两个标签,加入判断方法,效果上还行,后来就有些问题,就是我们使用不同发布服务器时容易出现问题,比如说,我们这个方法实现基础在于struts的tag包在自身没有加载之前引入重写的包,但如果有的服务器先加载自身包,那权限就完全不可用了,所以我们建议直接替换源码包。

      细粒度控制还有很多,之后的缓存介绍等也是从这方面考虑。那现在我们考虑一个问题,就是无论粗细粒度,都是从数据库调url,然后拿来判断,那么对于这么常用的资源,我们可不可以有个好的方法,减少他的访问,于是就有了这个思路,就是我们在启动项目后,在Spring容器初始化加载完成之后,web服务器完成之前,将权限所有列表查询出来,放入application中(servletContext中application作用时间最长),这样我们就不用查询数据库,直接从这里面拿值比对即可,具体做法如下:

配置一个上下文监听器,对初始化权限做监听,这里不使用java设计模式中的监听者模式或者通知模式来对lister监听做控制是因为是效果并不是很好,相对Spring框架自带的监听器来说,耦合性更低。然后因为Spring容器已经加载完成,bean就可以通过注入实现。

/**
* 初始化权限监听器
*/
@SuppressWarnings("rawtypes")
@Component
public class IniRightListener implements ApplicationListener,ServletContextAware{
@Resource
private RightService rs ;

//接受servletContext对象
private ServletContext sc;

public void onApplicationEvent(ApplicationEvent arg0) {
//是否是上下文刷新事件
if(arg0 instanceof ContextRefreshedEvent){
List<Right> list = rs.findAllEntities();
Map<String, Right> map = new HashMap<String, Right>();
for(Right r : list){
map.put(r.getRightUrl(), r);
}
if(sc != null){
sc.setAttribute("all_rights_map", map);
}
}
}
//注入sc
public void setServletContext(ServletContext servletContext) {
//
System.out.println("注入sc");
this.sc = servletContext ;
}
}

<!-- 组件扫描 -->
<context:component-scan base-package="cn.itcast.surveypark.listener... />

这些完成之后,我们就开始分析如何减小数据库的压力,查资料学习到一下内容:

分库,分表是可以降低对数据库的存储压力,(具体实现我们一一说明)  良好缓存机制则是降低数据库的访问负载压力。

下面插点项目问题解决:

解决页面嵌套问题:
在被嵌套时就刷新上级窗口
if(window.parent != window){
     window.parent.location.reload(true);
}
实现重启tomcat后还是登录状态,就是让用户,角色等关联表实现序列化,java.io.zerializable接口

之前struts标签是重定义,现在可以直接自己定义一个标签,来实现来台过滤功能。

分页查询中,写一个专门的工具类QueryHelper,复制拼接前台传的参数分页信息查询。


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/233115
推荐阅读
相关标签
  

闽ICP备14008679号