﻿<?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-我思故我强-文章分类-Java代码</title><link>http://www.blogjava.net/balajinima/category/26961.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 21 Feb 2008 19:32:22 GMT</lastBuildDate><pubDate>Thu, 21 Feb 2008 19:32:22 GMT</pubDate><ttl>60</ttl><item><title>通过Map取提交的表单域值</title><link>http://www.blogjava.net/balajinima/articles/181106.html</link><dc:creator>李云泽</dc:creator><author>李云泽</author><pubDate>Thu, 21 Feb 2008 09:27:00 GMT</pubDate><guid>http://www.blogjava.net/balajinima/articles/181106.html</guid><wfw:comment>http://www.blogjava.net/balajinima/comments/181106.html</wfw:comment><comments>http://www.blogjava.net/balajinima/articles/181106.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/balajinima/comments/commentRss/181106.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/balajinima/services/trackbacks/181106.html</trackback:ping><description><![CDATA[
		<p>import java.util.Enumeration;<br />import java.util.HashMap;<br />import java.util.Map;</p>
		<p>import javax.servlet.http.HttpServletRequest;</p>
		<p>import com.mdcl.mocha.fe.developer.template.util.TemplateUtil;</p>
		<p>public class ParamUtil {</p>
		<p> /**<br />  * 把request取到的参数放到一个Map中<br />  * @param request<br />  * @return<br />  */<br /> public static Map parseRequest(HttpServletRequest request){<br />  Map map = new HashMap();<br />  String key = null;<br />  String value = null;<br />        for(Enumeration enumeration = request.getParameterNames(); enumeration.hasMoreElements(); map.put(key, value))<br />        {<br />            key = (String)enumeration.nextElement();<br />            String as[] = request.getParameterValues(key);<br />            value = as[0];<br />            for(int i = 1; i &lt; as.length; i++)<br />             value = value + "," +as[i];</p>
		<p>        }<br />  return map;<br /> }<br />}<br /></p>
<img src ="http://www.blogjava.net/balajinima/aggbug/181106.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/balajinima/" target="_blank">李云泽</a> 2008-02-21 17:27 <a href="http://www.blogjava.net/balajinima/articles/181106.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java判断操作系统</title><link>http://www.blogjava.net/balajinima/articles/178792.html</link><dc:creator>李云泽</dc:creator><author>李云泽</author><pubDate>Fri, 01 Feb 2008 02:13:00 GMT</pubDate><guid>http://www.blogjava.net/balajinima/articles/178792.html</guid><wfw:comment>http://www.blogjava.net/balajinima/comments/178792.html</wfw:comment><comments>http://www.blogjava.net/balajinima/articles/178792.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/balajinima/comments/commentRss/178792.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/balajinima/services/trackbacks/178792.html</trackback:ping><description><![CDATA[
		<p>import java.net.URL;</p>
		<p>public class OS {<br /> public static final String CLASS_PATH;<br /> public static final boolean isLinux;<br /> static {<br />  URL resource = OS.class.getResource("OS.class");<br />  String classPath = resource.getPath();<br />  String className = OS.class.getName().replace('.', '/') + ".class";<br />  String classesPath = classPath.substring(0, classPath.indexOf(className));<br />  <br />  if (System.getProperty("os.name").toUpperCase().indexOf("WINDOWS") != -1&amp;&amp; classesPath.startsWith("/")) {<br />   classesPath = classesPath.substring(1);<br />   isLinux = false;<br />  } else {<br />   isLinux = true;<br />  }<br />  CLASS_PATH = classesPath;<br /> }<br /> <br /> public static void main(String arg[]){<br />  <br />  System.out.println(OS.isLinux);<br /> }<br />}<br /></p>
<img src ="http://www.blogjava.net/balajinima/aggbug/178792.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/balajinima/" target="_blank">李云泽</a> 2008-02-01 10:13 <a href="http://www.blogjava.net/balajinima/articles/178792.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jsp查看session信息</title><link>http://www.blogjava.net/balajinima/articles/165409.html</link><dc:creator>李云泽</dc:creator><author>李云泽</author><pubDate>Wed, 05 Dec 2007 02:29:00 GMT</pubDate><guid>http://www.blogjava.net/balajinima/articles/165409.html</guid><wfw:comment>http://www.blogjava.net/balajinima/comments/165409.html</wfw:comment><comments>http://www.blogjava.net/balajinima/articles/165409.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/balajinima/comments/commentRss/165409.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/balajinima/services/trackbacks/165409.html</trackback:ping><description><![CDATA[
		<p>&lt;%@ page language="java" contentType="text/html; charset=GBK"<br /> import="java.util.*" pageEncoding="GBK"%&gt;<br />&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "<a href="http://www.w3.org/TR/html4/loose.dtd">http://www.w3.org/TR/html4/loose.dtd</a>"&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;meta http-equiv="Content-Type" content="text/html; charset=GBK"&gt;<br />&lt;title&gt;Insert title here&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;%<br />out.print("&lt;br&gt;"+"session is new:"+session.isNew());</p>
		<p>Date created = new Date(session.getCreationTime());<br />//得到session对象创建的时间<br />Date accessed = new Date(session.getLastAccessedTime());<br />//得到最后访问该session对象的时间<br />out.println("&lt;br&gt;"+"ID " + session.getId()+" ");<br />//得到该session的id，并打印<br />out.println("&lt;br&gt;"+"Created: " + created+" ");<br />//打印session创建时间<br />out.println("&lt;br&gt;"+"Last Accessed: " + accessed+" ");<br />//打印最后访问时间</p>
		<p>session.setAttribute("Name","Tom");<br />//在session中添加变量Name=Tom<br />session.setAttribute("UID","12345678");<br />//在session中添加变量UID=12345678</p>
		<p>Enumeration e = session.getAttributeNames();<br />//得到session中变量名的枚举对象<br />while (e.hasMoreElements()) { //遍历每一个变量<br />String name = (String)e.nextElement(); //首先得到名字<br />String value = session.getAttribute(name).toString();<br />//由名字从session中得到值<br />out.println("&lt;br&gt;"+name + " = " + value+" "); //打印<br />}</p>
		<p>%&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;<br /></p>
<img src ="http://www.blogjava.net/balajinima/aggbug/165409.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/balajinima/" target="_blank">李云泽</a> 2007-12-05 10:29 <a href="http://www.blogjava.net/balajinima/articles/165409.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>有热点的JfreeChart柱型图（原创）</title><link>http://www.blogjava.net/balajinima/articles/165086.html</link><dc:creator>李云泽</dc:creator><author>李云泽</author><pubDate>Tue, 04 Dec 2007 01:57:00 GMT</pubDate><guid>http://www.blogjava.net/balajinima/articles/165086.html</guid><wfw:comment>http://www.blogjava.net/balajinima/comments/165086.html</wfw:comment><comments>http://www.blogjava.net/balajinima/articles/165086.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/balajinima/comments/commentRss/165086.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/balajinima/services/trackbacks/165086.html</trackback:ping><description><![CDATA[
		<p>
				<img src="http://www.blogjava.net/images/blogjava_net/balajinima/26977/r_chart.JPG" />
				<br />
				<br />实现方式：jsp+javabean<br />版本 ：jfreechart-1.0.8<br />web-inf：设置<br />=====================================<br />&lt;servlet&gt;<br />  &lt;servlet-name&gt;DisplayChart&lt;/servlet-name&gt;<br />  &lt;servlet-class&gt;<br />   org.jfree.chart.servlet.DisplayChart<br />  &lt;/servlet-class&gt;<br /> &lt;/servlet&gt;<br /> &lt;servlet-mapping&gt;<br />  &lt;servlet-name&gt;DisplayChart&lt;/servlet-name&gt;<br />  &lt;url-pattern&gt;/servlet/DisplayChart&lt;/url-pattern&gt;<br /> &lt;/servlet-mapping&gt;<br />======================================<br />jsp文件：<br />=========================================================================<br />&lt;%@ page language="java" contentType="text/html; charset=GBK"<br /> pageEncoding="GBK"%&gt;<br />&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;meta http-equiv="Content-Type" content="text/html; charset=GBK"&gt;<br />&lt;title&gt;Insert title here&lt;/title&gt;</p>
		<p>&lt;script language="javascript"&gt;<br />function overlib(s){<br /> document.all.ChartTip.style.display="block";<br /> top.document.getElementById('ChartTip').innerHTML=s;<br /> document.all.ChartTip.style.left=document.body.scrollLeft+event.x;<br /> document.all.ChartTip.style.top=document.body.scrollTop+event.y-20;<br />}<br />function nd(s){<br /> document.all.ChartTip.style.display="none";<br />}<br />&lt;/script&gt;<br />&lt;jsp:useBean id="barchart01" scope="session"<br /> class="com.mdcl.fso.homepage.chart.BarChart01" /&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;%<br /> String fileName = barchart01.drawPic(request.getSession(), out);<br /> String graphURL = request.getContextPath()<br />   + "/servlet/DisplayChart?filename=" + fileName;<br />%&gt;<br />&lt;br /&gt;<br />&lt;img src="&lt;%= graphURL %&gt;" border="0" usemap="#&lt;%=fileName %&gt;" /&gt;<br />&lt;br /&gt;<br />&lt;div id="ChartTip"<br /> style="position:absolute; font-family:'宋体'; font-size: 12px;line-height: 20px;background-color:#FFFFEC; border: 1px solid #999999;display:none;left:0px;top:1px;"&gt;测试显示&lt;/div&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;<br />=========================================================================<br />java文件<br />=========================================================================<br />package com.mdcl.fso.homepage.chart;</p>
		<p>import org.jfree.chart.ChartFactory;<br />import org.jfree.chart.ChartRenderingInfo;<br />import org.jfree.chart.ChartUtilities;<br />import org.jfree.chart.JFreeChart;<br />import org.jfree.chart.plot.PlotOrientation;<br />import org.jfree.data.category.DefaultCategoryDataset;<br />import java.awt.Color;<br />import java.awt.Font;<br />import java.io.IOException;<br />import java.io.OutputStream;<br />import java.io.PrintWriter;</p>
		<p>import org.jfree.chart.renderer.category.BarRenderer3D;<br />import org.jfree.chart.servlet.ServletUtilities;<br />import org.jfree.chart.urls.StandardCategoryURLGenerator;<br />import org.jfree.chart.urls.StandardPieURLGenerator;<br />import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;<br />import org.jfree.chart.axis.AxisLocation;<br />import org.jfree.chart.axis.CategoryAxis;<br />import org.jfree.chart.entity.StandardEntityCollection;<br />import org.jfree.chart.plot.CategoryPlot;<br />import org.jfree.chart.labels.*;<br />import org.jfree.ui.*;<br />import java.util.*;</p>
		<p>import javax.servlet.http.HttpSession;<br />import javax.servlet.http.HttpServletResponse;<br />import javax.servlet.jsp.JspWriter;</p>
		<p>import com.mdcl.fso.homepage.*;</p>
		<p>public class BarChart01 {</p>
		<p> private static DefaultCategoryDataset dataset = new DefaultCategoryDataset();</p>
		<p> private DefaultCategoryDataset getDataset() {// 取数据</p>
		<p>  List expense = new ArrayList();<br />  String sql = "select ftr.organ_id ,fs.dept_name,ftr.subject_id,fft.finance_type_name,ftr.rpt_date ,ftr.rpt_data "<br />    + "from fso_t_rpt_expense ftr,fso_sdept fs,fso_finance_type fft "<br />    + "where ftr.type_id='D' "<br />    + "and ftr.organ_id=fs.dept_id  "<br />    + "and ftr.rpt_date='2007-08' "<br />    + "and fft.finance_type_id=ftr.subject_id  "<br />    + "and ftr.organ_id='1140'";</p>
		<p>  expense = DBDao.DbQueryExpense(sql);<br />  for (int i = 0; i &lt; expense.size(); i++) {<br />   HashMap param = new HashMap();<br />   param = (HashMap) expense.get(i);</p>
		<p>   double dt = Double.parseDouble(String.valueOf(param.get("rpt_data")));<br />   String a = (String) param.get("organ");<br />   String b = (String) param.get("subject");</p>
		<p>   dataset.addValue(dt, a, b);<br />  }</p>
		<p>  return dataset;</p>
		<p> }</p>
		<p> public String drawPic(HttpSession session, JspWriter out) {<br />  String fileName = null;<br />  JFreeChart chart = ChartFactory.createBarChart3D("2007-08成本统计", "费用类型",<br />    "金额（单位：元）", getDataset(), PlotOrientation.VERTICAL, true, true,<br />    true);<br />  chart.setBackgroundPaint(Color.WHITE);</p>
		<p>  CategoryPlot plot = chart.getCategoryPlot();// 获取绘图区</p>
		<p>  plot.setBackgroundPaint(new Color(255, 255, 255)); // 设置绘图区背景色</p>
		<p>  plot.setRangeGridlinePaint(Color.gray); // 设置水平方向背景线颜色</p>
		<p>  plot.setRangeGridlinesVisible(true); // 设置是否显示水平方向背景线,默认值为True</p>
		<p>  plot.setDomainGridlinePaint(Color.black); // 设置垂直方向背景线颜色</p>
		<p>  // plot.setDomainGridlinesVisible(true); // 设置是否显示垂直方向背景线,默认值为False</p>
		<p>  CategoryAxis domainAxis = plot.getDomainAxis();// 获取统计种类轴标题（X轴）</p>
		<p>  plot.setDomainAxis(domainAxis);// 添加X轴</p>
		<p>  BarRenderer3D renderer = new BarRenderer3D();// 获得BarRenderer3D类的实例，目的是设置柱形的绘制属性</p>
		<p>  renderer.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator());//</p>
		<p>  renderer.setBaseItemURLGenerator(new StandardCategoryURLGenerator("index2.jsp"));// 生成热点,用于链接</p>
		<p>  renderer.setItemMargin(0.1);// 设置每个组所包含的平行柱的之间距离</p>
		<p>  renderer.setSeriesPaint(0, Color.GREEN);// 设置柱子的颜色<br />  renderer.setSeriesPaint(1, Color.blue);// 设置柱子的颜色</p>
		<p>  renderer.setBaseOutlinePaint(Color.BLACK);</p>
		<p>  renderer.setWallPaint(Color.gray);// 设置 Wall 的颜色</p>
		<p>  renderer.setItemLabelAnchorOffset(10D);// 设置柱形图上的文字偏离值</p>
		<p>  renderer.setBaseItemLabelFont(new Font("arial", Font.PLAIN, 10), true);// 设置柱形图上的文字</p>
		<p>  renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());// //显示每个柱的数值，并修改该数值的字体属性</p>
		<p>  renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_CENTER));</p>
		<p>  renderer.setBaseItemLabelsVisible(true);</p>
		<p>  renderer.setMaximumBarWidth(0.050000000000000003D);</p>
		<p>  plot.setRenderer(renderer);</p>
		<p>  plot.setForegroundAlpha(0.80f);// 设置柱的透明度</p>
		<p>  // plot.setDomainAxisLocation(AxisLocation.TOP_OR_RIGHT);//设置显示位置</p>
		<p>  plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);// 设置显示位置</p>
		<p>  try {</p>
		<p>   PrintWriter pw = new PrintWriter(out);</p>
		<p>   StandardEntityCollection sec = new StandardEntityCollection();<br />   ChartRenderingInfo info = new ChartRenderingInfo(sec);</p>
		<p>   fileName = ServletUtilities.saveChartAsPNG(chart, 640, 400, info,<br />     session);<br />   // ChartUtilities.writeChartAsPNG(op,chart, 640, 400, info,true,0);<br />   ChartUtilities.writeImageMap(pw, fileName, info, true);<br />  } catch (IOException e) {<br />   // TODO Auto-generated catch block<br />   e.printStackTrace();<br />  }</p>
		<p>  return fileName;</p>
		<p> }</p>
		<p>}<br />=========================================================================<br /><br /><br /></p>
<img src ="http://www.blogjava.net/balajinima/aggbug/165086.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/balajinima/" target="_blank">李云泽</a> 2007-12-04 09:57 <a href="http://www.blogjava.net/balajinima/articles/165086.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSP验证码生成 </title><link>http://www.blogjava.net/balajinima/articles/146891.html</link><dc:creator>李云泽</dc:creator><author>李云泽</author><pubDate>Thu, 20 Sep 2007 11:32:00 GMT</pubDate><guid>http://www.blogjava.net/balajinima/articles/146891.html</guid><wfw:comment>http://www.blogjava.net/balajinima/comments/146891.html</wfw:comment><comments>http://www.blogjava.net/balajinima/articles/146891.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/balajinima/comments/commentRss/146891.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/balajinima/services/trackbacks/146891.html</trackback:ping><description><![CDATA[
		<div class="code_title">java 代码</div>
		<div class="dp-highlighter">
				<div class="bar">
				</div>
				<ol class="dp-j">
						<li class="alt">
								<span>
										<span>&lt;%@ page   </span>
								</span>
						</li>
						<li class="">
								<span>        </span>
								<span class="keyword">import</span>
								<span>=</span>
								<span class="string">"java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*"</span>
								<span>%&gt;   </span>
						</li>
						<li class="alt">
								<span>&lt;%@ page </span>
								<span class="keyword">import</span>
								<span>=</span>
								<span class="string">"java.io.OutputStream"</span>
								<span>%&gt;   </span>
						</li>
						<li class="">
								<span>&lt;%@ page pageEncoding=</span>
								<span class="string">"UTF-8"</span>
								<span>%&gt;   </span>
						</li>
						<li class="alt">
								<span>&lt;%!Color getRandColor(</span>
								<span class="keyword">int</span>
								<span> fc, </span>
								<span class="keyword">int</span>
								<span> bc) {   </span>
						</li>
						<li class="">
								<span>                Random random = </span>
								<span class="keyword">new</span>
								<span> Random();   </span>
						</li>
						<li class="alt">
								<span>                </span>
								<span class="keyword">if</span>
								<span> (fc &gt; </span>
								<span class="number">255</span>
								<span>)   </span>
						</li>
						<li class="">
								<span>                        fc = </span>
								<span class="number">255</span>
								<span>;   </span>
						</li>
						<li class="alt">
								<span>                </span>
								<span class="keyword">if</span>
								<span> (bc &gt; </span>
								<span class="number">255</span>
								<span>)   </span>
						</li>
						<li class="">
								<span>                        bc = </span>
								<span class="number">255</span>
								<span>;   </span>
						</li>
						<li class="alt">
								<span>                </span>
								<span class="keyword">int</span>
								<span> r = fc + random.nextInt(bc - fc);   </span>
						</li>
						<li class="">
								<span>                </span>
								<span class="keyword">int</span>
								<span> g = fc + random.nextInt(bc - fc);   </span>
						</li>
						<li class="alt">
								<span>                </span>
								<span class="keyword">int</span>
								<span> b = fc + random.nextInt(bc - fc);   </span>
						</li>
						<li class="">
								<span>                </span>
								<span class="keyword">return</span>
								<span> </span>
								<span class="keyword">new</span>
								<span> Color(r, g, b);   </span>
						</li>
						<li class="alt">
								<span>        }%&gt;   </span>
						</li>
						<li class="">
								<span>&lt;%   </span>
						</li>
						<li class="alt">
								<span>                </span>
								<span class="keyword">try</span>
								<span> {   </span>
						</li>
						<li class="">
								<span>                response.setHeader(</span>
								<span class="string">"Pragma"</span>
								<span>, </span>
								<span class="string">"No-cache"</span>
								<span>);   </span>
						</li>
						<li class="alt">
								<span>                response.setHeader(</span>
								<span class="string">"Cache-Control"</span>
								<span>, </span>
								<span class="string">"no-cache"</span>
								<span>);   </span>
						</li>
						<li class="">
								<span>                response.setDateHeader(</span>
								<span class="string">"Expires"</span>
								<span>, </span>
								<span class="number">0</span>
								<span>);   </span>
						</li>
						<li class="alt">
								<span>                </span>
								<span class="keyword">int</span>
								<span> width = </span>
								<span class="number">60</span>
								<span>, height = </span>
								<span class="number">20</span>
								<span>;   </span>
						</li>
						<li class="">
								<span>                BufferedImage image = </span>
								<span class="keyword">new</span>
								<span> BufferedImage(width, height,   </span>
						</li>
						<li class="alt">
								<span>                BufferedImage.TYPE_INT_RGB);   </span>
						</li>
						<li class="">
								<span>                OutputStream os = response.getOutputStream();   </span>
						</li>
						<li class="alt">
								<span>                Graphics g = image.getGraphics();   </span>
						</li>
						<li class="">
								<span>                Random random = </span>
								<span class="keyword">new</span>
								<span> Random();   </span>
						</li>
						<li class="alt">
								<span>                g.setColor(getRandColor(</span>
								<span class="number">200</span>
								<span>, </span>
								<span class="number">250</span>
								<span>));   </span>
						</li>
						<li class="">
								<span>                g.fillRect(</span>
								<span class="number">0</span>
								<span>, </span>
								<span class="number">0</span>
								<span>, width, height);   </span>
						</li>
						<li class="alt">
								<span>  </span>
						</li>
						<li class="">
								<span>                g.setFont(</span>
								<span class="keyword">new</span>
								<span> Font(</span>
								<span class="string">"Times New Roman"</span>
								<span>, Font.PLAIN, </span>
								<span class="number">18</span>
								<span>));   </span>
						</li>
						<li class="alt">
								<span>                g.setColor(getRandColor(</span>
								<span class="number">160</span>
								<span>, </span>
								<span class="number">200</span>
								<span>));   </span>
						</li>
						<li class="">
								<span>                </span>
								<span class="keyword">for</span>
								<span> (</span>
								<span class="keyword">int</span>
								<span> i = </span>
								<span class="number">0</span>
								<span>; i &lt; </span>
								<span class="number">155</span>
								<span>; i++) {   </span>
						</li>
						<li class="alt">
								<span>                        </span>
								<span class="keyword">int</span>
								<span> x = random.nextInt(width);   </span>
						</li>
						<li class="">
								<span>                        </span>
								<span class="keyword">int</span>
								<span> y = random.nextInt(height);   </span>
						</li>
						<li class="alt">
								<span>                        </span>
								<span class="keyword">int</span>
								<span> xl = random.nextInt(</span>
								<span class="number">12</span>
								<span>);   </span>
						</li>
						<li class="">
								<span>                        </span>
								<span class="keyword">int</span>
								<span> yl = random.nextInt(</span>
								<span class="number">12</span>
								<span>);   </span>
						</li>
						<li class="alt">
								<span>                        g.drawLine(x, y, x + xl, y + yl);   </span>
						</li>
						<li class="">
								<span>                }   </span>
						</li>
						<li class="alt">
								<span>                String sRand = </span>
								<span class="string">""</span>
								<span>;   </span>
						</li>
						<li class="">
								<span>                </span>
								<span class="keyword">for</span>
								<span> (</span>
								<span class="keyword">int</span>
								<span> i = </span>
								<span class="number">0</span>
								<span>; i &lt; </span>
								<span class="number">4</span>
								<span>; i++) {   </span>
						</li>
						<li class="alt">
								<span>                        String rand = String.valueOf(random.nextInt(</span>
								<span class="number">10</span>
								<span>));   </span>
						</li>
						<li class="">
								<span>                        sRand += rand;   </span>
						</li>
						<li class="alt">
								<span>                        g.setColor(</span>
								<span class="keyword">new</span>
								<span> Color(</span>
								<span class="number">20</span>
								<span> + random.nextInt(</span>
								<span class="number">110</span>
								<span>), </span>
								<span class="number">20</span>
								<span> + random   </span>
						</li>
						<li class="">
								<span>                        .nextInt(</span>
								<span class="number">110</span>
								<span>), </span>
								<span class="number">20</span>
								<span> + random.nextInt(</span>
								<span class="number">110</span>
								<span>)));   </span>
						</li>
						<li class="alt">
								<span>                        g.drawString(rand, </span>
								<span class="number">13</span>
								<span> * i + </span>
								<span class="number">6</span>
								<span>, </span>
								<span class="number">16</span>
								<span>);   </span>
						</li>
						<li class="">
								<span>                }   </span>
						</li>
						<li class="alt">
								<span>                session.setAttribute(</span>
								<span class="string">"rand"</span>
								<span>, sRand);   </span>
						</li>
						<li class="">
								<span>                g.dispose();   </span>
						</li>
						<li class="alt">
								<span>  </span>
						</li>
						<li class="">
								<span>                ImageIO.write(image, </span>
								<span class="string">"JPEG"</span>
								<span>, os);   </span>
						</li>
						<li class="alt">
								<span>                os.flush();   </span>
						</li>
						<li class="">
								<span>                os.close();   </span>
						</li>
						<li class="alt">
								<span>                os = </span>
								<span class="keyword">null</span>
								<span>;   </span>
						</li>
						<li class="">
								<span>                response.flushBuffer();   </span>
						</li>
						<li class="alt">
								<span>                out.clear();   </span>
						</li>
						<li class="">
								<span>                out = pageContext.pushBody();   </span>
						</li>
						<li class="alt">
								<span>        } </span>
								<span class="keyword">catch</span>
								<span> (IllegalStateException e) {   </span>
						</li>
						<li class="">
								<span>                System.out.println(e.getMessage());   </span>
						</li>
						<li class="alt">
								<span>                e.printStackTrace();   </span>
						</li>
						<li class="">
								<span>        }   </span>
						</li>
						<li class="alt">
								<span>%&gt;   </span>
						</li>
				</ol>
		</div>
<img src ="http://www.blogjava.net/balajinima/aggbug/146891.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/balajinima/" target="_blank">李云泽</a> 2007-09-20 19:32 <a href="http://www.blogjava.net/balajinima/articles/146891.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Escape/unescape的Java实现 </title><link>http://www.blogjava.net/balajinima/articles/146872.html</link><dc:creator>李云泽</dc:creator><author>李云泽</author><pubDate>Thu, 20 Sep 2007 10:21:00 GMT</pubDate><guid>http://www.blogjava.net/balajinima/articles/146872.html</guid><wfw:comment>http://www.blogjava.net/balajinima/comments/146872.html</wfw:comment><comments>http://www.blogjava.net/balajinima/articles/146872.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/balajinima/comments/commentRss/146872.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/balajinima/services/trackbacks/146872.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Escape/unescape的Java实现																		关键字:   Escape/unescape的Java实现     																																										java 代码																																															...&nbsp;&nbsp;<a href='http://www.blogjava.net/balajinima/articles/146872.html'>阅读全文</a><img src ="http://www.blogjava.net/balajinima/aggbug/146872.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/balajinima/" target="_blank">李云泽</a> 2007-09-20 18:21 <a href="http://www.blogjava.net/balajinima/articles/146872.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ajax实现二级联动下拉框 </title><link>http://www.blogjava.net/balajinima/articles/146689.html</link><dc:creator>李云泽</dc:creator><author>李云泽</author><pubDate>Thu, 20 Sep 2007 02:04:00 GMT</pubDate><guid>http://www.blogjava.net/balajinima/articles/146689.html</guid><wfw:comment>http://www.blogjava.net/balajinima/comments/146689.html</wfw:comment><comments>http://www.blogjava.net/balajinima/articles/146689.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/balajinima/comments/commentRss/146689.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/balajinima/services/trackbacks/146689.html</trackback:ping><description><![CDATA[这个一个ajax的经典示例，也是ajax的长处所在。不多说了，下面来看代码。<br /><br />项目结构图：<br /><img height="161" alt="option1.jpg" src="http://www.blogjava.net/images/blogjava_net/rickhunter/ajax/option1.jpg" width="195" border="0" /><br /><br />index.jsp: <br /><div style="BORDER-RIGHT: rgb(204,204,204) 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: rgb(204,204,204) 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: rgb(204,204,204) 1px solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: rgb(204,204,204) 1px solid; BACKGROUND-COLOR: rgb(238,238,238)"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: rgb(0,0,0)">&lt;%</span><span style="COLOR: rgb(0,0,0)">@ page language</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">java</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)"> contentType</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">text/html; charset=utf-8</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">%&gt;</span><span style="COLOR: rgb(0,0,0)"><br /><br /></span><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)">html</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />  </span><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)">head</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)">title</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)">My JSP </span><span style="COLOR: rgb(0,0,0)">'</span><span style="COLOR: rgb(0,0,0)">index.jsp</span><span style="COLOR: rgb(0,0,0)">'</span><span style="COLOR: rgb(0,0,0)"> starting page</span><span style="COLOR: rgb(0,0,0)">&lt;/</span><span style="COLOR: rgb(0,0,0)">title</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)">meta http</span><span style="COLOR: rgb(0,0,0)">-</span><span style="COLOR: rgb(0,0,0)">equiv</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">Content-Type</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)"> content</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">text/html; charset=utf-8</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)">SCRIPT type</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">text/javascript</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />        var req;<br />        window.onload</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">function(){<br />        }<br />        <br />        function Change_Select()<br />        {<br />            var zhi</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">document.getElementById(</span><span style="COLOR: rgb(0,0,0)">'</span><span style="COLOR: rgb(0,0,0)">hero</span><span style="COLOR: rgb(0,0,0)">'</span><span style="COLOR: rgb(0,0,0)">).value;<br />            var url</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">select?id=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">+</span><span style="COLOR: rgb(0,0,0)">escape(zhi);<br />            </span><span style="COLOR: rgb(0,0,255)">if</span><span style="COLOR: rgb(0,0,0)">(window.XMLHttpRequest)<br />            {<br />                req</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,255)">new</span><span style="COLOR: rgb(0,0,0)"> XMLHttpRequest();<br />            }</span><span style="COLOR: rgb(0,0,255)">else</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,255)">if</span><span style="COLOR: rgb(0,0,0)">(window.ActiveXObject)<br />            {<br />                req</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,255)">new</span><span style="COLOR: rgb(0,0,0)"> ActiveXObject(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">Microsoft.XMLHTTP</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">);<br />            }<br />            <br />            </span><span style="COLOR: rgb(0,0,255)">if</span><span style="COLOR: rgb(0,0,0)">(req)<br />            {<br />                req.open(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">GET</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">,url,</span><span style="COLOR: rgb(0,0,255)">true</span><span style="COLOR: rgb(0,0,0)">);<br />                req.onreadystatechange</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">callback;<br />                req.send(</span><span style="COLOR: rgb(0,0,255)">null</span><span style="COLOR: rgb(0,0,0)">);<br />            }<br />        }<br />        <br />        function callback()<br />        {<br />            </span><span style="COLOR: rgb(0,0,255)">if</span><span style="COLOR: rgb(0,0,0)">(req.readyState </span><span style="COLOR: rgb(0,0,0)">==</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,0)">4</span><span style="COLOR: rgb(0,0,0)">)<br />            {<br />                </span><span style="COLOR: rgb(0,0,255)">if</span><span style="COLOR: rgb(0,0,0)">(req.status </span><span style="COLOR: rgb(0,0,0)">==</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,0)">200</span><span style="COLOR: rgb(0,0,0)">)<br />                {<br />                    parseMessage();<br />                }</span><span style="COLOR: rgb(0,0,255)">else</span><span style="COLOR: rgb(0,0,0)">{<br />                    alert(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">Not able to retrieve description</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">+</span><span style="COLOR: rgb(0,0,0)">req.statusText);<br />                }<br />            }<br />        }<br />        <br />        function parseMessage()<br />        {<br />            var xmlDoc</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">req.responseXML.documentElement;<br />            var xSel</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">xmlDoc.getElementsByTagName(</span><span style="COLOR: rgb(0,0,0)">'</span><span style="COLOR: rgb(0,0,0)">select</span><span style="COLOR: rgb(0,0,0)">'</span><span style="COLOR: rgb(0,0,0)">);<br />            var select_root</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">document.getElementById(</span><span style="COLOR: rgb(0,0,0)">'</span><span style="COLOR: rgb(0,0,0)">skill</span><span style="COLOR: rgb(0,0,0)">'</span><span style="COLOR: rgb(0,0,0)">);<br />            select_root.options.length</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">0</span><span style="COLOR: rgb(0,0,0)">;<br />            <br />            </span><span style="COLOR: rgb(0,0,255)">for</span><span style="COLOR: rgb(0,0,0)">(var i</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">0</span><span style="COLOR: rgb(0,0,0)">;i</span><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)">xSel.length;i</span><span style="COLOR: rgb(0,0,0)">++</span><span style="COLOR: rgb(0,0,0)">)<br />            {<br />                var xValue</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">xSel[i].childNodes[</span><span style="COLOR: rgb(0,0,0)">0</span><span style="COLOR: rgb(0,0,0)">].firstChild.nodeValue;<br />                var xText</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">xSel[i].childNodes[</span><span style="COLOR: rgb(0,0,0)">1</span><span style="COLOR: rgb(0,0,0)">].firstChild.nodeValue;<br />                var option</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,255)">new</span><span style="COLOR: rgb(0,0,0)"> Option(xText,xValue);<br />                </span><span style="COLOR: rgb(0,0,255)">try</span><span style="COLOR: rgb(0,0,0)">{<br />                    select_root.add(option);<br />                }</span><span style="COLOR: rgb(0,0,255)">catch</span><span style="COLOR: rgb(0,0,0)">(e){<br />                }<br />            }<br />            <br />            <br />        }<br />    </span><span style="COLOR: rgb(0,0,0)">&lt;/</span><span style="COLOR: rgb(0,0,0)">SCRIPT</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />  </span><span style="COLOR: rgb(0,0,0)">&lt;/</span><span style="COLOR: rgb(0,0,0)">head</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />  <br />  </span><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)">body</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)">div align</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">center</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />        </span><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)">form name</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">form1</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)"> method</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">post</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)"> action</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">""</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />            </span><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)">TABLE width</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">70%</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)"> boder</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">0</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)"> cellspacing</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">0</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />                </span><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)">TR</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />                    </span><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)">TD align</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">center</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)">Double Select Box</span><span style="COLOR: rgb(0,0,0)">&lt;/</span><span style="COLOR: rgb(0,0,0)">TD</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />                </span><span style="COLOR: rgb(0,0,0)">&lt;/</span><span style="COLOR: rgb(0,0,0)">TR</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />                </span><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)">TR</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />                    </span><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)">TD</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />                        </span><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)">SELECT name</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">hero</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)"> id</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">hero</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)"> onChange</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">Change_Select()</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />                            </span><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)">OPTION value</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">0</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)">Unbounded</span><span style="COLOR: rgb(0,0,0)">&lt;/</span><span style="COLOR: rgb(0,0,0)">OPTION</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />                            </span><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)">OPTION value</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">1</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)">D.K.</span><span style="COLOR: rgb(0,0,0)">&lt;/</span><span style="COLOR: rgb(0,0,0)">OPTION</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />                            </span><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)">OPTION value</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">2</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)">NEC.</span><span style="COLOR: rgb(0,0,0)">&lt;/</span><span style="COLOR: rgb(0,0,0)">OPTION</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />                            </span><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)">OPTION value</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">3</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)">BOSS</span><span style="COLOR: rgb(0,0,0)">&lt;/</span><span style="COLOR: rgb(0,0,0)">OPTION</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />                        </span><span style="COLOR: rgb(0,0,0)">&lt;/</span><span style="COLOR: rgb(0,0,0)">SELECT</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />                        </span><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)">SELECT name</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">skill</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)"> id</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">skill</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />                            </span><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)">OPTION value</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">0</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)">Unbounded</span><span style="COLOR: rgb(0,0,0)">&lt;/</span><span style="COLOR: rgb(0,0,0)">OPTION</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />                        </span><span style="COLOR: rgb(0,0,0)">&lt;/</span><span style="COLOR: rgb(0,0,0)">SELECT</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />                    </span><span style="COLOR: rgb(0,0,0)">&lt;/</span><span style="COLOR: rgb(0,0,0)">TD</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />                </span><span style="COLOR: rgb(0,0,0)">&lt;/</span><span style="COLOR: rgb(0,0,0)">TR</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />                </span><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)">TR</span><span style="COLOR: rgb(0,0,0)">&gt;&lt;</span><span style="COLOR: rgb(0,0,0)">td</span><span style="COLOR: rgb(0,0,0)">&gt;&amp;</span><span style="COLOR: rgb(0,0,0)">nbsp;</span><span style="COLOR: rgb(0,0,0)">&lt;/</span><span style="COLOR: rgb(0,0,0)">td</span><span style="COLOR: rgb(0,0,0)">&gt;&lt;/</span><span style="COLOR: rgb(0,0,0)">TR</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />            </span><span style="COLOR: rgb(0,0,0)">&lt;/</span><span style="COLOR: rgb(0,0,0)">TABLE</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />        </span><span style="COLOR: rgb(0,0,0)">&lt;/</span><span style="COLOR: rgb(0,0,0)">form</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,0,0)">&lt;/</span><span style="COLOR: rgb(0,0,0)">div</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />  </span><span style="COLOR: rgb(0,0,0)">&lt;/</span><span style="COLOR: rgb(0,0,0)">body</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br /></span><span style="COLOR: rgb(0,0,0)">&lt;/</span><span style="COLOR: rgb(0,0,0)">html</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br /></span></div><br />SelectServlet.java:<br /><div style="BORDER-RIGHT: rgb(204,204,204) 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: rgb(204,204,204) 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: rgb(204,204,204) 1px solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: rgb(204,204,204) 1px solid; BACKGROUND-COLOR: rgb(238,238,238)"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: rgb(0,0,255)">package</span><span style="COLOR: rgb(0,0,0)"> com;<br /><br /></span><span style="COLOR: rgb(0,0,255)">import</span><span style="COLOR: rgb(0,0,0)"> java.io.IOException;<br /></span><span style="COLOR: rgb(0,0,255)">import</span><span style="COLOR: rgb(0,0,0)"> java.io.PrintWriter;<br /><br /></span><span style="COLOR: rgb(0,0,255)">import</span><span style="COLOR: rgb(0,0,0)"> javax.servlet.ServletException;<br /></span><span style="COLOR: rgb(0,0,255)">import</span><span style="COLOR: rgb(0,0,0)"> javax.servlet.http.HttpServlet;<br /></span><span style="COLOR: rgb(0,0,255)">import</span><span style="COLOR: rgb(0,0,0)"> javax.servlet.http.HttpServletRequest;<br /></span><span style="COLOR: rgb(0,0,255)">import</span><span style="COLOR: rgb(0,0,0)"> javax.servlet.http.HttpServletResponse;<br /><br /></span><span style="COLOR: rgb(0,0,255)">public</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,255)">class</span><span style="COLOR: rgb(0,0,0)"> SelectServlet </span><span style="COLOR: rgb(0,0,255)">extends</span><span style="COLOR: rgb(0,0,0)"> HttpServlet {<br /><br />    </span><span style="COLOR: rgb(0,128,0)">/**</span><span style="COLOR: rgb(0,128,0)"><br />     * Constructor of the object.<br />     </span><span style="COLOR: rgb(0,128,0)">*/</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,0,255)">public</span><span style="COLOR: rgb(0,0,0)"> SelectServlet() {<br />        </span><span style="COLOR: rgb(0,0,255)">super</span><span style="COLOR: rgb(0,0,0)">();<br />    }<br /><br />    </span><span style="COLOR: rgb(0,128,0)">/**</span><span style="COLOR: rgb(0,128,0)"><br />     * Destruction of the servlet. &lt;br&gt;<br />     </span><span style="COLOR: rgb(0,128,0)">*/</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,0,255)">public</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,255)">void</span><span style="COLOR: rgb(0,0,0)"> destroy() {<br />        </span><span style="COLOR: rgb(0,0,255)">super</span><span style="COLOR: rgb(0,0,0)">.destroy(); </span><span style="COLOR: rgb(0,128,0)">//</span><span style="COLOR: rgb(0,128,0)"> Just puts "destroy" string in log<br />        </span><span style="COLOR: rgb(0,128,0)">//</span><span style="COLOR: rgb(0,128,0)"> Put your code here</span><span style="COLOR: rgb(0,128,0)"><br /></span><span style="COLOR: rgb(0,0,0)">    }<br /><br />    </span><span style="COLOR: rgb(0,128,0)">/**</span><span style="COLOR: rgb(0,128,0)"><br />     * The doGet method of the servlet. &lt;br&gt;<br />     *<br />     * This method is called when a form has its tag value method equals to get.<br />     * <br />     * </span><span style="COLOR: rgb(128,128,128)">@param</span><span style="COLOR: rgb(0,128,0)"> request the request send by the client to the server<br />     * </span><span style="COLOR: rgb(128,128,128)">@param</span><span style="COLOR: rgb(0,128,0)"> response the response send by the server to the client<br />     * </span><span style="COLOR: rgb(128,128,128)">@throws</span><span style="COLOR: rgb(0,128,0)"> ServletException if an error occurred<br />     * </span><span style="COLOR: rgb(128,128,128)">@throws</span><span style="COLOR: rgb(0,128,0)"> IOException if an error occurred<br />     </span><span style="COLOR: rgb(0,128,0)">*/</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,0,255)">public</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,255)">void</span><span style="COLOR: rgb(0,0,0)"> doGet(HttpServletRequest request, HttpServletResponse response)<br />            </span><span style="COLOR: rgb(0,0,255)">throws</span><span style="COLOR: rgb(0,0,0)"> ServletException, IOException {<br />        response.setContentType(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">text/xml</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">);<br />        response.setHeader(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">Cache-Control</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">,</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">no-cache</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">);<br />        <br />        String targetId</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">request.getParameter(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">id</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">).toString();<br />        String xml_start</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">&lt;selects&gt;</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">;<br />        String xml_end</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">&lt;/selects&gt;</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">;<br />        String xml</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">""</span><span style="COLOR: rgb(0,0,0)">;<br />        </span><span style="COLOR: rgb(0,0,255)">if</span><span style="COLOR: rgb(0,0,0)">(targetId.equalsIgnoreCase(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">0</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">)){<br />            xml</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">&lt;select&gt;&lt;value&gt;0&lt;/value&gt;&lt;text&gt;Unbounded&lt;/text&gt;&lt;/select&gt;</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">;<br />        }</span><span style="COLOR: rgb(0,0,255)">else</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,255)">if</span><span style="COLOR: rgb(0,0,0)">(targetId.equalsIgnoreCase(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">1</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">)){<br />            xml</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">&lt;select&gt;&lt;value&gt;1&lt;/value&gt;&lt;text&gt;Mana Burn&lt;/text&gt;&lt;/select&gt;</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">;<br />            xml </span><span style="COLOR: rgb(0,0,0)">+=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">&lt;select&gt;&lt;value&gt;2&lt;/value&gt;&lt;text&gt;Death Coil&lt;/text&gt;&lt;/select&gt;</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">;<br />            xml </span><span style="COLOR: rgb(0,0,0)">+=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">&lt;select&gt;&lt;value&gt;3&lt;/value&gt;&lt;text&gt;Unholy Aura&lt;/text&gt;&lt;/select&gt;</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">;<br />            xml </span><span style="COLOR: rgb(0,0,0)">+=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">&lt;select&gt;&lt;value&gt;4&lt;/value&gt;&lt;text&gt;Unholy Fire&lt;/text&gt;&lt;/select&gt;</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">;<br />        }</span><span style="COLOR: rgb(0,0,255)">else</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,255)">if</span><span style="COLOR: rgb(0,0,0)">(targetId.equalsIgnoreCase(</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">2</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">)){<br />            xml</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">&lt;select&gt;&lt;value&gt;1&lt;/value&gt;&lt;text&gt;Corprxplode&lt;/text&gt;&lt;/select&gt;</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">;<br />            xml </span><span style="COLOR: rgb(0,0,0)">+=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">&lt;select&gt;&lt;value&gt;2&lt;/value&gt;&lt;text&gt;Raise Dead&lt;/text&gt;&lt;/select&gt;</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">;<br />            xml </span><span style="COLOR: rgb(0,0,0)">+=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">&lt;select&gt;&lt;value&gt;3&lt;/value&gt;&lt;text&gt;Brilliance Aura&lt;/text&gt;&lt;/select&gt;</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">;<br />            xml </span><span style="COLOR: rgb(0,0,0)">+=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">&lt;select&gt;&lt;value&gt;4&lt;/value&gt;&lt;text&gt;Aim Aura&lt;/text&gt;&lt;/select&gt;</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">;<br />        }</span><span style="COLOR: rgb(0,0,255)">else</span><span style="COLOR: rgb(0,0,0)">{<br />            xml</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">&lt;select&gt;&lt;value&gt;1&lt;/value&gt;&lt;text&gt;Rain of Chaos&lt;/text&gt;&lt;/select&gt;</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">;<br />            xml </span><span style="COLOR: rgb(0,0,0)">+=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">&lt;select&gt;&lt;value&gt;2&lt;/value&gt;&lt;text&gt;Finger of Death&lt;/text&gt;&lt;/select&gt;</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">;<br />            xml </span><span style="COLOR: rgb(0,0,0)">+=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">&lt;select&gt;&lt;value&gt;3&lt;/value&gt;&lt;text&gt;Bash&lt;/text&gt;&lt;/select&gt;</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">;<br />            xml </span><span style="COLOR: rgb(0,0,0)">+=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">&lt;select&gt;&lt;value&gt;4&lt;/value&gt;&lt;text&gt;Summon Doom&lt;/text&gt;&lt;/select&gt;</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">;<br />        }<br />        String last_xml</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">xml_start</span><span style="COLOR: rgb(0,0,0)">+</span><span style="COLOR: rgb(0,0,0)">xml</span><span style="COLOR: rgb(0,0,0)">+</span><span style="COLOR: rgb(0,0,0)">xml_end;<br />        response.getWriter().write(last_xml);<br />    }<br /><br />    </span><span style="COLOR: rgb(0,128,0)">/**</span><span style="COLOR: rgb(0,128,0)"><br />     * The doPost method of the servlet. &lt;br&gt;<br />     *<br />     * This method is called when a form has its tag value method equals to post.<br />     * <br />     * </span><span style="COLOR: rgb(128,128,128)">@param</span><span style="COLOR: rgb(0,128,0)"> request the request send by the client to the server<br />     * </span><span style="COLOR: rgb(128,128,128)">@param</span><span style="COLOR: rgb(0,128,0)"> response the response send by the server to the client<br />     * </span><span style="COLOR: rgb(128,128,128)">@throws</span><span style="COLOR: rgb(0,128,0)"> ServletException if an error occurred<br />     * </span><span style="COLOR: rgb(128,128,128)">@throws</span><span style="COLOR: rgb(0,128,0)"> IOException if an error occurred<br />     </span><span style="COLOR: rgb(0,128,0)">*/</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,0,255)">public</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,255)">void</span><span style="COLOR: rgb(0,0,0)"> doPost(HttpServletRequest request, HttpServletResponse response)<br />            </span><span style="COLOR: rgb(0,0,255)">throws</span><span style="COLOR: rgb(0,0,0)"> ServletException, IOException {<br /><br />        doGet(request,response);<br />    }<br /><br />    </span><span style="COLOR: rgb(0,128,0)">/**</span><span style="COLOR: rgb(0,128,0)"><br />     * Initialization of the servlet. &lt;br&gt;<br />     *<br />     * </span><span style="COLOR: rgb(128,128,128)">@throws</span><span style="COLOR: rgb(0,128,0)"> ServletException if an error occure<br />     </span><span style="COLOR: rgb(0,128,0)">*/</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,0,255)">public</span><span style="COLOR: rgb(0,0,0)"> </span><span style="COLOR: rgb(0,0,255)">void</span><span style="COLOR: rgb(0,0,0)"> init() </span><span style="COLOR: rgb(0,0,255)">throws</span><span style="COLOR: rgb(0,0,0)"> ServletException {<br />        </span><span style="COLOR: rgb(0,128,0)">//</span><span style="COLOR: rgb(0,128,0)"> Put your code here</span><span style="COLOR: rgb(0,128,0)"><br /></span><span style="COLOR: rgb(0,0,0)">    }<br /><br />}<br /></span></div><br />web.xml:<br /><div style="BORDER-RIGHT: rgb(204,204,204) 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: rgb(204,204,204) 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: rgb(204,204,204) 1px solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: rgb(204,204,204) 1px solid; BACKGROUND-COLOR: rgb(238,238,238)"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: rgb(0,0,0)">&lt;?</span><span style="COLOR: rgb(0,0,0)">xml version</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">1.0</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)"> encoding</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">UTF-8</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">?&gt;</span><span style="COLOR: rgb(0,0,0)"><br /></span><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)">web</span><span style="COLOR: rgb(0,0,0)">-</span><span style="COLOR: rgb(0,0,0)">app version</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">2.4</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)"> <br />    xmlns</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">http://java.sun.com/xml/ns/j2ee</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)"> <br />    xmlns:xsi</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">http://www.w3.org/2001/XMLSchema-instance</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)"> <br />    xsi:schemaLocation</span><span style="COLOR: rgb(0,0,0)">=</span><span style="COLOR: rgb(0,0,0)">"</span><span style="COLOR: rgb(0,0,0)">http://java.sun.com/xml/ns/j2ee </span><span style="COLOR: rgb(0,0,0)"><br /></span><span style="COLOR: rgb(0,0,0)">    http:</span><span style="COLOR: rgb(0,128,0)">//</span><span style="COLOR: rgb(0,128,0)">java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"&gt;</span><span style="COLOR: rgb(0,128,0)"><br /></span><span style="COLOR: rgb(0,0,0)">  </span><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)">servlet</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)">servlet</span><span style="COLOR: rgb(0,0,0)">-</span><span style="COLOR: rgb(0,0,0)">name</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)">SelectServlet</span><span style="COLOR: rgb(0,0,0)">&lt;/</span><span style="COLOR: rgb(0,0,0)">servlet</span><span style="COLOR: rgb(0,0,0)">-</span><span style="COLOR: rgb(0,0,0)">name</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)">servlet</span><span style="COLOR: rgb(0,0,0)">-</span><span style="COLOR: rgb(0,0,255)">class</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)">com.SelectServlet</span><span style="COLOR: rgb(0,0,0)">&lt;/</span><span style="COLOR: rgb(0,0,0)">servlet</span><span style="COLOR: rgb(0,0,0)">-</span><span style="COLOR: rgb(0,0,255)">class</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />  </span><span style="COLOR: rgb(0,0,0)">&lt;/</span><span style="COLOR: rgb(0,0,0)">servlet</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br /><br />  </span><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)">servlet</span><span style="COLOR: rgb(0,0,0)">-</span><span style="COLOR: rgb(0,0,0)">mapping</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)">servlet</span><span style="COLOR: rgb(0,0,0)">-</span><span style="COLOR: rgb(0,0,0)">name</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)">SelectServlet</span><span style="COLOR: rgb(0,0,0)">&lt;/</span><span style="COLOR: rgb(0,0,0)">servlet</span><span style="COLOR: rgb(0,0,0)">-</span><span style="COLOR: rgb(0,0,0)">name</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)">url</span><span style="COLOR: rgb(0,0,0)">-</span><span style="COLOR: rgb(0,0,0)">pattern</span><span style="COLOR: rgb(0,0,0)">&gt;/</span><span style="COLOR: rgb(0,0,0)">select</span><span style="COLOR: rgb(0,0,0)">&lt;/</span><span style="COLOR: rgb(0,0,0)">url</span><span style="COLOR: rgb(0,0,0)">-</span><span style="COLOR: rgb(0,0,0)">pattern</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />  </span><span style="COLOR: rgb(0,0,0)">&lt;/</span><span style="COLOR: rgb(0,0,0)">servlet</span><span style="COLOR: rgb(0,0,0)">-</span><span style="COLOR: rgb(0,0,0)">mapping</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    <br />    </span><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)">welcome</span><span style="COLOR: rgb(0,0,0)">-</span><span style="COLOR: rgb(0,0,0)">file</span><span style="COLOR: rgb(0,0,0)">-</span><span style="COLOR: rgb(0,0,0)">list</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />        </span><span style="COLOR: rgb(0,0,0)">&lt;</span><span style="COLOR: rgb(0,0,0)">welcome</span><span style="COLOR: rgb(0,0,0)">-</span><span style="COLOR: rgb(0,0,0)">file</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)">index.jsp</span><span style="COLOR: rgb(0,0,0)">&lt;/</span><span style="COLOR: rgb(0,0,0)">welcome</span><span style="COLOR: rgb(0,0,0)">-</span><span style="COLOR: rgb(0,0,0)">file</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br />    </span><span style="COLOR: rgb(0,0,0)">&lt;/</span><span style="COLOR: rgb(0,0,0)">welcome</span><span style="COLOR: rgb(0,0,0)">-</span><span style="COLOR: rgb(0,0,0)">file</span><span style="COLOR: rgb(0,0,0)">-</span><span style="COLOR: rgb(0,0,0)">list</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br /></span><span style="COLOR: rgb(0,0,0)">&lt;/</span><span style="COLOR: rgb(0,0,0)">web</span><span style="COLOR: rgb(0,0,0)">-</span><span style="COLOR: rgb(0,0,0)">app</span><span style="COLOR: rgb(0,0,0)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br /></span></div><br />运行结果图：<br /><img height="100" alt="option2.jpg" src="http://www.blogjava.net/images/blogjava_net/rickhunter/ajax/option2.jpg" width="470" border="0" /><img src ="http://www.blogjava.net/balajinima/aggbug/146689.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/balajinima/" target="_blank">李云泽</a> 2007-09-20 10:04 <a href="http://www.blogjava.net/balajinima/articles/146689.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java 读写txt文本文件(转发)</title><link>http://www.blogjava.net/balajinima/articles/140810.html</link><dc:creator>李云泽</dc:creator><author>李云泽</author><pubDate>Wed, 29 Aug 2007 03:01:00 GMT</pubDate><guid>http://www.blogjava.net/balajinima/articles/140810.html</guid><wfw:comment>http://www.blogjava.net/balajinima/comments/140810.html</wfw:comment><comments>http://www.blogjava.net/balajinima/articles/140810.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/balajinima/comments/commentRss/140810.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/balajinima/services/trackbacks/140810.html</trackback:ping><description><![CDATA[
		<p>
				<br />读取所有的文件数据<br />&lt;%@ page contentType="text/html;charset=gb2312"%&gt;<br />&lt;%@ page import="java.io.*,java.lang.*"%&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;title&gt;读取所有的文件数据&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;%<br />String path=request.getRealPath(".");<br />FileReader fr=new FileReader(path + "<a href="file://ReadData.txt/">file://ReadData.txt/</a>");<br />//关键在于读取过程中，要判断所读取的字符是否已经到了文件的末尾，并且这个字符是不是文件中的断行符，即判断该字符值是否为13。<br />int c=fr.read();//从文件中读取一个字符<br />//判断是否已读到文件结尾<br />while(c!=-1){<br /> out.print((char)c);//输出读到的数据<br /> c=fr.read();//从文件中继续读取数据<br /> if(c==13){//判断是否为断行字符<br />  out.print("&lt;br&gt;");//输出分行标签<br />  fr.skip(1);//略过一个字符<br />  //c=fr.read();//读取一个字符<br /> }<br />}<br />fr.close();<br />%&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</p>
		<p>一行一行读取数据<br />&lt;%@ page contentType="text/html;charset=gb2312"%&gt;<br />&lt;%@ page import="java.io.*"%&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;title&gt;文件读取&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;%<br /> String path=request.getRealPath("");//取得当前目录的路径<br /> FileReader fr=new FileReader(path + "<a href="file://file//inc//t.txt%22);//">file://file//inc//t.txt%22);//</a>建立FileReader对象，并实例化为fr<br /> BufferedReader br=new BufferedReader(fr);//建立BufferedReader对象，并实例化为br<br /> String Line=br.readLine();//从文件读取一行字符串<br /> //判断读取到的字符串是否不为空<br /> while(Line!=null){<br />  out.println(Line + "&lt;br&gt;");//输出从文件中读取的数据<br />  Line=br.readLine();//从文件中继续读取一行数据<br /> }<br /> br.close();//关闭BufferedReader对象<br /> fr.close();//关闭文件<br />%&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</p>
		<p>略过文件中的字符不读取<br />&lt;%@ page contentType="text/html;charset=gb2312"%&gt;<br />&lt;%@ page import="java.io.*"%&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;title&gt;略过字节不读取&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;%<br />String path=request.getRealPath(".");<br />FileReader fr=new FileReader(path + "<a href="file://ReadData.txt/">file://ReadData.txt/</a>");<br />fr.skip(2);//跳过2个字节<br />int c=fr.read();//读取一个字节<br />while(c!=-1){<br /> out.print((char)c);<br /> c=fr.read();<br />}<br />fr.close();<br />%&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</p>
		<p>将数据写入文件<br />&lt;%@ page contentType="text/html;charset=gb2312"%&gt;<br />&lt;%@ page import="java.io.*"%&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;title&gt;将数据写入文件&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;%<br />String path=request.getRealPath(".");<br />FileWriter fw=new FileWriter(path + "<a href="file://WriteData.txt%22);//">file://WriteData.txt%22);//</a>建立FileWriter对象，并实例化fw<br />//将字符串写入文件<br />fw.write("大家好！");<br />fw.write("本书是《JSP编程技巧》");<br />fw.write("请多多指教！");<br />fw.write("email:stride@sina.com");<br />fw.close();<br />FileReader fr=new FileReader(path + "<a href="file://WriteData.txt/">file://WriteData.txt/</a>");<br />BufferedReader br=new BufferedReader(fr);//建立BufferedReader对象，并实例化为br<br />String Line=br.readLine();<br />//读取一行数据<br />out.println(Line + "&lt;br&gt;");<br />br.close();//关闭BufferedReader对象<br />fr.close();<br />%&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</p>
		<p>将写入文件的数据分行<br />&lt;%@ page contentType="text/html;charset=gb2312"%&gt;<br />&lt;%@ page import="java.io.*"%&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;title&gt;将写入文件的数据分行&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;%<br />String path=request.getRealPath(".");<br />FileWriter fw=new FileWriter(path + "<a href="file://WriteData.txt/">file://WriteData.txt/</a>");<br />BufferedWriter bw=new BufferedWriter(fw);<br />bw.write("大家好！");<br />bw.write("本书是《JSP编程技巧》。");<br />bw.newLine();//断行<br />bw.write("请多多指教！");<br />bw.newLine();//断行<br />bw.write("email: <a href="mailto:stride@sina.com">stride@sina.com</a>");<br />bw.flush();//将数据更新至文件<br />fw.close();//关闭文件流<br />out.println("写入文件内容为：&lt;br&gt;");<br />FileReader fr=new FileReader(path + "<a href="file://WriteData.txt/">file://WriteData.txt/</a>");<br />BufferedReader br=new BufferedReader(fr);<br />String Line=br.readLine();//读取一行数据<br />while(Line!=null){<br /> out.println(Line + "&lt;br&gt;");<br /> Line=br.readLine();<br />}<br />fr.close();<br />%&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</p>
		<p>如何将数据追加写入到文件<br />&lt;%@ page contentType="text/html;charset=gb2312"%&gt;<br />&lt;%@ page import="java.io.*"%&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;title&gt;将写入文件的数据分行&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;%<br />String path=request.getRealPath(".");<br />RandomAccessFile rf=new RandomAccessFile(path + "<a href="file://WriteData.txt%22,%22rw%22);//">file://WriteData.txt%22,%22rw%22);//</a>定义一个类RandomAccessFile的对象，并实例化<br />rf.seek(rf.length());//将指针移动到文件末尾<br />rf.writeBytes("\nAppend a line to the file!");<br />rf.close();//关闭文件流<br />out.println("写入文件内容为：&lt;br&gt;");<br />FileReader fr=new FileReader(path + "<a href="file://WriteData.txt/">file://WriteData.txt/</a>");<br />BufferedReader br=new BufferedReader(fr);//读取文件的BufferedRead对象<br />String Line=br.readLine();<br />while(Line!=null){<br /> out.println(Line + "&lt;br&gt;");<br /> Line=br.readLine();<br />}<br />fr.close();//关闭文件<br />%&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;<br /> <br />import java.util.*;<br />import java.io.*;<br />public class ReadIni<br />{<br />  public static void main(String[] args)<br />    throws Exception<br />  {<br />    Properties proDB = new Properties();<br />    FileInputStream in = new FileInputStream("DBConfig.ini");<br />    proDB.load(in);<br />    String jdbc = proDB.getProperty("jdbc");<br />    String dburl = proDB.getProperty("dburl");<br />    String userid = proDB.getProperty("userid");<br />    String password = proDB.getProperty("password"); </p>
		<p>    System.out.println(jdbc);<br />    System.out.println(dburl);<br />    System.out.println(userid);<br />    System.out.println(password);<br />  }<br />} </p>
		<p>DBConfig.ini: </p>
		<p>dburl=jdbcracle:thin:@202.16.147.104:1521ub<br />userid=user<br />password=password<br />jdbc=oracle.jdbc.driver.OracleDriver</p>
		<p> </p>
<img src ="http://www.blogjava.net/balajinima/aggbug/140810.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/balajinima/" target="_blank">李云泽</a> 2007-08-29 11:01 <a href="http://www.blogjava.net/balajinima/articles/140810.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>简单的jsp控制分页</title><link>http://www.blogjava.net/balajinima/articles/134185.html</link><dc:creator>李云泽</dc:creator><author>李云泽</author><pubDate>Fri, 03 Aug 2007 02:55:00 GMT</pubDate><guid>http://www.blogjava.net/balajinima/articles/134185.html</guid><wfw:comment>http://www.blogjava.net/balajinima/comments/134185.html</wfw:comment><comments>http://www.blogjava.net/balajinima/articles/134185.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/balajinima/comments/commentRss/134185.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/balajinima/services/trackbacks/134185.html</trackback:ping><description><![CDATA[
		<p>
				<br />&lt;%<br /> //分页显示<br /> int num = 0;<br /> int countall = infolist.size();//总数<br /> int pageSize = 28;//每页数量<br /> int pageCount;//总共页数<br /> int pageNo = 1;//当前页号<br /> int mixNum;   //当前页数据开始号<br /> int maxNum;<br /> <br /> String pNO = request.getParameter("pageNo");</p>
		<p> if((pNO != null) &amp;&amp; (!pNO.equals(""))){</p>
		<p>  pageNo=Integer.parseInt(pNO);<br /> }</p>
		<p> if (countall &gt; pageSize) {<br />  if ((countall / pageSize) * pageSize &lt; countall) {<br />   pageCount = (countall / pageSize) + 1;<br />  } <br />  else{<br />   pageCount = (countall / pageSize);<br />  }<br /> }<br /> <br /> else if (countall / pageSize == 1) {<br />  pageCount = 1;<br /> } <br /> else {<br />  pageCount = 1;<br /> }</p>
		<p> if (pageNo &gt;= pageCount) {<br />  pageNo = pageCount;<br /> }<br /> else if (pageNo &lt; 1) {<br />  pageNo = 1;<br /> }<br />    <br />    <br /> mixNum = (pageNo-1) * pageSize;<br /> maxNum = pageNo*pageSize;<br /> <br /> if((mixNum + pageSize) &gt; countall){<br />  maxNum = countall;<br /> }<br /> else{<br />  maxNum = mixNum+pageSize;<br /> }<br />%&gt;<br />---------------------------------------------------------------------------------------------<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;script language="JavaScript" type="text/JavaScript"&gt;<br />function check(){<br /> if(Jtrim(document.forms.meslistForm.textfield.value)==""){<br />  alert("请输入页数");<br /> }<br /> else if(checkNum(document.forms.meslistForm.textfield.value)){<br />  window.location.href="?pageNo="+document.forms.meslistForm.textfield.value; <br /> }else{<br />  alert("请输入数字。");<br /> }<br /> document.forms.meslistForm.textfield.value = "";<br /> document.forms.meslistForm.textfield.select();<br />}<br />function checkNum(str){<br />return str.match(/\D/)==null;<br />}</p>
		<p>function Jtrim(str)<br />{</p>
		<p>        var i = 0;<br />        var len = str.length;<br />        if ( str == "" ) return( str );<br />        j = len -1;<br />        flagbegin = true;<br />        flagend = true;<br />        while ( flagbegin == true &amp;&amp; i&lt; len)<br />        {<br />           if ( str.charAt(i) == " " )<br />                {<br />                  i=i+1;<br />                  flagbegin=true;<br />                }<br />                else<br />                {<br />                        flagbegin=false;<br />                }<br />        }</p>
		<p>        while  (flagend== true &amp;&amp; j&gt;=0)<br />        {<br />            if (str.charAt(j)==" ")<br />                {<br />                        j=j-1;<br />                        flagend=true;<br />                }<br />                else<br />                {<br />                        flagend=false;<br />                }<br />        }</p>
		<p>        if ( i &gt; j ) return ("")</p>
		<p>        trimstr = str.substring(i,j+1);<br />        return trimstr;<br />}&lt;/script&gt;<br />&lt;/head&gt;</p>
		<p>
				<br />&lt;body&gt;<br />&lt;%<br /> for(int i=mixNum;i&lt;maxNum;i++){<br /> //此处用list循环下标用i<br /> }         <br />%&gt;</p>
		<p> </p>
		<p> </p>
		<p> </p>
		<p> </p>
		<p>
				<br /> &lt;table align="center" width="100%" border="0" cellspacing="0" cellpadding="0"&gt;<br />   &lt;tr&gt;<br />    &lt;td width="4%" height="27" align="center" valign="middle"<br />     class="word"&gt;&amp;nbsp;&lt;/td&gt;<br />    &lt;td width="56%" align="center" valign="middle" class="word"&gt;&lt;img<br />     src="&lt;%=path%&gt;/images/pagination/list_home.gif" width="13"<br />     height="13"&gt;&amp;nbsp; &lt;%<br />      if (pageNo &gt; 1) {<br />     %&gt; &lt;a href="?pageNo=1"&gt;&amp;nbsp;首页&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;<br />    &lt;%<br />                     }else{<br />                    %&gt; &amp;nbsp;首页&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;%<br />                     }<br />                    %&gt; &lt;img src="&lt;%=path%&gt;/images/pagination/list_pre.gif"<br />     width="13" height="13"&gt; &lt;%<br />      if (pageNo &gt; 1) {<br />     %&gt; &lt;a href="?pageNo=&lt;%=(pageNo-1)%&gt;"&gt;&amp;nbsp;前一页&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;<br />    &lt;%<br />                     }else{<br />                    %&gt; &amp;nbsp;前一页&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;%<br />                     }<br />                    %&gt; &lt;img<br />     src="&lt;%=path%&gt;/images/pagination/list_next.gif" width="13"<br />     height="13"&gt; &lt;%<br />      if (pageCount&gt;pageNo) {<br />     %&gt; &lt;a href="?pageNo=&lt;%=(pageNo+1)%&gt;"&gt;&amp;nbsp;&amp;nbsp;后一页&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;<br />    &lt;%<br />                     }else{<br />                    %&gt; &amp;nbsp;&amp;nbsp;后一页&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;%<br />                     } <br />                    %&gt; &lt;img src="&lt;%=path%&gt;/images/pagination/list_end.gif"<br />     width="13" height="13"&gt; &lt;%<br />      if (pageCount&gt;pageNo) {<br />     %&gt; &lt;a href="?pageNo=&lt;%=(pageCount)%&gt;"&gt;&amp;nbsp;&amp;nbsp;尾页&lt;/a&gt; &lt;%<br />                     }else{<br />                    %&gt; &amp;nbsp;&amp;nbsp;尾页 &lt;%<br />                     } <br />                    %&gt;<br />    &lt;td width="26%" align="center" valign="middle" class="word"&gt;共&lt;%=pageCount%&gt;页&amp;nbsp;第&lt;%=pageNo%&gt;页&amp;nbsp;<br />    跳转&lt;/td&gt;<br />    &lt;td width="4%" align="center" valign="middle" class="word"&gt;&lt;input<br />     name="textfield" type="text" class="input" size="1"&gt;&lt;/td&gt;<br />    &lt;td width="6%" align="center" valign="middle" class="word"&gt;&lt;a<br />     href="javascript:check()"&gt;&lt;img<br />     src="&lt;%=path%&gt;/images/pagination/go.gif" border="0" width="18"<br />     height="18"&gt;&lt;/a&gt;&lt;/td&gt;</p>
		<p>    &lt;td width="4%" align="left" valign="middle" class="word"&gt;&amp;nbsp;&lt;/td&gt;<br />   &lt;/tr&gt;<br />  &lt;/table&gt;&lt;/body&gt;  <br />&lt;/html&gt;</p>
<img src ="http://www.blogjava.net/balajinima/aggbug/134185.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/balajinima/" target="_blank">李云泽</a> 2007-08-03 10:55 <a href="http://www.blogjava.net/balajinima/articles/134185.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSP分页技术实现 [转贴]</title><link>http://www.blogjava.net/balajinima/articles/132962.html</link><dc:creator>李云泽</dc:creator><author>李云泽</author><pubDate>Sat, 28 Jul 2007 04:26:00 GMT</pubDate><guid>http://www.blogjava.net/balajinima/articles/132962.html</guid><wfw:comment>http://www.blogjava.net/balajinima/comments/132962.html</wfw:comment><comments>http://www.blogjava.net/balajinima/articles/132962.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/balajinima/comments/commentRss/132962.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/balajinima/services/trackbacks/132962.html</trackback:ping><description><![CDATA[目前比较广泛使用的分页方式是将查询结果缓存在HttpSession或有状态bean中，翻页的时候从缓存中取出一页数据显示。这种方法有两个主要的缺点：一是用户可能看到的是过期数据；二是如果数据量非常大时第一次查询遍历结果集会耗费很长时间，并且缓存的数据也会占用大量内存，效率明显下降。<br />　　其它常见的方法还有每次翻页都查询一次数据库，从ResultSet中只取出一页数据（使用rs.last();rs.getRow()获得总计录条数，使用rs.absolute()定位到本页起始记录）。这种方式在某些数据库(如oracle)的JDBC实现中差不多也是需要遍历所有记录，实验证明在记录数很大时速度非常慢。<br />　　至于缓存结果集ResultSet的方法则完全是一种错误的做法。因为ResultSet在Statement或Connection关闭时也会被关闭，如果要使ResultSet有效势必长时间占用数据库连接。 
<p>　　因此比较好的分页做法应该是每次翻页的时候只从数据库里检索页面大小的块区的数据。这样虽然每次翻页都需要查询数据库，但查询出的记录数很少，网络传输数据量不大，如果使用连接池更可以略过最耗时的建立数据库连接过程。而在数据库端有各种成熟的优化技术用于提高查询速度，比在应用服务器层做缓存有效多了。</p><p>　　在oracle数据库中查询结果的行号使用伪列ROWNUM表示（从1开始）。例如select * from employee where rownum&lt;10 返回前10条记录。但因为rownum是在查询之后排序之前赋值的，所以查询employee按birthday排序的第100到120条记录应该这么写：<br />[pre]        select * from (<br />            select my_table.*, rownum as my_rownum from (<br />                select name, birthday from employee order by birthday<br />            ) my_table where rownum &lt;120<br />        ) where my_rownum&gt;=100<br />[/pre]<br />　　mySQL可以使用LIMIT子句：<br />　　　　select name, birthday from employee order by birthday LIMIT 99,20<br />　　DB2有rownumber()函数用于获取当前行数。<br />　　SQL Server没研究过，可以参考这篇文章：<a href="http://www.csdn.net/develop/article/18/18627.shtm"><font color="#2b2b2b">http://www.csdn.net/develop/article/18/18627.shtm</font></a></p><p>　　在Web程序中分页会被频繁使用，但分页的实现细节却是编程过程中比较麻烦的事情。大多分页显示的查询操作都同时需要处理复杂的多重查询条件，sql语句需要动态拼接组成，再加上分页需要的记录定位、总记录条数查询以及查询结果的遍历、封装和显示，程序会变得很复杂并且难以理解。因此需要一些工具类简化分页代码，使程序员专注于业务逻辑部分。下面是我设计的两个工具类：<br />　　PagedStatement  封装了数据库连接、总记录数查询、分页查询、结果数据封装和关闭数据库连接等操作，并使用了PreparedStatement支持动态设置参数。<br />　　RowSetPage  参考PetStore的page by page iterator模式， 设计RowSetPage用于封装查询结果（使用OracleCachedRowSet缓存查询出的一页数据，关于使用CachedRowSet封装数据库查询结果请参考JSP页面查询显示常用模式）以及当前页码、总记录条数、当前记录数等信息， 并且可以生成简单的HTML分页代码。<br />　　PagedStatement 查询的结果封装成RowsetPage。</p><p>　　下面是简单的使用示例：</p><p> </p><p>    //DAO查询数据部分代码： <br />    … <br />    public RowSetPage getEmployee(String gender, int pageNo) throws Exception{ <br />        String sql="select emp_id, emp_code,  user_name, real_name from employee where gender =?"; <br />       //使用Oracle数据库的分页查询实现,每页显示5条 <br />        PagedStatement pst =new PagedStatementOracleImpl(sql,  pageNo, 5); <br />        pst.setString(1, gender); <br />        return pst.executeQuery(); <br />    } </p><p><br />    //Servlet处理查询请求部分代码： </p><p>    … <br />    int pageNo; <br />    try{ <br />        //可以通过参数pageno获得用户选择的页码 <br />        pageNo = Integer.parseInt(request.getParameter("pageno") ); <br />    }catch(Exception ex){ <br />        //默认为第一页 <br />        pageNo=1; <br />    } <br />    String gender = request.getParameter("gender" ); <br />    request.setAttribute("empPage", myBean.getEmployee(gender, pageNo) ); <br />    … </p><p>    //JSP显示部分代码 <br />&lt;%@ page import = "page.RowSetPage"%&gt; <br />    … <br />    &lt;script language="javascript"&gt; <br />        function doQuery(){ <br />            form1.actionType.value="doQuery"; <br />            form1.submit(); <br />    } <br />    &lt;/script&gt; <br />    … <br />    &lt;form name=form1 method=get&gt; <br />      &lt;input type=hidden name=actionType&gt; <br />      性别： <br />      &lt;input type=text name=gender size=1 value="&lt;%=request.getParameter("gender")%&gt;"&gt; <br />      &lt;input type=button value=" 查询 " onclick="doQuery()"&gt; <br />&lt;% <br />    RowSetPage empPage = (RowSetPage)request.getAttribute("empPage"); <br />    if (empPage == null ) empPage = RowSetPage.EMPTY_PAGE; <br />%&gt; <br />    … <br />    &lt;table  cellspacing="0" width="90%"&gt; <br />        &lt;tr&gt; &lt;td&gt;ID&lt;/td&gt; &lt;td&gt;代码&lt;/td&gt; &lt;td&gt;用户名&lt;/td&gt; &lt;td&gt;姓名&lt;/td&gt;  &lt;/tr&gt; <br />&lt;% <br />    javax.sql.RowSet empRS = (javax.sql.RowSet) empPage.getRowSet(); <br />    if (empRS!=null) while (empRS.next() ) { <br />%&gt; <br />        &lt;tr&gt;   <br />            &lt;td&gt;&lt;%= empRS.getString("EMP_ID")%&gt;&lt;/td&gt;  <br />            &lt;td&gt;&lt;%= empRS.getString("EMP_CODE")%&gt;&lt;/td&gt;   <br />            &lt;td&gt;&lt;%= empRS.getString("USER_NAME")%&gt;&lt;/td&gt;  <br />            &lt;td&gt;&lt;%= empRS.getString("REAL_NAME")%&gt;&lt;/td&gt;   <br />        &lt;/tr&gt; <br />&lt;% <br />    }// end while <br />%&gt; <br />        &lt;tr&gt; <br />&lt;% <br />    //显示总页数和当前页数(pageno)以及分页代码。 <br />    //此处doQuery为页面上提交查询动作的javascript函数名， pageno为标识当前页码的参数名 <br />%&gt; <br />            &lt;td colspan=4&gt;&lt;%= empPage .getHTML("doQuery", "pageno")%&gt;&lt;/td&gt; <br />        &lt;/tr&gt; <br />    &lt;/table&gt; <br />    &lt;/form&gt; </p><p>　　效果如图：</p><p><br />　　因为分页显示一般都会伴有查询条件和查询动作，页面应已经有校验查询条件和提交查询的javascript方法（如上面的doQuery），所以RowSetPage.getHTML()生成的分页代码在用户选择新页码时直接回调前面的处理提交查询的javascript方法。注意在显示查询结果的时候上次的查询条件也需要保持，如&lt;input type=text name=gender size=1 value="&lt;%=request.getParameter("gender")%&gt;"&gt;。同时由于页码的参数名可以指定，因此也支持在同一页面中有多个分页区。<br />　　另一种分页代码实现是生成每一页的URL，将查询参数和页码作为QueryString附在URL后面。这种方法的缺陷是在查询条件比较复杂时难以处理，并且需要指定处理查询动作的servlet，可能不适合某些定制的查询操作。<br />　　如果对RowSetPage.getHTML()生成的默认分页代码不满意可以编写自己的分页处理代码，RowSetPage提供了很多getter方法用于获取相关信息（如当前页码、总页数、 总记录数和当前记录数等）。<br />　　在实际应用中可以将分页查询和显示做成jsp taglib， 进一步简化JSP代码，屏蔽Java Code。</p><p>附：分页工具类的源代码， 有注释，应该很容易理解。</p><p>1.Page.java<br />2.RowSetPage.java(RowSetPage继承Page)<br />3.PagedStatement.java<br />4.PagedStatementOracleImpl.java(PagedStatementOracleImpl继承PagedStatement)</p><p> </p><p>您可以任意使用这些源代码，但必须保留author <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">evan_zhao@hotmail.com</font></a>字样</p><p><br />/////////////////////////////////// <br />// <br />//  Page.java <br />//  author: <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">evan_zhao@hotmail.com</font></a><br />// <br />/////////////////////////////////// </p><p>package page; </p><p>import java.util.List; <br />import java.util.ArrayList; <br />import java.util.Collection; <br />import java.util.Collections; </p><p><br />/** <br /> * Title: 分页对象&lt;br&gt; <br /> * Description:  用于包含数据及分页信息的对象&lt;br&gt; <br /> *               Page类实现了用于显示分页信息的基本方法，但未指定所含数据的类型， <br /> *               可根据需要实现以特定方式组织数据的子类，&lt;br&gt; <br /> *               如RowSetPage以RowSet封装数据，ListPage以List封装数据&lt;br&gt; <br /> * Copyright:    Copyright (c) 2002 &lt;br&gt; <br /> * @author <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">evan_zhao@hotmail.com</font></a> &lt;br&gt; <br /> * @version 1.0 <br /> */ <br />public  class Page implements java.io.Serializable { <br />    public static final Page EMPTY_PAGE = new Page(); <br />    public static final int  DEFAULT_PAGE_SIZE = 20; <br />    public static final  int MAX_PAGE_SIZE = 9999; </p><p>    private int myPageSize = DEFAULT_PAGE_SIZE; </p><p>    private int start; <br />    private int avaCount,totalSize; <br />    private Object data; </p><p>    private int currentPageno; <br />    private int totalPageCount; </p><p>    /** <br />     * 默认构造方法，只构造空页 <br />     */ <br />    protected Page(){ <br />        this.init(0,0,0,DEFAULT_PAGE_SIZE,new Object()); <br />    } </p><p>    /** <br />     * 分页数据初始方法，由子类调用 <br />     * @param start 本页数据在数据库中的起始位置 <br />     * @param avaCount 本页包含的数据条数 <br />     * @param totalSize 数据库中总记录条数 <br />     * @param pageSize 本页容量 <br />     * @param data 本页包含的数据 <br />     */ <br />    protected void init(int start, int avaCount, int totalSize, int pageSize, Object data){ </p><p>        this.avaCount =avaCount; <br />        this.myPageSize = pageSize; </p><p>        this.start = start; <br />        this.totalSize = totalSize; </p><p>        this.data=data; </p><p>        //System.out.println("avaCount:"+avaCount); <br />        //System.out.println("totalSize:"+totalSize); <br />        if (avaCount&gt;totalSize) { <br />            //throw new RuntimeException("记录条数大于总条数？！"); <br />        } </p><p>        this.currentPageno = (start -1)/pageSize +1; <br />        this.totalPageCount = (totalSize + pageSize -1) / pageSize; </p><p>        if (totalSize==0 &amp;&amp; avaCount==0){ <br />            this.currentPageno = 1; <br />            this.totalPageCount = 1; <br />        } <br />        //System.out.println("Start Index to Page No: " + start + "-" + currentPageno); <br />    } </p><p>    public  Object getData(){ <br />        return this.data; <br />    } </p><p>    /** <br />     * 取本页数据容量（本页能包含的记录数） <br />     * @return 本页能包含的记录数 <br />     */ <br />    public int getPageSize(){ <br />        return this.myPageSize; <br />    } </p><p>    /** <br />     * 是否有下一页 <br />     * @return 是否有下一页 <br />     */ <br />    public boolean hasNextPage() { <br />      /* <br />        if (avaCount==0 &amp;&amp; totalSize==0){ <br />            return false; <br />        } <br />        return (start + avaCount -1) &lt; totalSize; <br />       */ <br />      return (this.getCurrentPageNo()&lt;this.getTotalPageCount()); <br />    } </p><p>    /** <br />     * 是否有上一页 <br />     * @return  是否有上一页 <br />     */ <br />    public boolean hasPreviousPage() { <br />      /* <br />        return start &gt; 1; <br />       */ <br />      return (this.getCurrentPageNo()&gt;1); <br />    } </p><p>    /** <br />     * 获取当前页第一条数据在数据库中的位置 <br />     * @return <br />     */ <br />    public int getStart(){ <br />        return start; <br />    } </p><p>    /** <br />     * 获取当前页最后一条数据在数据库中的位置 <br />     * @return <br />     */ <br />    public int getEnd(){ <br />        int end = this.getStart() + this.getSize() -1; <br />        if (end&lt;0) { <br />            end = 0; <br />        } <br />        return end; <br />    } </p><p>    /** <br />     * 获取上一页第一条数据在数据库中的位置 <br />     * @return 记录对应的rownum <br />     */ <br />    public int getStartOfPreviousPage() { <br />        return Math.max(start-myPageSize, 1); <br />    } </p><p><br />    /** <br />     * 获取下一页第一条数据在数据库中的位置 <br />     * @return 记录对应的rownum <br />     */ <br />    public int getStartOfNextPage() { <br />        return start + avaCount; <br />    } </p><p>    /** <br />     * 获取任一页第一条数据在数据库中的位置，每页条数使用默认值 <br />     * @param pageNo 页号 <br />     * @return 记录对应的rownum <br />     */ <br />    public static int getStartOfAnyPage(int pageNo){ <br />        return getStartOfAnyPage(pageNo, DEFAULT_PAGE_SIZE); <br />    } </p><p>    /** <br />     * 获取任一页第一条数据在数据库中的位置 <br />     * @param pageNo 页号 <br />     * @param pageSize 每页包含的记录数 <br />     * @return 记录对应的rownum <br />     */ <br />    public static int getStartOfAnyPage(int pageNo, int pageSize){ <br />        int startIndex = (pageNo-1) * pageSize + 1; <br />        if ( startIndex &lt; 1) startIndex = 1; <br />        //System.out.println("Page No to Start Index: " + pageNo + "-" + startIndex); <br />        return startIndex; <br />    } </p><p>    /** <br />     * 取本页包含的记录数 <br />     * @return 本页包含的记录数 <br />     */ <br />    public int getSize() { <br />        return avaCount; <br />    } </p><p>    /** <br />     * 取数据库中包含的总记录数 <br />     * @return 数据库中包含的总记录数 <br />     */ <br />    public int getTotalSize() { <br />        return this.totalSize; <br />    } </p><p>    /** <br />     * 取当前页码 <br />     * @return 当前页码 <br />     */ <br />    public int getCurrentPageNo(){ <br />        return  this.currentPageno; <br />    } </p><p>    /** <br />     * 取总页码 <br />     * @return 总页码 <br />     */ <br />    public int getTotalPageCount(){ <br />        return this.totalPageCount; <br />    } </p><p><br />    /** <br />     * <br />     * @param queryJSFunctionName 实现分页的JS脚本名字，页码变动时会自动回调该方法 <br />     * @param pageNoParamName 页码参数名称 <br />     * @return <br />     */ <br />    public String getHTML(String queryJSFunctionName, String pageNoParamName){ <br />        if (getTotalPageCount()&lt;1){ <br />            return "&lt;input type='hidden' name='"+pageNoParamName+"' value='1' &gt;"; <br />        } <br />        if (queryJSFunctionName == null || queryJSFunctionName.trim().length()&lt;1) { <br />            queryJSFunctionName = "gotoPage"; <br />        } <br />        if (pageNoParamName == null || pageNoParamName.trim().length()&lt;1){ <br />            pageNoParamName = "pageno"; <br />        } </p><p>        String gotoPage = "_"+queryJSFunctionName; </p><p>        StringBuffer html = new StringBuffer("\n"); <br />        html.append("&lt;script language=\"Javascript1.2\"&gt;\n") <br />             .append("function ").append(gotoPage).append("(pageNo){  \n") <br />             .append(  "   var curPage=1;  \n") <br />             .append(  "   try{ curPage = document.all[\"") <br />             .append(pageNoParamName).append("\"].value;  \n") <br />             .append(  "        document.all[\"").append(pageNoParamName) <br />             .append("\"].value = pageNo;  \n") <br />             .append(  "        ").append(queryJSFunctionName).append("(pageNo); \n") <br />             .append(  "        return true;  \n") <br />             .append(  "   }catch(e){ \n") <br />//             .append(  "      try{ \n") <br />//             .append(  "           document.forms[0].submit();  \n") <br />//             .append(  "      }catch(e){   \n") <br />             .append(  "          alert('尚未定义查询方法：function ") <br />             .append(queryJSFunctionName).append("()'); \n") <br />             .append(  "          document.all[\"").append(pageNoParamName) <br />             .append("\"].value = curPage;  \n") <br />             .append(  "          return false;  \n") <br />//             .append(  "      }  \n") <br />             .append(  "   }  \n") <br />             .append(  "}") <br />             .append(  "&lt;/script&gt;  \n") <br />             .append(  ""); <br />        html.append( "&lt;table  border=0 cellspacing=0 cellpadding=0 align=center width=80%&gt;  \n") <br />             .append( "  &lt;tr&gt;  \n") <br />             .append( "    &lt;td align=left&gt;&lt;br&gt;  \n"); <br />        html.append(  "       共" ).append( getTotalPageCount() ).append( "页") <br />             .append(  "       [") .append(getStart()).append("..").append(getEnd()) <br />             .append("/").append(this.getTotalSize()).append("]  \n") <br />             .append( "    &lt;/td&gt;  \n") <br />             .append( "    &lt;td align=right&gt;  \n"); <br />        if (hasPreviousPage()){ <br />             html.append( "[&lt;a href='javascript:").append(gotoPage) <br />             .append("(") .append(getCurrentPageNo()-1)  <br />             .append( ")'&gt;上一页&lt;/a&gt;]   \n"); <br />        } <br />        html.append(  "       第") <br />             .append(   "        &lt;select name='") <br />             .append(pageNoParamName).append("' onChange='javascript:") <br />             .append(gotoPage).append("(this.value)'&gt;\n"); <br />        String selected = "selected"; <br />        for(int i=1;i&lt;=getTotalPageCount();i++){ <br />            if( i == getCurrentPageNo() ) <br />                 selected = "selected"; <br />            else selected = ""; <br />            html.append( "      &lt;option value='").append(i).append("' ") <br />              .append(selected).append("&gt;").append(i).append("&lt;/option&gt;  \n"); <br />        } <br />        if (getCurrentPageNo()&gt;getTotalPageCount()){ <br />            html.append( "      &lt;option value='").append(getCurrentPageNo()) <br />            .append("' selected&gt;").append(getCurrentPageNo()) <br />            .append("&lt;/option&gt;  \n"); <br />        } <br />        html.append( "    &lt;/select&gt;页  \n"); <br />        if (hasNextPage()){ <br />             html.append( "    [&lt;a href='javascript:").append(gotoPage) <br />               .append("(").append((getCurrentPageNo()+1))  <br />               .append( ")'&gt;下一页&lt;/a&gt;]   \n"); <br />        } <br />        html.append( "&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;  \n"); </p><p>        return html.toString(); </p><p>    } <br />} </p><p> </p><p><br />/////////////////////////////////// <br />// <br />//  RowSetPage.java <br />//  author: <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">evan_zhao@hotmail.com</font></a><br />// <br />/////////////////////////////////// <br />package page; </p><p>import javax.sql.RowSet; </p><p><br />/** <br /> * &lt;p&gt;Title: RowSetPage&lt;/p&gt; <br /> * &lt;p&gt;Description: 使用RowSet封装数据的分页对象&lt;/p&gt; <br /> * &lt;p&gt;Copyright: Copyright (c) 2003&lt;/p&gt; <br /> * @author <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">evan_zhao@hotmail.com</font></a><br /> * @version 1.0 <br /> */ </p><p>public class RowSetPage extends Page { <br />    private javax.sql.RowSet rs; </p><p>    /** <br />     *空页 <br />     */ <br />    public static final RowSetPage EMPTY_PAGE = new RowSetPage(); </p><p>    /** <br />     *默认构造方法，创建空页 <br />     */ <br />    public RowSetPage(){ <br />      this(null, 0,0); <br />    } </p><p>    /** <br />     *构造分页对象 <br />     <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">*@param</font></a> crs 包含一页数据的OracleCachedRowSet <br />     <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">*@param</font></a> start 该页数据在数据库中的起始位置 <br />     <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">*@param</font></a> totalSize 数据库中包含的记录总数 <br />     */ <br />    public RowSetPage(RowSet crs, int start, int totalSize) { <br />        this(crs,start,totalSize,Page.DEFAULT_PAGE_SIZE); <br />    } </p><p>    /** <br />     *构造分页对象 <br />     <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">*@param</font></a> crs 包含一页数据的OracleCachedRowSet <br />     <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">*@param</font></a> start 该页数据在数据库中的起始位置 <br />     <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">*@param</font></a> totalSize 数据库中包含的记录总数 <br />     <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">*@pageSize</font></a> 本页能容纳的记录数 <br />     */ <br />    public RowSetPage(RowSet crs, int start, int totalSize, int pageSize) { <br />        try{ <br />            int avaCount=0; <br />            if (crs!=null) { <br />                crs.beforeFirst(); <br />                if (crs.next()){ <br />                    crs.last(); <br />                    avaCount = crs.getRow(); <br />                } <br />                crs.beforeFirst(); <br />            } <br />            rs = crs; <br />            super.init(start,avaCount,totalSize,pageSize,rs); <br />        }catch(java.sql.SQLException sqle){ <br />            throw new RuntimeException(sqle.toString()); <br />        } <br />    } </p><p>    /** <br />     *取分页对象中的记录数据 <br />     */ <br />    public javax.sql.RowSet getRowSet(){ <br />        return rs; <br />    } </p><p><br />} </p><p> </p><p><br />/////////////////////////////////// <br />// <br />//  PagedStatement.java <br />//  author: <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">evan_zhao@hotmail.com</font></a><br />// <br />/////////////////////////////////// </p><p>package page; </p><p>import foo.DBUtil; </p><p>import java.math.BigDecimal; <br />import java.util.List; <br />import java.util.Iterator; <br />import java.util.Collections; </p><p>import java.sql.Connection; <br />import java.sql.SQLException; <br />import java.sql.ResultSet; <br />import java.sql.Statement; <br />import java.sql.PreparedStatement; <br />import java.sql.Timestamp; <br />import javax.sql.RowSet; </p><p>/** <br /> * &lt;p&gt;Title: 分页查询&lt;/p&gt; <br /> * &lt;p&gt;Description: 根据查询语句和页码查询出当页数据&lt;/p&gt; <br /> * &lt;p&gt;Copyright: Copyright (c) 2002&lt;/p&gt; <br /> * @author <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">evan_zhao@hotmail.com</font></a><br /> * @version 1.0 <br /> */ <br />public abstract class PagedStatement { <br />    public final static int MAX_PAGE_SIZE = Page.MAX_PAGE_SIZE; </p><p>    protected String countSQL, querySQL; <br />    protected int pageNo,pageSize,startIndex,totalCount; <br />    protected javax.sql.RowSet rowSet; <br />    protected RowSetPage rowSetPage; </p><p>    private List boundParams; </p><p>    /** <br />     * 构造一查询出所有数据的PageStatement <br />     * @param sql  query sql <br />     */ <br />    public PagedStatement(String sql){ <br />        this(sql,1,MAX_PAGE_SIZE); <br />    } </p><p><br />    /** <br />     * 构造一查询出当页数据的PageStatement <br />     * @param sql  query sql <br />     * @param pageNo  页码 <br />     */ <br />    public PagedStatement(String sql, int pageNo){ <br />        this(sql, pageNo, Page.DEFAULT_PAGE_SIZE); <br />    } </p><p>    /** <br />     * 构造一查询出当页数据的PageStatement，并指定每页显示记录条数 <br />     * @param sql query sql <br />     * @param pageNo 页码 <br />     * @param pageSize 每页容量 <br />     */ <br />    public PagedStatement(String sql, int pageNo, int pageSize){ <br />        this.pageNo = pageNo; <br />        this.pageSize = pageSize; <br />        this.startIndex = Page.getStartOfAnyPage(pageNo, pageSize); <br />        this.boundParams = Collections.synchronizedList(new java.util.LinkedList()); </p><p>        this.countSQL = "select count(*) from ( " + sql +") "; <br />        this.querySQL = intiQuerySQL(sql, this.startIndex, pageSize); <br />    } </p><p><br />    /** <br />     *生成查询一页数据的sql语句 <br />     <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">*@param</font></a> sql 原查询语句 <br />     <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">*@startIndex</font></a> 开始记录位置 <br />     <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">*@size</font></a> 需要获取的记录数 <br />     */ <br />    protected abstract  String intiQuerySQL(String sql, int startIndex, int size); </p><p><br />    /** <br />     *使用给出的对象设置指定参数的值 <br />     <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">*@param</font></a> index 第一个参数为1，第二个为2，。。。 <br />     <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">*@param</font></a> obj 包含参数值的对象 <br />     */ <br />    public void setObject(int index, Object obj) throws SQLException{ <br />        BoundParam bp = new BoundParam(index, obj); <br />        boundParams.remove(bp); <br />        boundParams.add( bp); <br />    } </p><p>    /** <br />     *使用给出的对象设置指定参数的值 <br />     <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">*@param</font></a> index 第一个参数为1，第二个为2，。。。 <br />     <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">*@param</font></a> obj 包含参数值的对象 <br />     <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">*@param</font></a> targetSqlType 参数的数据库类型 <br />     */ <br />    public void setObject(int index, Object obj, int targetSqlType) throws SQLException{ <br />        BoundParam bp = new BoundParam(index, obj, targetSqlType); <br />        boundParams.remove(bp); <br />        boundParams.add(bp ); <br />    } </p><p>    /** <br />     *使用给出的对象设置指定参数的值 <br />     <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">*@param</font></a> index 第一个参数为1，第二个为2，。。。 <br />     <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">*@param</font></a> obj 包含参数值的对象 <br />     <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">*@param</font></a> targetSqlType 参数的数据库类型(常量定义在java.sql.Types中) <br />     <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">*@param</font></a> scale 精度，小数点后的位数 <br />     * （只对targetSqlType是Types.NUMBER或Types.DECIMAL有效，其它类型则忽略） <br />     */ <br />    public void setObject(int index, Object obj, int targetSqlType, int scale) throws SQLException{ <br />        BoundParam bp = new BoundParam(index, obj, targetSqlType, scale) ; <br />        boundParams.remove(bp); <br />        boundParams.add(bp); <br />    } </p><p>    /** <br />     *使用给出的字符串设置指定参数的值 <br />     <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">*@param</font></a> index 第一个参数为1，第二个为2，。。。 <br />     <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">*@param</font></a> str 包含参数值的字符串 <br />     */ <br />    public void setString(int index, String str)throws SQLException{ <br />        BoundParam bp = new BoundParam(index, str)  ; <br />        boundParams.remove(bp); <br />        boundParams.add(bp); <br />    } </p><p>    /** <br />     *使用给出的字符串设置指定参数的值 <br />     <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">*@param</font></a> index 第一个参数为1，第二个为2，。。。 <br />     <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">*@param</font></a> timestamp 包含参数值的时间戳 <br />     */ <br />    public void setTimestamp(int index, Timestamp timestamp)throws SQLException{ <br />        BoundParam bp = new BoundParam(index, timestamp)  ; <br />        boundParams.remove(bp); <br />        boundParams.add( bp ); <br />    } </p><p>    /** <br />     *使用给出的整数设置指定参数的值 <br />     <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">*@param</font></a> index 第一个参数为1，第二个为2，。。。 <br />     <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">*@param</font></a> value 包含参数值的整数 <br />     */ <br />    public void setInt(int index, int value)throws SQLException{ <br />        BoundParam bp =  new BoundParam(index, new Integer(value))  ; <br />        boundParams.remove(bp); <br />        boundParams.add( bp ); <br />    } </p><p>    /** <br />     *使用给出的长整数设置指定参数的值 <br />     <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">*@param</font></a> index 第一个参数为1，第二个为2，。。。 <br />     <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">*@param</font></a> value 包含参数值的长整数 <br />     */ <br />    public void setLong(int index, long value)throws SQLException{ <br />        BoundParam bp =  new BoundParam(index, new Long(value))  ; <br />        boundParams.remove(bp); <br />        boundParams.add( bp ); <br />    } </p><p>    /** <br />     *使用给出的双精度浮点数设置指定参数的值 <br />     <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">*@param</font></a> index 第一个参数为1，第二个为2，。。。 <br />     <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">*@param</font></a> value 包含参数值的双精度浮点数 <br />     */ <br />    public void setDouble(int index, double value)throws SQLException{ <br />        BoundParam bp =  new BoundParam(index, new Double(value))   ; <br />        boundParams.remove(bp); <br />        boundParams.add( bp); <br />    } </p><p>    /** <br />     *使用给出的BigDecimal设置指定参数的值 <br />     <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">*@param</font></a> index 第一个参数为1，第二个为2，。。。 <br />     <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">*@param</font></a> bd 包含参数值的BigDecimal <br />     */ <br />    public void setBigDecimal(int index, BigDecimal bd)throws SQLException{ <br />        BoundParam bp =   new BoundParam(index, bd )   ; <br />        boundParams.remove(bp); <br />        boundParams.add( bp); <br />    } </p><p>    private  void setParams(PreparedStatement pst) throws SQLException{ <br />        if (pst==null || this.boundParams==null || this.boundParams.size()==0 ) return ; <br />        BoundParam param; <br />        for (Iterator itr = this.boundParams.iterator();itr.hasNext();){ <br />            param = (BoundParam) itr.next(); <br />            if  (param==null) continue; <br />            if (param.sqlType == java.sql.Types.OTHER){ <br />                pst.setObject(param.index, param.value); <br />            }else{ <br />                pst.setObject(param.index, param.value, param.sqlType, param.scale); <br />            } <br />        } <br />    } </p><p> </p><p>    /** <br />     * 执行查询取得一页数据，执行结束后关闭数据库连接 <br />     * @return RowSetPage <br />     * @throws SQLException <br />     */ <br />    public  RowSetPage executeQuery() throws SQLException{ <br />        System.out.println("executeQueryUsingPreparedStatement"); <br />        Connection conn = DBUtil.getConnection(); <br />        PreparedStatement pst = null; <br />        ResultSet rs = null; <br />        try{ <br />            pst = conn.prepareStatement(this.countSQL); <br />            setParams(pst); <br />            rs =pst.executeQuery(); <br />            if (rs.next()){ <br />                totalCount = rs.getInt(1); <br />            } else { <br />                totalCount = 0; <br />            } </p><p>            rs.close(); <br />            pst.close(); </p><p>            if (totalCount &lt; 1 ) return RowSetPage.EMPTY_PAGE; </p><p>            pst = conn.prepareStatement(this.querySQL); <br />            System.out.println(querySQL); <br />            pst.setFetchSize(this.pageSize); <br />            setParams(pst); <br />            rs =pst.executeQuery(); <br />            //rs.setFetchSize(pageSize); </p><p>            this.rowSet = populate(rs); </p><p>            rs.close(); <br />            rs = null; <br />            pst.close(); <br />            pst = null; </p><p>            this.rowSetPage = new RowSetPage(this.rowSet,startIndex,totalCount,pageSize); <br />            return this.rowSetPage; <br />        }catch(SQLException sqle){ <br />            //System.out.println("executeQuery SQLException"); <br />            sqle.printStackTrace(); <br />            throw sqle; <br />        }catch(Exception e){ <br />            e.printStackTrace(); <br />            throw new RuntimeException(e.toString()); <br />        }finally{ <br />            //System.out.println("executeQuery finally"); <br />            DBUtil.close(rs, pst, conn); <br />        } <br />    } </p><p>    /** <br />     *将ResultSet数据填充进CachedRowSet <br />     */ <br />    protected abstract RowSet populate(ResultSet rs) throws SQLException; </p><p>    /** <br />     *取封装成RowSet查询结果 <br />     <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">*@return</font></a> RowSet <br />     */ <br />    public javax.sql.RowSet getRowSet(){ <br />        return this.rowSet; <br />    } </p><p><br />    /** <br />     *取封装成RowSetPage的查询结果 <br />     <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">*@return</font></a> RowSetPage <br />     */ <br />    public RowSetPage getRowSetPage() { <br />        return this.rowSetPage; <br />    } </p><p> </p><p>    /** <br />     *关闭数据库连接 <br />     */ <br />    public void close(){ <br />        //因为数据库连接在查询结束或发生异常时即关闭，此处不做任何事情 <br />        //留待扩充。 <br />    } </p><p> </p><p>    private class BoundParam { <br />        int index; <br />        Object value; <br />        int sqlType; <br />        int scale; </p><p>        public BoundParam(int index, Object value) { <br />            this(index, value, java.sql.Types.OTHER); <br />        } </p><p>        public BoundParam(int index, Object value, int sqlType) { <br />            this(index, value, sqlType, 0); <br />        } </p><p>        public BoundParam(int index, Object value, int sqlType, int scale) { <br />            this.index = index; <br />            this.value = value; <br />            this.sqlType = sqlType; <br />            this.scale = scale; <br />        } </p><p>        public boolean equals(Object obj){ <br />            if (obj!=null &amp;&amp; this.getClass().isInstance(obj)){ <br />                BoundParam bp = (BoundParam)obj; <br />                if (this.index==bp.index) return true; <br />            } <br />            return false; <br />        } <br />    } </p><p>} </p><p><br />/////////////////////////////////// <br />// <br />//  PagedStatementOracleImpl.java <br />//  author: <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">evan_zhao@hotmail.com</font></a><br />// <br />/////////////////////////////////// <br />package page; <br />import java.sql.ResultSet; <br />import java.sql.SQLException; <br />import javax.sql.RowSet; <br />import oracle.jdbc.rowset.OracleCachedRowSet; </p><p>/** <br /> * &lt;p&gt;Title: 分页查询Oracle数据库实现&lt;/p&gt; <br /> * &lt;p&gt;Copyright: Copyright (c) 2002&lt;/p&gt; <br /> * @author <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">evan_zhao@hotmail.com</font></a><br /> * @version 1.0 <br /> */ <br />public class PagedStatementOracleImpl extends PagedStatement { </p><p>    /** <br />     * 构造一查询出所有数据的PageStatement <br />     * @param sql  query sql <br />     */ <br />    public PagedStatementOracleImpl(String sql){ <br />        super(sql); <br />    } </p><p><br />    /** <br />     * 构造一查询出当页数据的PageStatement <br />     * @param sql  query sql <br />     * @param pageNo  页码 <br />     */ <br />    public PagedStatementOracleImpl(String sql, int pageNo){ <br />        super(sql, pageNo); <br />    } </p><p>    /** <br />     * 构造一查询出当页数据的PageStatement，并指定每页显示记录条数 <br />     * @param sql query sql <br />     * @param pageNo 页码 <br />     * @param pageSize 每页容量 <br />     */ <br />    public PagedStatementOracleImpl(String sql, int pageNo, int pageSize){ <br />        super(sql, pageNo, pageSize); <br />    } </p><p><br />    /** <br />     *生成查询一页数据的sql语句 <br />     <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">*@param</font></a> sql 原查询语句 <br />     <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">*@startIndex</font></a> 开始记录位置 <br />     <a href="mailto:evan_zhao@hotmail.com"><font color="#2b2b2b">*@size</font></a> 需要获取的记录数 <br />     */ <br />    protected String intiQuerySQL(String sql, int startIndex, int size){ <br />        StringBuffer querySQL = new StringBuffer(); <br />        if (size != super.MAX_PAGE_SIZE) { <br />            querySQL.append("select * from (select my_table.*,rownum as my_rownum from(") <br />                    .append(  sql) <br />                    .append(") my_table where rownum&lt;").append(startIndex + size) <br />                    .append(") where my_rownum&gt;=").append(startIndex); <br />        } else { <br />            querySQL.append("select * from (select my_table.*,rownum as my_rownum from(") <br />                    .append(sql) <br />                    .append(") my_table ") <br />                    .append(") where my_rownum&gt;=").append(startIndex); <br />        } <br />        return querySQL.toString(); <br />    } </p><p>    /** <br />     *将ResultSet数据填充进CachedRowSet <br />     */ <br />    protected  RowSet populate(ResultSet rs) throws SQLException{ <br />        OracleCachedRowSet ocrs = new OracleCachedRowSet(); <br />        ocrs.populate(rs); <br />        return ocrs; <br />    } </p><p>} </p><p> </p><img src ="http://www.blogjava.net/balajinima/aggbug/132962.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/balajinima/" target="_blank">李云泽</a> 2007-07-28 12:26 <a href="http://www.blogjava.net/balajinima/articles/132962.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>