java web 项目,想在jsp中随时取到一些公共数据, 怎么做?

change_solider 发布于 2015/06/02 18:19
阅读 1K+
收藏 0
我在做一个高校社团交流系统,使用spring + spring mvc + hibernate + shiro + sitemesh + maven,现在是这个样子的,
 

 
 
 
导航条使用了sitemesh 框架统一去装饰
 
现在遇到的问题就是,导航条中的内容(我的社团和我的关注)是随时可能发生变化的,我目前采用了Ajax 访问后台接口(接口从数据库读数据),得到数据后再使用jquery 放到导航条的指定位置,
 
那么问题来了,每个登陆成功后访问的界面都会被导航条渲染,渲染一次就会发若干个ajax请求,而一个ajax请求,就会读数据库。这样给我的 感觉不太好,既然导航条中的数据使用比较多,可不可以缓存起来,之前的设想是放到 shirouser中,然后在jsp中从shirouser中取出需要在导航条中渲染数据,然后放到导航条中,就不用发ajax请求了,也不用每次都读数 据库了。
 
 
 
其实,总结一下就是我想在jsp中灵活的调用全局的数据,这些数据是缓存下来的,
 
并且在每个spring mvc接口中不用使用model.setAttribute("asdf","asdf");  在 jsp页面中也不使用ajax,就能直接取到全局的数据。就像使用shirouser那样。
 
 

有没有比较好的方案?求大牛指教。



加载中
0
岁月无痕
岁月无痕
这种系统,访问量,并发量并不会很高,所以 数据库前面加个缓存层就行了,这样ajax请求就不会每次去读库了。
change_solider
change_solider
好的,谢谢啦。
岁月无痕
岁月无痕
回复 @change_solider : 如果是一些比较小的数据,更新不频繁的,用memcache,如果数据结构比较复杂用redis
change_solider
change_solider
缓存层用什么实现比较好呢?
0
mi-la-king
mi-la-king
ehcache 缓存你需要的数据
0
酷酷的就
酷酷的就
想简单, 你自己写个数据结构类,从库里读取填充, 再放到map里面,再放到application里, 随用随取 .
0
南湖船老大
南湖船老大

这简单,Java真是太灵活了,思路太多了。我是用JSP里的tag就好了,比如HTML里这么用

<dot:query table="link" condition=" 1 "  item="links" />
<c:forEach items="${links}" var="link">
<li class="linkli">
<img src="upload/${link.link_pic}">
</li>
</c:forEach>

 tag的定义如下,可见使用很简单,tag里可以有缓存逻辑

public class DomainTag extends SimpleTagSupport {
	
	private String table;//表名,必须字段
	private Integer id;//主键,可以为空
	private String condition;//条件,可以为空,但 id和condition字段不能同时胃口
	private String item;//标签属性,指定迭代集合元素,为集合元素指定的名称,必须
	private String order;//排序方式,可为空
	private String limit;//条数,可为空
	
	public void doTag() throws JspException, IOException {
             //......
           }

          }

也可以放到在JSP里直接调service,数据放request里。

还可以在filter里处理公共变量,放application里。

。。。总之,太多做法了,都不用使用model.setAttribute("asdf","asdf");

南湖船老大
南湖船老大
回复 @change_solider : 是的
change_solider
change_solider
回复 @南湖船老大 : 哦,你是说自己写tag , 在tag里再做缓存是吧?
南湖船老大
南湖船老大
回复 @change_solider : 这里面的逻辑都可以加上缓存的
change_solider
change_solider
我觉得,还是做缓存比较好,
0
mi-la-king
mi-la-king
缓存的话你不需要改变现有的代码啊
change_solider
change_solider
回复 @mi-la-king : 是,不需要大改,
mi-la-king
mi-la-king
@change_solider 我意思增加个缓存的话你现在 的代码不需要太大变动
change_solider
change_solider
现在改了,以后就不用大改了,现在不改,以后肯定会是个麻烦事。
0
你好今天晴天
你好今天晴天
缓存是最佳解决方案
返回顶部
顶部