数据采集系统(数据调查)学习总结(二)

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

       权限模块大体也是用户-角色-权限这个模式来做的,我觉得有些做法挺好的,就是首先对外方法的控制通过添加一个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,复制拼接前台传的参数分页信息查询。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值