最近在做一个门户网站,主要是1,2级的静态化,我用jsp表现,在用url,io转化成html,我想问的问题是,
在表现层(jsp),页面中有大量的模块(不同的类别为一个模块(或多个模块)),每个模块中又有小的模块,
为了方便,我每个大模块对应一个list,(小模块从大模块的list中生成,)这样我在dao中有个findAll()的方法,在findAll()中查询出每个模块的list,在把findAll()的每个list放在session中去(大量的代码),
随着模块的增加我的findAll() 越来越大,
我想有没有好解决的方法
问题的根本原因是,1,2级页面的模块太多,
解决的方向1:使findAll()的代码量减少,
2:减少jsp的表现逻辑,
我的jsp的逻辑大部分为:
<%
//显示饮食的1-3条新闻
newss=(List)application.getAttribute("msNewss");
newssT=newss.toArray();
for(int i=0;i<=newssT.length;i++){
m=(News)newssT[i];
String isDate=m.getIsDate();
String[] isDates=isDate.split("-");
String fileName=null;
fileName=request.getContextPath()+"\\Html\\"+isDates[0]+"_"+isDates[1]+"\\"
+isDates[2]+"\\"+m.getId()+".html";
%>
<li> <a href=<%=fileName %> target="_blank"><%=m.getHead() %></a></li>
<%
if(i==2) break;
}%>
</ul>
</span> </div>
<div class="food_a_b">
<ul>
<%
//显示饮食的4-12条新闻
newss=(List<News>)application.getAttribute("msNewss");
newssT=newss.toArray();
for(int i=3;i<=newssT.length;i++){
m=(News)newssT[i];
String isDate=m.getIsDate();
String[] isDates=isDate.split("-");
String fileName=null;
fileName=request.getContextPath()+"\\Html\\"+isDates[0]+"_"+isDates[1]+"\\"
+isDates[2]+"\\"+m.getId()+".html";
%>
<li> <a href=<%=fileName %> target="_blank"><%=m.getHead() %></a></li>
<%
if(i==11) break;
}%>
我的dao大部分为:
/**
* 查询出时尚的新闻
/
hql="from News n where n.newsType.type=:type order by n.isDate desc ";
newss=(List)session.createQuery(hql).setString("type", "时尚").setFirstResult(0).setMaxResults(20).list();
newssMap.put("ssNewss", newss);
/*
* 查询出时尚潮流的新闻
/
hql="from News n where n.newsType.type=:type and n.keyy like:co order by n.isDate desc ";
newss=(List)session.createQuery(hql).setString("type", "时尚").setString("co", "%潮流%").setFirstResult(0).setMaxResults(6).list();
newssMap.put("clNewss", newss);
/*
* 查询出时尚前沿的新闻
*/
hql="from News n where n.newsType.type=:type and n.keyy like:co order by n.isDate desc ";
newss=(List)session.createQuery(hql).setString("type", "时尚").setString("co", "%前沿%").setFirstResult(0).setMaxResults(6).list();
newssMap.put("qyNewss", newss);
/**
* 查询出纤体的新闻
*/
hql="from News n where n.newsType.type=:type order by n.isDate desc ";
newss=(List<News>)session.createQuery(hql).setString("type", "纤体").setFirstResult(0).setMaxResults(6).list();
newssMap.put("qtNewss", newss);
我的 action为::
/**
* 查询出亲子的新闻
/
newss=newssMap.get("qzNewss");
request.getSession().getServletContext().setAttribute("qzNewss", newss);
/*
* 查询出居家的新闻
/
newss=newssMap.get("jjNewss");
request.getSession().getServletContext().setAttribute("jjNewss", newss);
/*
* 查询出美食的新闻
*/
newss=newssMap.get("msNewss");
request.getSession().getServletContext().setAttribute("msNewss", newss);
[b]问题补充:[/b]
大家说的清楚些,怎样拿掉page上的<%...%>,用jsp的标签吗??我用的是struts1.2
[b]问题补充:[/b]
这个我也考虑过,不过我放弃了,因为:jsp是用来表现的,我的那些数据就是被显示的,如果写在action中,我就要对上面的一个list划分成几个list,每个小list对应一个小模块,这样表现数据是方便了点,但这样的小list要有50多个,
放在request中就有50多个,这样的list太多了,而且action的代码就特别庞大了,
[b]问题补充:[/b]
我的我的dao是用map 存放每一个list的,那时我为了jsp好表现,我在action
中又把map的list拿出来放在request中了,现在想想还是不分解map了,
我写了个方法,
//i开始下标
//结束下标
//数据源
public string getNewss(int i,int j,String mapNewss)
,这样应该好点,谢谢啊,
但我已经写了四个模块了,这样改太辛苦了,唉,自己开始没有规划好。
能交个朋友吗?
我的msn:kulinglei@126.com