论坛首页 Java企业应用论坛

BS体系结构(二)a2之页面与数据层

浏览 1692 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (7) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-01-01   最后修改:2010-01-01

因为直接在页面访问数据的系统基本上不存在了,所以直接从a2 页面与数据层开始说起.

 

这是我作的一个假设系统,系统只存在一个用户数据表,在页面上只使用登录,登出,查找等功能.uml如下:

 

数据层:

这是个基本的dao模式数据层, 缺少必须的接口分离,授权访问,Cache等能力.特点是只提供基本的数据访问

在properties或xml文件中保存模块类名信息, 这样,中央引擎不用保存相关模快信息, 方便扩展

所以在jsp中:

假设在系统中,用户可以随意增,删,查,改...当然这是不可能的 ..

 所以,我们需要的页面文件有:index.jsp login.jsp addUser.jsp listUser.jsp  delUser.jsp updateUser.jsp

并在它们之间建立编写相关的转发关系,

add.jsp

<%! Logger log = Logger.getLogger("XXX.jsp")%>

<!--html code-->

<%

log.debug("show XXX.jsp page");

AppEngine app = AppEngine.getInstance();

User user = new User();

user.setUsername(request.getParameter("username"));

...

UserDao dao = app.getModule("UserDao");

dao.add(user);

request.getRequestDispatcher("index.jsp").farword(request,response);

%>

 

扩展1:cache

如何把辛辛苦苦从数据库取出来的信息缓存下来呢? 因为我们可能会遇到大量相同的查询条件来,所以 缓存查询结果就成了一项很重要的开发内容了

看看Dao,一般有add,find,get,list等业务方法,  在其中,add,find,get与list是不相同的,随着数据库的不断被修改,list对象就会变的很不真实, 所以list得到的对象不应该被保存很长的时间, 而其他的单一元组的 获得方法则可以被保存很久,  这就存在了问题,  怎么解决 2中方法的不同缓存问题.

uml:




 
 这是缓存基本体系, 模块根据系统config 做出选择

在所有的find,get,等方法最前都执行一次查找缓存, 查找字符串 为: xxx.class().getName()+"method name" 然后在 所有查找结束前, 调用一次cache.put...

在相关的实现中, 根据配置 调用chooseCache选择 相关的缓存体系....

缓存配置为:

 

<ehcache>
<cache name="select method cache"
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="300"
timeToLiveSeconds="600"
overflowToDisk="false"
/>

....
</ehcache>

 

事实上,比如xyq.163.com的论坛系统中,帖子列表每次查询的时候 经常有第1 页列出的内容  在第2页 开头也列出 , 这就是使用了select缓存的原因

 

 

  • 大小: 7.3 KB
  • 大小: 17.2 KB
  • 大小: 13.1 KB
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics