﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-蝸ゼ牜ご赽跑 的Blog-随笔分类-Spring</title><link>http://www.blogjava.net/flustar/category/18661.html</link><description>开发转了销售，还能由销售做回开发吗？</description><language>zh-cn</language><lastBuildDate>Sat, 12 Sep 2009 16:53:45 GMT</lastBuildDate><pubDate>Sat, 12 Sep 2009 16:53:45 GMT</pubDate><ttl>60</ttl><item><title>Struts2+spring2+hibernate3整合方案</title><link>http://www.blogjava.net/flustar/archive/2007/12/26/ssha.html</link><dc:creator>flustar</dc:creator><author>flustar</author><pubDate>Tue, 25 Dec 2007 17:11:00 GMT</pubDate><guid>http://www.blogjava.net/flustar/archive/2007/12/26/ssha.html</guid><wfw:comment>http://www.blogjava.net/flustar/comments/170431.html</wfw:comment><comments>http://www.blogjava.net/flustar/archive/2007/12/26/ssha.html#Feedback</comments><slash:comments>36</slash:comments><wfw:commentRss>http://www.blogjava.net/flustar/comments/commentRss/170431.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/flustar/services/trackbacks/170431.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Struts2+Spring2+hibernate3整合方案&nbsp;&nbsp;<a href='http://www.blogjava.net/flustar/archive/2007/12/26/ssha.html'>阅读全文</a><img src ="http://www.blogjava.net/flustar/aggbug/170431.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/flustar/" target="_blank">flustar</a> 2007-12-26 01:11 <a href="http://www.blogjava.net/flustar/archive/2007/12/26/ssha.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>基于spring+dwr+xml无刷新投票(调查)系统</title><link>http://www.blogjava.net/flustar/archive/2007/11/19/spring_dwr_xml.html</link><dc:creator>flustar</dc:creator><author>flustar</author><pubDate>Mon, 19 Nov 2007 10:04:00 GMT</pubDate><guid>http://www.blogjava.net/flustar/archive/2007/11/19/spring_dwr_xml.html</guid><wfw:comment>http://www.blogjava.net/flustar/comments/161691.html</wfw:comment><comments>http://www.blogjava.net/flustar/archive/2007/11/19/spring_dwr_xml.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/flustar/comments/commentRss/161691.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/flustar/services/trackbacks/161691.html</trackback:ping><description><![CDATA[<p>一、建立xml的数据结构，文件名为：vote.xml，内容如下：</p>
<p>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</p>
<p>&lt;votes voteTotalCount="0"&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;vote voteId="1" name="c语言 " voteCount="0" percentum="0" /&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;vote voteId="2" name="c++" voteCount="0" percentum="0" /&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;vote voteId="3" name="java" voteCount="0" percentum="0" /&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;vote voteId="4" name="汇编语言" voteCount="0" percentum="0" /&gt;</p>
<p>&nbsp;&lt;/votes&gt;</p>
<p>在你的web应用的根目录建立xml文件夹，将其拷贝到该目录下。</p>
<p>二、建立xml对应的bean</p>
<p>/**</p>
<p>&nbsp;* @author flustar</p>
<p>&nbsp;* @version 创建时间：Jul 11, 2007 5:17:53 PM</p>
<p>&nbsp;* 类说明</p>
<p>&nbsp;*/</p>
<p>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.</p>
<p>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.</p>
<p>public class VoteBean {</p>
<p>&nbsp;&nbsp;&nbsp; private String voteId;</p>
<p>&nbsp; &nbsp;private String name;</p>
<p>&nbsp;&nbsp;&nbsp; private String voteCount;</p>
<p>&nbsp;&nbsp;&nbsp; private String voteTotalCount;</p>
<p>&nbsp;&nbsp;&nbsp; private String percentum;</p>
<p>&nbsp;&nbsp;&nbsp; public VoteBean() {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public String getPercentum() {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return percentum;</p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public void setPercentum(String percentum) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.percentum = percentum;</p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public String getVoteId() {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return voteId;</p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; public void setVoteId(String voteId) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.voteId = voteId;</p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public String getName() {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return name;</p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public void setName(String name) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.name = name;</p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public String getVoteCount() {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return voteCount;</p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; public void setVoteCount(String voteCount) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.voteCount = voteCount;</p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>}</p>
<p>三、建立处理具体逻辑的service</p>
<p>package com.flustar.service;</p>
<p>import java.io.FileInputStream;</p>
<p>import java.io.FileOutputStream;</p>
<p>import java.text.NumberFormat;</p>
<p>import java.util.ArrayList;</p>
<p>import java.util.Iterator;</p>
<p>import java.util.List;</p>
<p>import org.jdom.Attribute;</p>
<p>import org.jdom.Document;</p>
<p>import org.jdom.Element;</p>
<p>import org.jdom.input.SAXBuilder;</p>
<p>import org.jdom.output.Format;</p>
<p>import org.jdom.output.XMLOutputter;</p>
<p>import org.jdom.xpath.XPath;</p>
<p>import com.flustar.web.beans.VoteBean;</p>
<p>import com.flustar.web.config.ContextConfig;</p>
<p>public class VoteService {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private Element root, vote;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private Document doc;</p>
<p>&nbsp;&nbsp;&nbsp; &nbsp; private Attribute voteTotalCount;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private VoteBean voteBean;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private List&lt;VoteBean&gt; voteBeanList;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private String path = ContextConfig.getContextPath()</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + "/xml/vote.xml";</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void buildDoc() throws Exception {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FileInputStream fi = null;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fi = new FileInputStream(path);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SAXBuilder sb = new SAXBuilder();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; doc = sb.build(fi);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void formatDoc() throws Exception {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Format format = Format.getCompactFormat();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; format.setEncoding("UTF-8");// 设置xml文件的字符为UTF-8</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; format.setIndent("&nbsp;&nbsp;&nbsp; ");// 设置xml文件缩进为4个空格</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XMLOutputter xmlOut = new XMLOutputter(format);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlOut.output(doc, new FileOutputStream(path));</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public String floatToPercentum(Double doubleNum) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NumberFormat numberFormat = NumberFormat.getPercentInstance();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; numberFormat.setMinimumFractionDigits(2);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // numberFormat.setMaximumIntegerDigits(2);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String str = numberFormat.format(doubleNum);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //System.out.println(str);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return str;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void updateVoteCount(String voteId) throws Exception {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; buildDoc();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root = doc.getRootElement();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vote = (Element) XPath.selectSingleNode(root, "//vote[@voteId='"</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + voteId + "']");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int voteCount = Integer.parseInt(vote.getAttributeValue("voteCount")) + 1;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //System.out.println(voteCount);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vote.setAttribute("voteCount", String.valueOf(voteCount));</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int totalCount = Integer.parseInt(root</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .getAttributeValue("voteTotalCount")) + 1;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; voteTotalCount = new Attribute("voteTotalCount", String</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .valueOf(totalCount));</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root.setAttribute(voteTotalCount);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(totalCount);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; formatDoc();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; updateAllVoteCount();//更新所有的百分比</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public void updateAllVoteCount()throws Exception{</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; buildDoc();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root=doc.getRootElement();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int totalCount = Integer.parseInt(root</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .getAttributeValue("voteTotalCount"));</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List voteList=XPath.selectNodes(root,"/votes/vote");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;voteList.size();i++){</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vote=(Element)voteList.get(i);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int voteCount = Integer.parseInt(vote.getAttributeValue("voteCount"));</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(voteCount);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vote.setAttribute("voteCount", String.valueOf(voteCount));</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vote.setAttribute("percentum", floatToPercentum(1.0 * voteCount</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; / totalCount));</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; formatDoc();</p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public List getAllVote() throws Exception {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; buildDoc();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; voteBeanList = new ArrayList();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root = doc.getRootElement();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String totalCount = root.getAttributeValue("voteTotalCount");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List voteList = root.getChildren();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Iterator i = voteList.iterator();</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (i.hasNext()) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; voteBean = new VoteBean();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; voteBean.setVoteTotalCount(totalCount);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vote = (Element) i.next();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String name = vote.getAttributeValue("name");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String voteCount = vote.getAttributeValue("voteCount");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String percentum = vote.getAttributeValue("percentum");</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; voteBean.setName(name);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; voteBean.setVoteCount(voteCount);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; voteBean.setPercentum(percentum);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; voteBeanList.add(voteBean);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return voteBeanList;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;</p>
<p>}</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; public String getVoteTotalCount() {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return voteTotalCount;</p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; public void setVoteTotalCount(String voteTotalCount) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.voteTotalCount = voteTotalCount;</p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>}</p>
<p>&nbsp;</p>
<p>四、获取上下文路径的listener</p>
<p>package com.flustar.web.listener;</p>
<p>import javax.servlet.ServletContextEvent;</p>
<p>import javax.servlet.ServletContextListener;</p>
<p>import com.flustar.web.config.ContextConfig;</p>
<p>public class ConfigLoadContextListener implements&nbsp; ServletContextListener{</p>
<p>&nbsp;&nbsp;&nbsp; public void contextDestroyed(ServletContextEvent arg0) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // TODO Auto-generated method stub</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public void contextInitialized(ServletContextEvent contextEvent) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // TODO Auto-generated method stub</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String contextPath = contextEvent.getServletContext().getRealPath("/");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ContextConfig.setContextPath(contextPath);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>}</p>
<p>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</p>
<p>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;</p>
<p>&nbsp;</p>
<p>public class ContextConfig {</p>
<p>&nbsp;&nbsp;&nbsp; private static String contextPath;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; public static String getContextPath() {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return contextPath;</p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; public static void setContextPath(String contextPath) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ContextConfig.contextPath = contextPath;</p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;</p>
<p>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</p>
<p>}</p>
<p>五、在applicationContext-service.xml中注册VoteService</p>
<p>&lt;bean name="voteService" class="com.flustar.service.imp.VoteService"/&gt;</p>
<p>六、注册xml，在你的web应用的WEB-INFO目录下建立applicationContext-dwr.xml文件，内容为：</p>
<p>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</p>
<p>&lt;!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr/dwr20.dtd"&gt;</p>
<p>&lt;dwr&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;allow&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;create&nbsp; creator="spring" javascript="VoteService" &gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param name="beanName" value="voteService"&gt;&lt;/param&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;include method="updateVoteCount"/&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;include method="getAllVote"/&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/create&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;convert converter="bean"&nbsp; match="com.flustar.web.beans.VoteBean" /&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/allow&gt;</p>
<p>&lt;/dwr&gt;</p>
<p>&nbsp;</p>
<p>七、修改web.xml</p>
<p>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</p>
<p>&lt;web-app xmlns="http://java.sun.com/xml/ns/j2ee" </p>
<p>&nbsp;&nbsp;&nbsp; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" </p>
<p>&nbsp;&nbsp;&nbsp; xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" </p>
<p>&nbsp;&nbsp;&nbsp; version="2.4"&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;</p>
<p>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</p>
<p>&nbsp;&nbsp;&nbsp; &lt;context-param&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-value&gt;</p>
<p>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /WEB-INF/classes/applicationContext-service.xml</p>
<p>&lt;/param-value&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;/context-param&gt;</p>
<p>&nbsp;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.&nbsp;&nbsp;&nbsp;&nbsp; &lt;listener-class&gt;com.flustar.web.listener.ConfigLoadContextListener&lt;/listener-class&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp; &lt;servlet&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;dwr-invoker&lt;/servlet-name&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;servlet-class&gt;org.directwebremoting.servlet.DwrServlet&lt;/servlet-class&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;init-param&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-name&gt;debug&lt;/param-name&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-value&gt;true&lt;/param-value&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;/init-param&gt;</p>
<p>&nbsp; &lt;/servlet&gt;</p>
<p>&nbsp;</p>
<p>&nbsp; &lt;servlet-mapping&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;dwr-invoker&lt;/servlet-name&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;/dwr/*&lt;/url-pattern&gt;</p>
<p>&nbsp; &lt;/servlet-mapping&gt;&nbsp; </p>
<p>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.&nbsp;&nbsp;&nbsp; </p>
<p>&lt;/web-app&gt;</p>
<p>八、jsp页面</p>
<p>1)</p>
<p>&lt;%@ page contentType="text/html; charset=gbk" language="java" import="java.sql.*" errorPage="" %&gt;</p>
<p>&lt;html&gt;</p>
<p>&lt;head&gt;</p>
<p>&lt;title&gt;投票系统&lt;/title&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;script type='text/javascript' src='dwr/engine.js'&gt; &lt;/script&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;script type='text/javascript' src='dwr/util.js'&gt; &lt;/script&gt; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;script type='text/javascript' src='dwr/interface/VoteService.js'&gt; &lt;/script&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;script type='text/javascript'&gt;</p>
<p>function vote(){</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; var&nbsp;&nbsp; obj=document.getElementsByName('radio');&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if&nbsp;&nbsp; (obj!=null){&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var j=0;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for&nbsp;&nbsp; (var&nbsp;&nbsp; i=0;i&lt;obj.length;i++){&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if&nbsp;&nbsp; (obj[i].checked)&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VoteService.updateVoteCount(obj[i].value); </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("投票成功!"); </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; obj[i].checked=false; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; j=j+1;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(j==obj.length){</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("请选中其中的一项，再投票!");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp; function showwin(){</p>
<p>&nbsp;&nbsp;&nbsp; window.open('voteresult.htm','voteresult','height=400, width=400, top=0, left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no');</p>
<p>&nbsp;&nbsp; }</p>
<p>&nbsp;}</p>
<p>&lt;/script&gt;</p>
<p>&lt;/head&gt;</p>
<p>&lt;body&gt;</p>
<p>&lt;div &gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;h1 &gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 你使用最多的一门语言是？</p>
<p>&nbsp;&nbsp;&nbsp; &lt;/h1&gt;</p>
<p>&lt;/div&gt;</p>
<p>&lt;div&gt;</p>
<p>&lt;div&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;span&gt;&nbsp;&nbsp;&nbsp;&nbsp; &lt;h1&gt;&lt;input type="radio" name="radio" id="radio" value="1" /&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C语言&lt;/h1&gt; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/span&gt; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;span&gt; &lt;h1 &gt;&lt;input type="radio" name="radio" id="radio" value="2" /&gt;c++ &lt;/h1&gt; &lt;/span&gt; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;span &gt;&lt;h1 &gt;&lt;input type="radio" name="radio" id="radio" value="3" /&gt;java &lt;/h1&gt; &lt;/span&gt; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;span&gt;&lt;h1 &gt;&lt;input type="radio" name="radio" id="radio" value="4"/&gt;汇编语言&lt;/h1&gt; &lt;/span&gt;</p>
<p>&lt;/div&gt;</p>
<p>&lt;/div&gt;</p>
<p>&lt;div id="toupiao"&gt;&lt;input class="btn" type="button" value="投票" onClick="vote()" /&gt;&lt;input class="btn" type="button" value="查看" onClick="showwin()"/&gt;&lt;/div&gt;</p>
<p>&lt;/body&gt;</p>
<p>&lt;/html&gt;</p>
<p>2)</p>
<p>&lt;html&gt;</p>
<p>&lt;head&gt;</p>
<p>&lt;meta http-equiv="content-type" content="text/html; charset=gb2312"&gt;</p>
<p>&lt;title&gt;投票结果&lt;/title&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;script type='text/javascript' src='dwr/engine.js'&gt; &lt;/script&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;script type='text/javascript' src='dwr/util.js'&gt; &lt;/script&gt; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;script type='text/javascript' src='dwr/interface/VoteService.js'&gt; &lt;/script&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;script type='text/javascript' &gt;</p>
<p>function showresult(){</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VoteService.getAllVote(function(data){</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.getElementById("totalCount").innerHTML=data[0].voteTotalCount;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(var i=0;i&lt;data.length;i++){</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var voteBean=data[i];</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.getElementById("xuanshou"+i).innerHTML=voteBean.name;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.getElementById("baifenbi"+i).innerHTML=voteBean.percentum;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.getElementById("piaoshu"+i).innerHTML=voteBean.voteCount;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.getElementById("img"+i).width=voteBean.voteCount/data[0].voteTotalCount*310;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; });</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>}</p>
<p>&lt;/script&gt;</p>
<p>&lt;/head&gt;</p>
<p>&lt;body onLoad="showresult()"&gt;</p>
<p>&lt;div id="voteRs"&gt;</p>
<p>&lt;table border="0" cellpadding="0" cellspacing="0"&gt;</p>
<p>&nbsp; &lt;CAPTION valign="top" class="subject"&gt;</p>
<p>投票结果</p>
<p>&nbsp;&nbsp;&nbsp; &lt;/CAPTION&gt;</p>
<p>&nbsp; &lt;tbody&gt;</p>
<p>&nbsp; &lt;tr &gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;th&gt;语言&lt;/th&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;th&gt;百分比&lt;/th&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;th&gt;票数&lt;/th&gt;</p>
<p>&nbsp; &lt;/tr&gt;</p>
<p>&nbsp; &lt;tr&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;span id="xuanshou0"&gt;&lt;/span&gt;&lt;/td&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;span id="baifenbi0"&gt;&lt;/span&gt;&lt;img id="img0" src='images/voteprogress.gif' width=0 height=10&gt;&lt;/td&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;span id="piaoshu0"&gt;&lt;/span&gt;&lt;/td&gt;</p>
<p>&nbsp; &lt;/tr&gt;</p>
<p>&nbsp; &lt;tr&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;span id="xuanshou1"&gt;&lt;/span&gt;&lt;/td&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;span id="baifenbi1"&gt;&lt;/span&gt;&lt;img id="img1" src='images/voteprogress.gif' width=0 height=10&gt;&lt;/td&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;span id="piaoshu1"&gt;&lt;/span&gt;&lt;/td&gt;</p>
<p>&nbsp; &lt;/tr&gt;</p>
<p>&nbsp; &lt;tr&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;span id="xuanshou2"&gt;&lt;/span&gt;&lt;/td&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;span id="baifenbi2"&gt;&lt;/span&gt;&lt;img id="img2" src='images/voteprogress.gif' width=0 height=10&gt;&lt;/td&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;span id="piaoshu2"&gt;&lt;/span&gt;&lt;/td&gt;</p>
<p>&nbsp; &lt;/tr&gt;</p>
<p>&nbsp;&nbsp; &lt;tr&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;span id="xuanshou3"&gt;&lt;/span&gt;&lt;/td&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;span id="baifenbi3"&gt;&lt;/span&gt;&lt;img id="img3" src='images/voteprogress.gif' width=0 height=10&gt;&lt;/td&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;span id="piaoshu3"&gt;&lt;/span&gt;&lt;/td&gt;</p>
<p>&nbsp; &lt;/tr&gt;</p>
<p>&nbsp;</p>
<p>&nbsp; &lt;/tbody&gt;</p>
<p>&lt;/table&gt;</p>
<p>共&lt;span id="totalCount"&gt;&lt;/span&gt;条投票&lt;br/&gt;</p>
<p>[&lt;span onClick="javascript:window.close();"&gt;关闭窗口&lt;/span&gt;]</p>
<p>&lt;/div&gt;</p>
<p>&lt;/body&gt;</p>
<p>&lt;/html&gt;</p>
<p>&nbsp;<br />
</p>
<img src ="http://www.blogjava.net/flustar/aggbug/161691.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/flustar/" target="_blank">flustar</a> 2007-11-19 18:04 <a href="http://www.blogjava.net/flustar/archive/2007/11/19/spring_dwr_xml.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>分享一个spring+hibernate的通用分页类</title><link>http://www.blogjava.net/flustar/archive/2007/11/13/160142.html</link><dc:creator>flustar</dc:creator><author>flustar</author><pubDate>Tue, 13 Nov 2007 02:50:00 GMT</pubDate><guid>http://www.blogjava.net/flustar/archive/2007/11/13/160142.html</guid><wfw:comment>http://www.blogjava.net/flustar/comments/160142.html</wfw:comment><comments>http://www.blogjava.net/flustar/archive/2007/11/13/160142.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/flustar/comments/commentRss/160142.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/flustar/services/trackbacks/160142.html</trackback:ping><description><![CDATA[<span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;时间过得真快，已经半年没有更新自己的博客了。&nbsp;&nbsp;&nbsp;&nbsp;好了，言归正传。大家都知道网上广为流传的一个分页类是：PaginationSupport.java其源代码如下：<br />
&nbsp;&nbsp;&nbsp;&nbsp;
<p>public class PaginationSupport{</p>
<p>&nbsp;public final static int PAGESIZE = 30;</p>
<p>&nbsp;private int pageSize = PAGESIZE;</p>
<p>&nbsp;private List items;</p>
<p>&nbsp;private int totalCount;</p>
<p>&nbsp;private int[] indexes = new int[0];</p>
<p>&nbsp;private int startIndex = 0;</p>
<p>&nbsp;public PaginationSupport(List items, int totalCount) {<br />
&nbsp;&nbsp;setPageSize(PAGESIZE);<br />
&nbsp;&nbsp;setTotalCount(totalCount);<br />
&nbsp;&nbsp;setItems(items);<br />
&nbsp;&nbsp;setStartIndex(0);<br />
&nbsp;}</p>
<p>&nbsp;public PaginationSupport(List items, int totalCount, int startIndex) {<br />
&nbsp;&nbsp;setPageSize(PAGESIZE);<br />
&nbsp;&nbsp;setTotalCount(totalCount);<br />
&nbsp;&nbsp;setItems(items);<br />
&nbsp;&nbsp;setStartIndex(startIndex);<br />
&nbsp;}</p>
<p>&nbsp;public PaginationSupport(List items, int totalCount, int pageSize,<br />
&nbsp;&nbsp;&nbsp;int startIndex) {<br />
&nbsp;&nbsp;setPageSize(pageSize);<br />
&nbsp;&nbsp;setTotalCount(totalCount);<br />
&nbsp;&nbsp;setItems(items);<br />
&nbsp;&nbsp;setStartIndex(startIndex);<br />
&nbsp;}</p>
<p>&nbsp;public List getItems() {<br />
&nbsp;&nbsp;return items;<br />
&nbsp;}</p>
<p>&nbsp;public void setItems(List items) {<br />
&nbsp;&nbsp;this.items = items;<br />
&nbsp;}</p>
<p>&nbsp;public int getPageSize() {<br />
&nbsp;&nbsp;return pageSize;<br />
&nbsp;}</p>
<p>&nbsp;public void setPageSize(int pageSize) {<br />
&nbsp;&nbsp;this.pageSize = pageSize;<br />
&nbsp;}</p>
<p>&nbsp;public int getTotalCount() {<br />
&nbsp;&nbsp;return totalCount;<br />
&nbsp;}</p>
<p>&nbsp;public void setTotalCount(int totalCount) {<br />
&nbsp;&nbsp;if (totalCount &gt; 0) {<br />
&nbsp;&nbsp;&nbsp;this.totalCount = totalCount;<br />
&nbsp;&nbsp;&nbsp;int count = totalCount / pageSize;<br />
&nbsp;&nbsp;&nbsp;if (totalCount % pageSize &gt; 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;count++;<br />
&nbsp;&nbsp;&nbsp;indexes = new int[count];<br />
&nbsp;&nbsp;&nbsp;for (int i = 0; i &lt; count; i++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;indexes[i] = pageSize * i;<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;this.totalCount = 0;<br />
&nbsp;&nbsp;}<br />
&nbsp;}</p>
<p>&nbsp;public int[] getIndexes() {<br />
&nbsp;&nbsp;return indexes;<br />
&nbsp;}</p>
<p>&nbsp;public void setIndexes(int[] indexes) {<br />
&nbsp;&nbsp;this.indexes = indexes;<br />
&nbsp;}</p>
<p>&nbsp;public int getStartIndex() {<br />
&nbsp;&nbsp;return startIndex;<br />
&nbsp;}</p>
<p>&nbsp;public void setStartIndex(int startIndex) {<br />
&nbsp;&nbsp;if (totalCount &lt;= 0)<br />
&nbsp;&nbsp;&nbsp;this.startIndex = 0;<br />
&nbsp;&nbsp;else if (startIndex &gt;= totalCount)<br />
&nbsp;&nbsp;&nbsp;this.startIndex = indexes[indexes.length - 1];<br />
&nbsp;&nbsp;else if (startIndex &lt; 0)<br />
&nbsp;&nbsp;&nbsp;this.startIndex = 0;<br />
&nbsp;&nbsp;else {<br />
&nbsp;&nbsp;&nbsp;this.startIndex = indexes[startIndex / pageSize];<br />
&nbsp;&nbsp;}<br />
&nbsp;}</p>
<p>&nbsp;public int getNextIndex() {<br />
&nbsp;&nbsp;int nextIndex = getStartIndex() + pageSize;<br />
&nbsp;&nbsp;if (nextIndex &gt;= totalCount)<br />
&nbsp;&nbsp;&nbsp;return getStartIndex();<br />
&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;return nextIndex;<br />
&nbsp;}</p>
<p>&nbsp;public int getPreviousIndex() {<br />
&nbsp;&nbsp;int previousIndex = getStartIndex() - pageSize;<br />
&nbsp;&nbsp;if (previousIndex &lt; 0)<br />
&nbsp;&nbsp;&nbsp;return 0;<br />
&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;return previousIndex;<br />
&nbsp;}</p>
<p>&nbsp;public int getPageCount() {<br />
&nbsp;&nbsp;int count = totalCount / pageSize;<br />
&nbsp;&nbsp;if (totalCount % pageSize &gt; 0)<br />
&nbsp;&nbsp;&nbsp;count++;<br />
&nbsp;&nbsp;return count;<br />
&nbsp;}</p>
<p>&nbsp;public int getCurentPageNum() {<br />
&nbsp;&nbsp;return getStartIndex() / pageSize + 1;<br />
&nbsp;}</p>
<p>}<br />
在这个分页类中设定了每页要显示的记录数以及开始索引，如果用普通的jsp来取这个分页类的数据还可以，但是使用spring+hibernate这种架构就显得比较麻烦（原因是spring MVC返回的是一个&nbsp;PaginationSupport的对象，使用jstl作为前端显示的话，会在jsp页面中掺杂大量的计算，像下一页索引，共多少条记录，当前第几页，共多少页等等会使jsp很难维护）下面是对这个类的改进：<br />
</p>
<p>public class&nbsp;&nbsp;PaginationSupport {<br />
&nbsp;public final static int PAGESIZE = 30;</p>
<p>&nbsp;private int pageSize = PAGESIZE;<br />
&nbsp;<br />
&nbsp;private int totalCount;</p>
<p>&nbsp;private int currentPage;</p>
<p>&nbsp;private int startIndex;<br />
&nbsp;<br />
&nbsp;private int[] indexes = new int[0];<br />
&nbsp;<br />
&nbsp;private int nextIndex;</p>
<p>&nbsp;private int previousIndex;</p>
<p>&nbsp;private int pageCount;</p>
<p>&nbsp;private List items;<br />
&nbsp;<br />
&nbsp;private int lastIndex;<br />
&nbsp;<br />
&nbsp;public&nbsp;&nbsp;PaginationSupport(int pageSize,<br />
&nbsp;&nbsp;&nbsp;int startIndex) {<br />
&nbsp;&nbsp;setPageSize(pageSize);<br />
&nbsp;&nbsp;setStartIndex(startIndex);<br />
&nbsp;&nbsp;<br />
&nbsp;}</p>
<p>&nbsp;public&nbsp;&nbsp;PaginationSupport(List items, int totalCount) {<br />
&nbsp;&nbsp;setPageSize(PAGESIZE);<br />
&nbsp;&nbsp;setTotalCount(totalCount);<br />
&nbsp;&nbsp;setItems(items);<br />
&nbsp;&nbsp;setStartIndex(0);<br />
&nbsp;<br />
&nbsp;}</p>
<p>&nbsp;public&nbsp;&nbsp;PaginationSupport(List items, int totalCount, int startIndex) {<br />
&nbsp;&nbsp;setPageSize(PAGESIZE);<br />
&nbsp;&nbsp;setTotalCount(totalCount);<br />
&nbsp;&nbsp;setItems(items);<br />
&nbsp;&nbsp;setStartIndex(startIndex);<br />
&nbsp;&nbsp;<br />
&nbsp;}</p>
<p>&nbsp;public&nbsp;&nbsp;PaginationSupport(List items, int totalCount, int pageSize,<br />
&nbsp;&nbsp;&nbsp;int startIndex) {<br />
&nbsp;&nbsp;setPageSize(pageSize);<br />
&nbsp;&nbsp;setTotalCount(totalCount);<br />
&nbsp;&nbsp;setItems(items);<br />
&nbsp;&nbsp;setStartIndex(startIndex);<br />
&nbsp;&nbsp;<br />
&nbsp;}</p>
<p>&nbsp;<br />
&nbsp;public void setTotalCount(int totalCount) {<br />
&nbsp;&nbsp;if (totalCount &gt; 0) {<br />
&nbsp;&nbsp;&nbsp;this.totalCount = totalCount;<br />
&nbsp;&nbsp;&nbsp;int count = totalCount / pageSize;<br />
&nbsp;&nbsp;&nbsp;if (totalCount % pageSize &gt; 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;count++;<br />
&nbsp;&nbsp;&nbsp;indexes = new int[count];<br />
&nbsp;&nbsp;&nbsp;for (int i = 0; i &lt; count; i++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;indexes[i] = pageSize * i;<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;this.totalCount = 0;<br />
&nbsp;&nbsp;}<br />
&nbsp;}<br />
&nbsp;public int getTotalCount() {<br />
&nbsp;&nbsp;return totalCount;<br />
&nbsp;}<br />
&nbsp;public void setIndexes(int[] indexes) {<br />
&nbsp;&nbsp;this.indexes = indexes;<br />
&nbsp;}<br />
&nbsp;public int[] getIndexes() {<br />
&nbsp;&nbsp;return indexes;<br />
&nbsp;}</p>
<p>&nbsp;<br />
&nbsp;public void setStartIndex(int startIndex) {<br />
&nbsp;&nbsp;if (totalCount &lt;= 0)<br />
&nbsp;&nbsp;&nbsp;this.startIndex = 0;<br />
&nbsp;&nbsp;else if (startIndex &gt;= totalCount)<br />
&nbsp;&nbsp;&nbsp;this.startIndex = indexes[indexes.length - 1];<br />
&nbsp;&nbsp;else if (startIndex &lt; 0)<br />
&nbsp;&nbsp;&nbsp;this.startIndex = 0;<br />
&nbsp;&nbsp;else {<br />
&nbsp;&nbsp;&nbsp;this.startIndex = indexes[startIndex / pageSize];<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;public int getStartIndex() {<br />
&nbsp;&nbsp;return startIndex;<br />
&nbsp;}</p>
<p>&nbsp;<br />
&nbsp;public void setNextIndex(int nextIndex) {<br />
&nbsp;&nbsp;this.nextIndex = nextIndex;<br />
&nbsp;}<br />
&nbsp;public int getNextIndex() {<br />
&nbsp;&nbsp;int nextIndex = getStartIndex() + pageSize;<br />
&nbsp;&nbsp;if (nextIndex &gt;= totalCount)<br />
&nbsp;&nbsp;&nbsp;return getStartIndex();<br />
&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;return nextIndex;<br />
&nbsp;}<br />
&nbsp;public void setPreviousIndex(int previousIndex) {<br />
&nbsp;&nbsp;this.previousIndex = previousIndex;<br />
&nbsp;}<br />
&nbsp;<br />
&nbsp;public int getPreviousIndex() {<br />
&nbsp;&nbsp;int previousIndex = getStartIndex() - pageSize;<br />
&nbsp;&nbsp;if (previousIndex &lt; 0)<br />
&nbsp;&nbsp;&nbsp;return 0;<br />
&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;return previousIndex;<br />
&nbsp;}<br />
&nbsp;public void setPageCount(int pageCount) {<br />
&nbsp;&nbsp;this.pageCount = pageCount;<br />
&nbsp;}<br />
&nbsp;public int getPageCount() {<br />
&nbsp;&nbsp;int count = totalCount / pageSize;<br />
&nbsp;&nbsp;if (totalCount % pageSize &gt; 0)<br />
&nbsp;&nbsp;&nbsp;count++;<br />
&nbsp;&nbsp;return count;<br />
&nbsp;}<br />
&nbsp;</p>
<p>&nbsp;public int getCurrentPage() {<br />
&nbsp;&nbsp;return getStartIndex() / pageSize + 1;<br />
&nbsp;}</p>
<p>&nbsp;public void setCurrentPage(int currentPage) {<br />
&nbsp;&nbsp;this.currentPage = currentPage;<br />
&nbsp;}<br />
<br />
&nbsp;public void setLastIndex(int lastIndex) {<br />
&nbsp;&nbsp;this.lastIndex =lastIndex ;<br />
&nbsp;}<br />
&nbsp;public int getLastIndex() {<br />
&nbsp;&nbsp;return indexes[indexes.length-1];<br />
&nbsp;}</p>
<p>&nbsp;<br />
&nbsp;public int getPageSize() {<br />
&nbsp;&nbsp;return pageSize;<br />
&nbsp;}</p>
<p>&nbsp;public void setPageSize(int pageSize) {<br />
&nbsp;&nbsp;this.pageSize = pageSize;<br />
&nbsp;}</p>
<p>&nbsp;</p>
<p>&nbsp;public List getItems() {<br />
&nbsp;&nbsp;return items;<br />
&nbsp;}</p>
<p>&nbsp;public void setItems(List items) {<br />
&nbsp;&nbsp;this.items = items;<br />
&nbsp;}</p>
<p><br />
}<br />
以上是分页的封装类，下面是支持分页查询的方法：<br />
1）<br />
public PaginationSupport findPageByCriteria(<br />
&nbsp;&nbsp;&nbsp;final DetachedCriteria detachedCriteria, final int pageSize,<br />
&nbsp;&nbsp;&nbsp;final int startIndex) {<br />
&nbsp;&nbsp;return (PaginationSupport) getHibernateTemplate().execute(<br />
&nbsp;&nbsp;&nbsp;&nbsp;new HibernateCallback() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public Object doInHibernate(Session session)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throws HibernateException {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Criteria criteria = detachedCriteria<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.getExecutableCriteria(session);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int totalCount = ((Integer) criteria.setProjection(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Projections.rowCount()).uniqueResult())<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.intValue();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;criteria.setProjection(null);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List items = criteria.setFirstResult(startIndex)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.setMaxResults(pageSize).list();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PaginationSupport ps = new PaginationSupport(items,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;totalCount, pageSize, startIndex);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return ps;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}, true);<br />
&nbsp;}<br />
2）<br />
public&nbsp; PaginationSupport findPageByQuery( final&nbsp; String hsql,&nbsp; final int pageSize,final int startIndex){ <br />
&nbsp;&nbsp;&nbsp;&nbsp; return (PaginationSupport)getHibernateTemplate().execute( <br />
&nbsp;&nbsp;&nbsp;&nbsp; new&nbsp; HibernateCallback() { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public&nbsp; Object doInHibernate(Session session)&nbsp; throws&nbsp; HibernateException, SQLException { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Query query&nbsp; =&nbsp; session.createQuery(hsql);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int totalCount=query.list().size();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; query.setFirstResult(startIndex); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; query.setMaxResults(pageSize); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List items&nbsp; = query.list();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PaginationSupport ps = new PaginationSupport(items,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; totalCount, pageSize, startIndex);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return ps;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; },true); <br />
&nbsp;&nbsp;}<br />
你也许会问分页查询为什么会提供两个方法，这两个方法有区别吗？其实这两个方法并无本质区别，DetachedCriteria 也是构造查询语句的与Query功能一致，但是它提供了更加面向对象的方法来写hsql语句。一般人们都倾向第一种方法，但是这种方法并不通用，它有一种查询并不支持，那就是当你要查询的对象并不是一个单一对象的话（例如 你在数据库中有两个表，一个是user,另一个是userinfo,这两个表所对应的对象在hiberante中被指定为共享主键的话，在执行查询的时候就会报类型转换异常，原因是查询出来的对象并不是user而是一个包含user 和userinfo的Object,你若强制把它转换成user类型，肯定会出错),这时你不得不采用第二个方法。当然这只是我个人见解，也许还有地方说的不是很准确，希望大家多多批评指正。<br />
最后是这个分页类的前台显示源代码:<br />
&lt;%@ page language="java" contentType="text/html; charset=gbk"<br />
&nbsp;&nbsp;&nbsp; pageEncoding="GBK"%&gt;<br />
&lt;%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%&gt;<br />
&lt;%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%&gt;<br />
&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;<br />
&lt;html&gt;<br />
&nbsp; &lt;head&gt;<br />
&nbsp; &lt;link type="text/css" rel="stylesheet" href="../css/panel.css"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;title&gt;显示所有用户&lt;/title&gt;<br />
&nbsp; &lt;/head&gt;<br />
&nbsp; <br />
&nbsp; &lt;body&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;div style="margin:20px auto 30px; width:70%;"&gt;&lt;a href="index.jsp" class="btn2"&gt;返回首页&lt;/a&gt;&lt;/div&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;div style="margin:10px auto 0; width:70%;"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;table width="100%" border="0" cellpadding="0" cellspacing="0"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;caption&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 显示所有用户<br />
&nbsp;&nbsp;&nbsp; &lt;/caption&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;用户ID&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;用户名&lt;/td&gt;<br />
&nbsp;&nbsp; &lt;td&gt;用户昵称&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;电子邮件&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;注册时间&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;详细信息&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;用户充值记录&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;用户定制服务信息&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />
&lt;c:forEach var="user" items="${userPage.items}"&gt;<br />
&nbsp;&lt;tr&gt;<br />
&nbsp;&nbsp; &lt;td&gt;${user.intId}&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;${user.username}&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;${user.name}&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;${user.email}&lt;/td&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;fmt:formatDate value='${user.creationTime}' pattern='yyyy-MM-dd HH:mm' /&gt;&lt;/td&gt;<br />
&nbsp;&nbsp; &lt;td&gt;&lt;a href="user_getdetailUser.ado?userId=${user.intId}" class="btn"&gt;详细信息&lt;/a&gt;&lt;/td&gt;<br />
&nbsp;&nbsp; &lt;td&gt;&lt;a href="orderService_getUserAccountAdds.ado?userId=${user.intId}" class="btn"&gt;用户充值记录&lt;/a&gt;&lt;/td&gt;<br />
&nbsp;&nbsp; &lt;td&gt;&lt;a href="orderService_getUserChargeItems.ado?userId=${user.intId}" class="btn"&gt;用户定制服务信息&lt;/a&gt;&lt;/td&gt;<br />
&nbsp;&lt;/tr&gt;<br />
&lt;/c:forEach&gt;<br />
&nbsp; &lt;/table&gt;<br />
&nbsp;&nbsp; &lt;c:if test="${!empty userPage}"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; 共${userPage.totalCount}记录 <br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;c:choose&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;c:when test="${userPage.startIndex ne '0'}"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&lt;a href="user_getPage.ado?startIndex=0"&gt;首页&lt;/a&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;/c:when&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;c:otherwise&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;首页<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;/c:otherwise&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/c:choose&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;c:choose&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;c:when test="${userPage.previousIndex lt userPage.startIndex}"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&lt;a href="user_getPage.ado?startIndex=${userPage.previousIndex }"&gt;上一页&lt;/a&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;/c:when&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;c:otherwise&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;上一页<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;/c:otherwise&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/c:choose&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;c:choose&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;c:when test="${userPage.nextIndex&gt;userPage.startIndex}"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&lt;a href="user_getPage.ado?startIndex=${userPage.nextIndex}"&gt;下一页&lt;/a&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;/c:when&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;c:otherwise&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;下一页<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;/c:otherwise&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/c:choose&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;c:choose&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;c:when test="${userPage.lastIndex eq userPage.startIndex}"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;最后一页<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;/c:when&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;c:otherwise&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&lt;a href="user_getPage.ado?startIndex=${userPage.lastIndex}"&gt;最后一页&lt;/a&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;/c:otherwise&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;/c:choose&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; 每页显示${userPage.pageSize}条记录 <br />
&nbsp;&nbsp;&nbsp;&nbsp; 当前第${userPage.currentPage }/${userPage.pageCount}页<br />
&nbsp; &lt;/c:if&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/div&gt;<br />
&nbsp; &lt;/body&gt;<br />
&lt;/html&gt;<br />
<br />
<br />
</p>
</span>
<img src ="http://www.blogjava.net/flustar/aggbug/160142.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/flustar/" target="_blank">flustar</a> 2007-11-13 10:50 <a href="http://www.blogjava.net/flustar/archive/2007/11/13/160142.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>