留言板:
第一步:
从首页面通过action来显示数据库的信息到jsp页面,
<script>
location.href="Message/Message_list.action"
</script>
struts.xml
<package name="default" namespace="/Message" extends="struts-default">
<action name="Message_*" class="action.MessageAction" method="{1}">
<result name="toList" type="redirectAction">Message_list</result>
<result name="list">/WEB-INF/jsp/message.jsp</result>
<result name="input">/WEB-INF/jsp/error.jsp</result>
</action>
</package>
从这里进入到message.jsp:此页面用于显示留言数据,和留言功能的页面,list()方法在ACtion类中用于调用Dao层的方法来查询数据库的数据。
Dao层的查询方法和总数据方法:
public List<Message> search(int curPage,int pageSize) {
if(curPage==0) curPage=1;
Session session=SessionFactoryUtil.getSession();
Query query=session.createQuery("from Message order by id desc");
query.setFirstResult((curPage-1)*pageSize);
query.setMaxResults(pageSize);
return query.list();
}
}
public Long TopicCounts() {
Session session=SessionFactoryUtil.getSession();
Query query=session.createQuery("select count(*) from Message ");
return (Long) query.uniqueResult();
}
action调用Dao层的方法来实现数据的接受:
public String list(){
List<Message> list=dao.search(curPage,pageSize);
totalPage=(int) Math.ceil((double)dao.TopicCounts()/(double)pageSize);//向上取整得到总页数
session.setAttribute("list", list);//将list集合放入到session中去
session.setAttribute("curPage", curPage==0?1:curPage);//最初进去是curPage=1;后面用get和set方法来吧curPage传进来
session.setAttribute("totalPage", totalPage==0?1:totalPage);//总页数,同上面的pageSize一样
return "list";
}
jsp页面通过struts2的迭代器标签来完成输出list集合。
<s:iterator value="%{#session.list}" status="s" >//会将你设置的max和first显示出来,当curPage提交之后会再次出现新的页面数据
<tr align="center"><td >
//
<s:property value="%{#s.index-5+#session.curPage*@com.cl.util.ServletUtil@pageSize}"/> </td>
<td><a href="${pageContext.request.contextPath }/Answer/answer_message.action?id=<s:property value="id"/>" >
<s:property value="title" /></a></td>
<td><s:property value="ip" /></td>
<td><label > <s:property value="message" /></label></td>
<td><s:date name="date" format="yyyy-MM-dd hh:mm:ss" /></td>
</tr></s:iterator>
div align="center">
<a href="${pageContext.request.contextPath}/Message/Message_list.action?curPage=1" >首页</a>
<a href="${pageContext.request.contextPath}/Message/Message_list.action?curPage=<s:property value="%{#session.curPage-1<0?1:#session.curPage-1}" />" >上一页</a>
第 <font color="red"><s:property value="%{#session.curPage}"/></font> 页/共<font color="red"><s:property value="%{#session.totalPage}"/></font>页
<a href="${pageContext.request.contextPath}/Message/Message_list.action?curPage=<s:property value="%{#session.curPage+1>=#session.totalPage?#session.totalPage:#session.curPage+1}" />">下一页</a>
<a href="${pageContext.request.contextPath}/Message/Message_list.action?curPage=<s:property value="%{#session.totalPage}"/>" >尾页</a>
</div>
,这里才完整的分页。