﻿<?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-jfy3d(剑事)BLOG-随笔分类-struts</title><link>http://www.blogjava.net/jfy3d/category/1266.html</link><description>&lt;!--&lt;a href=http://www.myjavaserver.com/~jfy3d/  target=_blank&gt;&lt;img src='http://www.blogjava.net/images/blogjava_net/jfy3d/1610/t_myphoto.jpg' border='0' width='55' height='68'&gt;&lt;/a&gt;--&gt;
&lt;!-- Start FastOnlineUsers.com --&gt;
&lt;a href="http://www.fastonlineusers.com"&gt;&lt;script type="text/javascript" src="http://fastonlineusers.com/on2.php?d=jfy3d.blogjava.net"&gt;&lt;/script&gt; online&lt;/a&gt;
&lt;!-- End FastOnlineUsers.com --&gt;</description><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 11:06:04 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 11:06:04 GMT</pubDate><ttl>60</ttl><item><title>struts中action带参数跳转</title><link>http://www.blogjava.net/jfy3d/archive/2005/05/13/4255.html</link><dc:creator>剑事</dc:creator><author>剑事</author><pubDate>Fri, 13 May 2005 03:37:00 GMT</pubDate><guid>http://www.blogjava.net/jfy3d/archive/2005/05/13/4255.html</guid><wfw:comment>http://www.blogjava.net/jfy3d/comments/4255.html</wfw:comment><comments>http://www.blogjava.net/jfy3d/archive/2005/05/13/4255.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/jfy3d/comments/commentRss/4255.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jfy3d/services/trackbacks/4255.html</trackback:ping><description><![CDATA[action中实现动态跳转得一个方法<BR><BR>public class RegmobileAction extends Action {<BR>&nbsp;public ActionForward execute(<BR>&nbsp;&nbsp;ActionMapping mapping,<BR>&nbsp;&nbsp;ActionForm form,<BR>&nbsp;&nbsp;HttpServletRequest request,<BR>&nbsp;&nbsp;HttpServletResponse response)<BR>&nbsp;&nbsp;throws Exception <BR>&nbsp;{<BR>&nbsp;&nbsp;String url;<BR>&nbsp;&nbsp;&nbsp;url = "<A href="http://200.94.206.237:8070/order">http://200.94.206.237:8070/order</A>?" <BR>&nbsp;&nbsp;&nbsp;&nbsp; +"&amp;CPKeys:=626A737977&amp;Itemid=124444" <BR>&nbsp;&nbsp;&nbsp;&nbsp; +"&amp;FeeNumber="+request.getParameter("phone")<BR>&nbsp;&nbsp;&nbsp;&nbsp; +"&amp;Feetype=2&amp;CTtag="+request.getParameter("CTtag")<BR>&nbsp;&nbsp;&nbsp;&nbsp; +"&amp;backUrl=http://mms.0000.com.cn/mov/index.jsp"<BR>&nbsp;&nbsp;&nbsp;&nbsp; +"&amp;deliverurl=http://mms.0000.com.cn/mov/deliver.do";<BR>&nbsp;&nbsp;&nbsp;&nbsp;ActionForward gotourl = new ActionForward(url);//url可以根据不同得条件指定不同得地址和不同得参数<BR>&nbsp;&nbsp;gotourl.setPath(url);<BR>gotourl.setRedirect(true);<BR>&nbsp;&nbsp;return gotourl;<BR>&nbsp;}<img src ="http://www.blogjava.net/jfy3d/aggbug/4255.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jfy3d/" target="_blank">剑事</a> 2005-05-13 11:37 <a href="http://www.blogjava.net/jfy3d/archive/2005/05/13/4255.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>修改struts源码解决ApplicationResources.properties里不能直接用中文的一个方法</title><link>http://www.blogjava.net/jfy3d/archive/2005/05/12/4184.html</link><dc:creator>剑事</dc:creator><author>剑事</author><pubDate>Wed, 11 May 2005 16:21:00 GMT</pubDate><guid>http://www.blogjava.net/jfy3d/archive/2005/05/12/4184.html</guid><wfw:comment>http://www.blogjava.net/jfy3d/comments/4184.html</wfw:comment><comments>http://www.blogjava.net/jfy3d/archive/2005/05/12/4184.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/jfy3d/comments/commentRss/4184.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jfy3d/services/trackbacks/4184.html</trackback:ping><description><![CDATA[
		<p>native2ascii<br />用这个命令转换我觉得不方便 不知别人如何 呵呵</p>
		<p>改页面8859_1（不能是iso-8859-1）可以不用native2ascii转换ApplicationResources.properties<br />可是没页都要改啊8859_1也很麻烦</p>
		<p>所以只好找struts本身来解决了呵呵<br /><br />*不过这个方法只适合小应用，不需要多国语言的*</p>
		<p>struts.jar</p>
		<p>org.apache.struts.taglib.bean.MessageTag类</p>
		<p>
				<br />找到doStartTag()方法</p>
		<p>里面有行ResponseUtils.write(super.pageContext, message);</p>
		<p>在这行上面加上一句 如下</p>
		<p>        try<br />        {<br />            message = new String(message.getBytes("iso-8859-1"), "gb2312");<br />        }<br />        catch(Exception exception) { }<br /><br />        ResponseUtils.write(super.pageContext, message);</p>
		<p>
				<br />这样就OK了</p>
		<p>&lt;%@ page contentType="text/html; charset=gb2312" language="java" %&gt;<br />要用gb2312<br /></p>
<img src ="http://www.blogjava.net/jfy3d/aggbug/4184.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jfy3d/" target="_blank">剑事</a> 2005-05-12 00:21 <a href="http://www.blogjava.net/jfy3d/archive/2005/05/12/4184.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个struts的分页－－sql server存储过程版（等数据库）分页（更新）</title><link>http://www.blogjava.net/jfy3d/archive/2005/05/11/4175.html</link><dc:creator>剑事</dc:creator><author>剑事</author><pubDate>Wed, 11 May 2005 08:58:00 GMT</pubDate><guid>http://www.blogjava.net/jfy3d/archive/2005/05/11/4175.html</guid><wfw:comment>http://www.blogjava.net/jfy3d/comments/4175.html</wfw:comment><comments>http://www.blogjava.net/jfy3d/archive/2005/05/11/4175.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/jfy3d/comments/commentRss/4175.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jfy3d/services/trackbacks/4175.html</trackback:ping><description><![CDATA[
		<p>说是struts分页,实际上这个分页类不局限在某个框架下用的<br /><br />实现方法是通过list和 map 来封装数据结果集省了建立formbean和手动对formbean赋值的麻烦，<br />用list和 map 来封装后使用起来和rs基本上一样，有些地方比RS方便些。<br />本分页类中对查询参数已经作了处理，所以不需要在自己在去拼URL参数了。<br /><br /><br />sql server分页使用存储过程要更高效些<br />下面这个存储过程是从SQL区找到的</p>
		<p>-----------------------------------------------------------------------------------------------------------------------------------<br />CREATE Proc p_show<br />@QueryStr varchar(8000), --表名、视图名、查询语句<br />@PageSize int=10,   --每页的大小(行数)<br />@PageCurrent int=1,   --要显示的页<br />@FdShow varchar (8000)='', --要显示的字段列表,如果查询结果有标识字段,需要指定此值,且不包含标识字段<br />@FdOrder nvarchar (3000)='' --排序字段列表<br />as<br />declare @FdName nvarchar(550) --表中的主键或表、临时表中的标识列名<br /> ,@Id1 varchar(80),@Id2 varchar(80) --开始和结束的记录号<br /> ,@Obj_ID int    --对象ID<br />--表中有复合主键的处理<br />declare @strfd nvarchar(4000) --复合主键列表<br /> ,@strjoin varchar(8000) --连接字段<br /> ,@strwhere nvarchar(4000) --查询条件</p>
		<p>
				<br />select @Obj_ID=object_id(@QueryStr)<br /> ,@FdShow=case isnull(@FdShow,'') when '' then ' *' else ' <a href="mailto:'+@FdShow">'+@FdShow</a> end<br /> ,@FdOrder=case isnull(@FdOrder,'') when '' then '' else ' order by <a href="mailto:'+@FdOrder">'+@FdOrder</a> end<br /> ,@QueryStr=case when @Obj_ID is not null then ' <a href="mailto:'+@QueryStr">'+@QueryStr</a> else ' (<a href="mailto:'+@QueryStr+'">'+@QueryStr+'</a>) a' end</p>
		<p>--如果显示第一页，可以直接用top来完成<br />if @PageCurrent=1 <br />begin<br /> select @Id1=cast(@PageSize as varchar(50))<br /> exec('select top <a href="mailto:'+@Id1+@FdShow+'">'+@Id1+@FdShow+'</a> from <a href="mailto:'+@QueryStr+@FdOrder">'+@QueryStr+@FdOrder</a>)<br /> return<br />end</p>
		<p>--如果是表,则检查表中是否有标识更或主键<br />if @Obj_ID is not null and objectproperty(@Obj_ID,'IsTable')=1<br />begin<br /> select @Id1=cast(@PageSize as varchar(50))<br />  ,@Id2=cast((@PageCurrent-1)*@PageSize as varchar(50))</p>
		<p> select @FdName=name from syscolumns where <a href="mailto:id=@Obj_ID">id=@Obj_ID</a> and status=0x80<br /> if @@rowcount=0   --如果表中无标识列,则检查表中是否有主键<br /> begin<br />  if not exists(select 1 from sysobjects where <a href="mailto:parent_obj=@Obj_ID">parent_obj=@Obj_ID</a> and xtype='PK')<br />   goto lbusetemp  --如果表中无主键,则用临时表处理</p>
		<p>  select @FdName=name from syscolumns where <a href="mailto:id=@Obj_ID">id=@Obj_ID</a> and colid in(<br />   select colid from sysindexkeys where @Obj_ID=id and indid in(<br />    select indid from sysindexes where @Obj_ID=id and name in(<br />     select name from sysobjects where xtype='PK' and <a href="mailto:parent_obj=@Obj_ID">parent_obj=@Obj_ID</a><br />   )))<br />  if @@rowcount&gt;1  --检查表中的主键是否为复合主键<br />  begin<br />   select @strfd='',@strjoin='',@strwhere=''<br />   select @strfd=@strfd+',['+name+']'<br />    ,@strjoin=@strjoin+' and a.['+name+']=b.['+name+']'<br />    ,@strwhere=@strwhere+' and b.['+name+'] is null'<br />    from syscolumns where <a href="mailto:id=@Obj_ID">id=@Obj_ID</a> and colid in(<br />    select colid from sysindexkeys where @Obj_ID=id and indid in(<br />     select indid from sysindexes where @Obj_ID=id and name in(<br />      select name from sysobjects where xtype='PK' and <a href="mailto:parent_obj=@Obj_ID">parent_obj=@Obj_ID</a><br />    )))<br />   select @strfd=substring(@strfd,2,2000)<br />    ,@strjoin=substring(@strjoin,5,4000)<br />    ,@strwhere=substring(@strwhere,5,4000)<br />   goto lbusepk<br />  end<br /> end<br />end<br />else<br /> goto lbusetemp</p>
		<p>/*--使用标识列或主键为单一字段的处理方法--*/<br />lbuseidentity: <br /> exec('select top <a href="mailto:'+@Id1+@FdShow+'">'+@Id1+@FdShow+'</a> from <a href="mailto:'+@QueryStr">'+@QueryStr</a><br />  +' where <a href="mailto:'+@FdName+'">'+@FdName+'</a> not in(select top '<br />  <a href="mailto:+@Id2+'">+@Id2+'</a><a href="mailto:'+@FdName+'">'+@FdName+'</a> from <a href="mailto:'+@QueryStr+@FdOrder">'+@QueryStr+@FdOrder</a><br />  +')'+@FdOrder<br />  )<br /> return</p>
		<p>/*--表中有复合主键的处理方法--*/<br />lbusepk:  <br /> exec('select <a href="mailto:'+@FdShow+'">'+@FdShow+'</a> from(select top <a href="mailto:'+@Id1+'">'+@Id1+'</a> a.* from<br />  (select top 100 percent * from <a href="mailto:'+@QueryStr+@FdOrder+'">'+@QueryStr+@FdOrder+'</a>) a<br />  left join (select top <a href="mailto:'+@Id2+'">'+@Id2+'</a><a href="mailto:'+@strfd+'">'+@strfd+'</a><br />  from <a href="mailto:'+@QueryStr+@FdOrder+'">'+@QueryStr+@FdOrder+'</a>) b on <a href="mailto:'+@strjoin+'">'+@strjoin+'</a><br />  where <a href="mailto:'+@strwhere+'">'+@strwhere+'</a>) a'<br />  )<br /> return</p>
		<p>/*--用临时表处理的方法--*/<br />lbusetemp:  <br />select @FdName='[ID_'+cast(newid() as varchar(80))+']'<br /> ,@Id1=cast(@PageSize*(@PageCurrent-1) as varchar(50))<br /> ,@Id2=cast(@PageSize*@PageCurrent-1 as varchar(50))</p>
		<p>exec('select <a href="mailto:'+@FdName+'=identity(int,0,1),'+@FdShow+'">'+@FdName+'=identity(int,0,1),'+@FdShow+'</a><br />  into #tb <a href="mailto:from'+@QueryStr+@FdOrder+'">from'+@QueryStr+@FdOrder+'</a><br /> select <a href="mailto:'+@FdShow+'">'+@FdShow+'</a> from #tb where <a href="mailto:'+@FdName+'">'+@FdName+'</a> between '<br /> <a href="mailto:+@Id1+'">+@Id1+'</a> and <a href="mailto:'+@Id2">'+@Id2</a><br /> )<br />GO<br />--------------------------------------------------------------------------------------------------------------------------------</p>
		<p>这里需要建立一个分页类ResultGatherPro.java<br />相关说明在相应行的后面<br /></p>
		<p>--------------------------------------------------------------------------------------------------------------------------------</p>
		<p>
				<br />import conn.DBConnManager;//这个是连接池，可以更换其他的。</p>
		<p>import javax.servlet.http.HttpServletRequest;<br />import java.sql.*;<br />import java.util.*;</p>
		<p>public class ResultGatherPro {<br />    private String sql;<br />    private int intPageSize; //每页行数<br />    private int intRowCount;<br />    private int intPageCount;<br />    private int intPage; //页号<br />    private String Counter;<br />    DBConnManager conn = null;<br />    Connection con = null;<br />    CallableStatement stmt = null;<br />    ResultSet rs = null;<br />    Statement st = null;<br />    ResultSet rsc = null;<br />    private String defaultname = "default";</p>
		<p>    public ResultGatherPro() {</p>
		<p>    }</p>
		<p>    public ResultGatherPro(String sqlcom, int rownum, int pagenum, String counter) {<br />        System.out.println(counter);<br />        sql = sqlcom;<br />        intPageSize = rownum;<br />        intPage = pagenum;<br />        Counter = counter;<br />        System.out.println(sqlcom);<br />    }<br />    public void setUseDB(String dbname)<br />    {<br />        this.defaultname = dbname;<br />    }<br />    public List selectRS(String sqlcom, int rownum, int pagenum, String counter) {<br />        System.out.println(counter);<br />        this.sql = sqlcom;<br />        this.intPageSize = rownum;<br />        this.intPage = pagenum;<br />        this.Counter = counter;<br />        System.out.println(sqlcom);<br />        return selectRS();</p>
		<p>    }</p>
		<p>    public List selectRS() {<br />        List rsall = new ArrayList();<br />        Map rsTree;</p>
		<p>        try {<br />            conn = DBConnManager.getInstance();<br />            con = conn.getConnection(defaultname);<br />            st = con.createStatement();<br />            rsc = st.executeQuery(Counter);<br />            while (rsc.next()) {<br />                intRowCount = rsc.getInt("allrow");<br />            }</p>
		<p>            stmt = con.prepareCall("{call p_show('" + sql + "'," + intPageSize + "," + intPage + ")}");//如果用别的数据库就把这个地方修改一下<br />            rs = stmt.executeQuery();<br />            ResultSetMetaData rsmd = rs.getMetaData();<br />            int numberOfColumns = rsmd.getColumnCount();<br />            //Object[] aa = new Object[numberOfColumns-1];<br />            intPageCount = (intRowCount + intPageSize - 1) / intPageSize;<br />            while (rs.next()) {<br />                rsTree = new HashMap(numberOfColumns);<br />                for (int r = 1; r &lt; numberOfColumns + 1; r++) {<br />                    rsTree.put(rsmd.getColumnName(r).toLowerCase(), rs.getObject(r));//toLowerCase()这个地方把列名转化为小写是为了和oracle兼容<br />                }<br />                rsall.add(rsTree);<br />            }<br />        } catch (java.lang.Exception ex) {<br />            System.out.println("db conn has a Exception !!!!");<br />            if(ex.toString().indexOf("peer")&gt;0||ex.toString().indexOf("reset")&gt;0) //一般连接池都没有自动重连功能，这里是当数据库连接异常后，进行重新初始化连接。不然即使网络正常了，数据库连接也不会恢复<br />                DBConnManager.reConnect();</p>
		<p>            ex.printStackTrace();<br />        } finally {<br />            try {<br />                if (rsc != null)<br />                    rsc.close();<br />                if (st != null)<br />                    st.close();<br />                if (rs != null)<br />                    rs.close();<br />                if (stmt != null)<br />                    stmt.close();<br />                if (conn != null)<br />                    conn.releaseConnection(defaultname, con);<br />            } catch (Exception e) {<br />                System.out.println(e);<br />            }<br />        }<br />        return rsall;<br />    }</p>
		<p>    public String ChangePage(HttpServletRequest request) {<br />        String urlchange = null;<br />        String pagename = request.getRequestURI().substring(request.getRequestURI().lastIndexOf("/") + 1);<br />        String url = getUrl(request);<br />        String dol = "";<br />        if (url != null &amp;&amp; !url.equals(""))<br />            dol = "&amp;";<br />        if (intPage &gt; 1 &amp;&amp; intPage &lt; intPageCount) {<br />            urlchange = "&lt;a href=" + pagename + "?pagenum=" + (intPage - 1) + dol + url + "&gt;上一页&lt;/a&gt; | &lt;a href=" + pagename + "?pagenum=" + (intPage + 1) + dol + url + "&gt;下一页&lt;/a&gt; | 第" + intPage + "页 | 共" + intPageCount + "页 | 共" + intRowCount + "条";<br />        } else if (intPage == 1 &amp;&amp; intRowCount &lt;= intPageSize) {<br />            urlchange = "上一页 | 下一页 | 第" + intPage + "页 | 共" + intPageCount + "页 | 共" + intRowCount + "条";<br />        } else if (intPage == intPageCount &amp;&amp; intPage != 1) {<br />            urlchange = "&lt;a href=" + pagename + "?pagenum=" + (intPage - 1) + dol + url + "&gt;上一页&lt;/a&gt; 下一页 | 第" + intPage + "页 | 共" + intPageCount + "页 | 共" + intRowCount + "条";<br />        } else if (intPage == 1 &amp;&amp; intRowCount &gt;= intPageSize) {<br />            urlchange = "上一页 | &lt;a href=" + pagename + "?pagenum=" + (intPage + 1) + dol + url + "&gt;下一页&lt;/a&gt; | 第" + intPage + "页 | 共" + intPageCount + "页 | 共" + intRowCount + "条";<br />        } else {<br />            urlchange = "&lt;a href=" + pagename + "&gt;第一页&lt;/a&gt;";<br />        }<br />        return urlchange;<br />    }</p>
		<p>    public String ChangeBar(HttpServletRequest request) {<br />        String urlchange = null;<br />        String pagename = request.getRequestURI().substring(request.getRequestURI().lastIndexOf("/") + 1);<br />        String url = getUrl(request);<br />        String dol = "";<br />        if (url != null &amp;&amp; !url.equals(""))<br />            dol = "&amp;";<br />        if (intPage &gt; 1 &amp;&amp; intPage &lt; intPageCount) {<br />            urlchange = "&lt;a href=" + pagename + "?pagenum=" + (intPage - 1) + dol + url + "&gt;上一页&lt;/a&gt; | &lt;a href=" + pagename + "?pagenum=" + (intPage + 1) + dol + url + "&gt;下一页&lt;/a&gt; | 第" + intPage + "页 | 共" + intPageCount + "页";<br />        } else if (intPage == 1 &amp;&amp; intRowCount &lt;= intPageSize) {<br />            urlchange = "上一页 | 下一页 | 第" + intPage + "页 | 共" + intPageCount + "页";<br />        } else if (intPage == intPageCount &amp;&amp; intPage != 1) {<br />            urlchange = "&lt;a href=" + pagename + "?pagenum=" + (intPage - 1) + dol + url + "&gt;上一页&lt;/a&gt; 下一页 | 第" + intPage + "页 | 共" + intPageCount + "页";<br />        } else if (intPage == 1 &amp;&amp; intRowCount &gt;= intPageSize) {<br />            urlchange = "上一页 | &lt;a href=" + pagename + "?pagenum=" + (intPage + 1) + dol + url + "&gt;下一页&lt;/a&gt; | 第" + intPage + "页 | 共" + intPageCount + "页";<br />        } else {<br />            urlchange = "&lt;a href=" + pagename + "&gt;第一页&lt;/a&gt;";<br />        }<br />        return urlchange;<br />    }</p>
		<p>    public int getTotal() {<br />        return intRowCount;<br />    }</p>
		<p>    public int getPageCount() {<br />        return intPageCount;<br />    }</p>
		<p>    public String gotoPage(HttpServletRequest request) {<br />        String url = getUrl(request);<br />        String javascript = "&lt;script&gt;function checksearch(sform)\n{if(sform.pagenum.value==\"\" || sform.pagenum.value==\"0\"){alert('请输正确入页数！');sform.pagenum.focus();return false;}\nif(isNaN(sform.pagenum.value)){alert('请输入数字！');sform.pagenum.focus();return false;}}&lt;/script&gt;";<br />        String form = "&lt;table  border='0' cellpadding='0' cellspacing='0'&gt;\n" + javascript;<br />        form += "&lt;form   action='' onSubmit='return checksearch(this)'&gt;\n&lt;tr&gt;&lt;td width='40' align='center'&gt;\n&lt;input name='pagenum' type='text' size='3' class='gotext'&gt;\n ";<br />        if (url != null) {<br />            if (url.indexOf("&amp;") &gt; 0) {<br />                String[] param = new String[(url.split("&amp;")).length];<br />                param = url.split("&amp;");<br />                for (int i = 0; i &lt; param.length; i++) {<br />                    form += "&lt;input type='hidden' name='" + param[i].substring(0, param[i].indexOf("=")) + "' value='" + param[i].substring(param[i].indexOf("=") + 1) + "'&gt;\n";<br />                }<br />            } else {<br />                if (url.indexOf("=") &gt; 0) {<br />                    form += "&lt;input type='hidden' name='" + url.substring(0, url.indexOf("=")) + "' value='" + url.substring(url.indexOf("=") + 1) + "'&gt;\n";<br />                }<br />            }<br />        }<br />        form += "&lt;/td&gt;&lt;td width='25' align='center'&gt;&lt;input type='submit' name='Submit' value='GO' class='gobtn'&gt;\n&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/form&gt;\n&lt;/table&gt;";<br />        return form;<br />    }</p>
		<p>    private String getUrl(HttpServletRequest request) {<br />        String url = "";<br />        Enumeration param = request.getParameterNames();</p>
		<p>        while (param.hasMoreElements()) {<br />            String pname = param.nextElement().toString();<br />            if (!pname.equalsIgnoreCase("pagenum") &amp;&amp; !pname.equalsIgnoreCase("submit"))<br />                url += pname + "=" + request.getParameter(pname) + "&amp;";</p>
		<p>        }<br />        if (url.endsWith("&amp;")) {<br />            url = url.substring(0, url.lastIndexOf("&amp;"));<br />        }<br />        return url;<br />    }</p>
		<p>    public String intercept(String str, int num, String last) {<br />        if (str.length() &lt;= num)<br />            return str;<br />        else<br />            return str.substring(0, num) + last;<br />    }</p>
		<p>
				<br />}</p>
		<p>
		</p>
		<p>--------------------------------------------------------------------------------------------------------</p>
		<p>在action里可以这样调用<br />可以看到action里没有做对传递参数的处理，只需要把request整个传到分页类里就可以了<br />--------------------------------------------------------------------------------------------------------------</p>
		<p>   String sql = "select top 100 percent * from usertable";<br />   String sqlcount = "select count(*) from usertable";//为了得到总行数<br />   int pagesize= 18;<br />   int pagenum = 1;<br />   if(request.getParameter("pagenum")!=null)<br />   {<br />    pagenum = java.lang.Integer.parseInt(request.getParameter("pagenum"));<br />   }<br />   ResultGatherPro rs = new ResultGatherPro(sql,pagesize,pagenum,sqlcount);<br />   request.setAttribute("liststill",rs.selectRS());<br />   request.setAttribute("changepage",rs.ChangePage(request));<br />   request.setAttribute("gotopage",rs.gotoPage(request));</p>
		<p>-----------------------------------------------------------------------------------------------------------------------------------</p>
		<p>最后 jsp里可以这样写</p>
		<p>-------------------------------------------------------------------------------------------------------------------------</p>
		<p>&lt;logic:iterate id="listuser" name="liststill" type="Map"&gt;<br />&lt;bean:write name='listuser' property='username'/&gt;   <br />&lt;bean:write name='listuser' property='useremail'/&gt;       <br />&lt;/logic:iterate&gt; </p>
		<p>&lt;bean:write name='changepage' filter="false"/&gt; <br />                &lt;bean:write name='gotopage' filter="false"/&gt;<br />上面两个一定要设置filter="false" 不然会过滤html部分<br /><br /><br /><br />如果用mysql数据库<br />将分页类中<br />con.prepareCall("{call p_show('" + sql + "'," + intPageSize + "," + intPage + ")}");<br />改成<br />con.prepareCall(sql+" limit "+(intPage-1)*intPageSize+","+intPageSize);<br /><br /><br />如果用oracle数据库<br />改成<br />con.prepareCall("SELECT * FROM(SELECT A.*, rownum r FROM("+sql+") A WHERE rownum &lt;= "+intPage*intPageSize+") B WHERE r &gt; "+(intPage-1)<br />*intPageSize);<br /><br />最好不要用把所有记录都读出来然后在其中进行分页的方法</p>
<img src ="http://www.blogjava.net/jfy3d/aggbug/4175.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jfy3d/" target="_blank">剑事</a> 2005-05-11 16:58 <a href="http://www.blogjava.net/jfy3d/archive/2005/05/11/4175.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>