??xml version="1.0" encoding="utf-8" standalone="yes"?>www.国产精品一区,久久久久久一区二区三区,国产一区二区不卡在线http://www.aygfsteel.com/balajinima/category/26961.htmlzh-cnThu, 21 Feb 2008 19:32:22 GMTThu, 21 Feb 2008 19:32:22 GMT60通过Map取提交的表单域?/title><link>http://www.aygfsteel.com/balajinima/articles/181106.html</link><dc:creator>李云?/dc:creator><author>李云?/author><pubDate>Thu, 21 Feb 2008 09:27:00 GMT</pubDate><guid>http://www.aygfsteel.com/balajinima/articles/181106.html</guid><wfw:comment>http://www.aygfsteel.com/balajinima/comments/181106.html</wfw:comment><comments>http://www.aygfsteel.com/balajinima/articles/181106.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/balajinima/comments/commentRss/181106.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/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取到的参数放C个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 < as.length; i++)<br />             value = value + "," +as[i];</p> <p>        }<br />  return map;<br /> }<br />}<br /></p> <img src ="http://www.aygfsteel.com/balajinima/aggbug/181106.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/balajinima/" target="_blank">李云?/a> 2008-02-21 17:27 <a href="http://www.aygfsteel.com/balajinima/articles/181106.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java判断操作pȝhttp://www.aygfsteel.com/balajinima/articles/178792.html李云?/dc:creator>李云?/author>Fri, 01 Feb 2008 02:13:00 GMThttp://www.aygfsteel.com/balajinima/articles/178792.htmlhttp://www.aygfsteel.com/balajinima/comments/178792.htmlhttp://www.aygfsteel.com/balajinima/articles/178792.html#Feedback0http://www.aygfsteel.com/balajinima/comments/commentRss/178792.htmlhttp://www.aygfsteel.com/balajinima/services/trackbacks/178792.htmlimport java.net.URL;

public class OS {
 public static final String CLASS_PATH;
 public static final boolean isLinux;
 static {
  URL resource = OS.class.getResource("OS.class");
  String classPath = resource.getPath();
  String className = OS.class.getName().replace('.', '/') + ".class";
  String classesPath = classPath.substring(0, classPath.indexOf(className));
  
  if (System.getProperty("os.name").toUpperCase().indexOf("WINDOWS") != -1&& classesPath.startsWith("/")) {
   classesPath = classesPath.substring(1);
   isLinux = false;
  } else {
   isLinux = true;
  }
  CLASS_PATH = classesPath;
 }
 
 public static void main(String arg[]){
  
  System.out.println(OS.isLinux);
 }
}



]]>
jsp查看session信息http://www.aygfsteel.com/balajinima/articles/165409.html李云?/dc:creator>李云?/author>Wed, 05 Dec 2007 02:29:00 GMThttp://www.aygfsteel.com/balajinima/articles/165409.htmlhttp://www.aygfsteel.com/balajinima/comments/165409.htmlhttp://www.aygfsteel.com/balajinima/articles/165409.html#Feedback0http://www.aygfsteel.com/balajinima/comments/commentRss/165409.htmlhttp://www.aygfsteel.com/balajinima/services/trackbacks/165409.html<%@ page language="java" contentType="text/html; charset=GBK"
 import="java.util.*" pageEncoding="GBK"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title>Insert title here</title>
</head>
<body>
<%
out.print("<br>"+"session is new:"+session.isNew());

Date created = new Date(session.getCreationTime());
//得到session对象创徏的时?br />Date accessed = new Date(session.getLastAccessedTime());
//得到最后访问该session对象的时?br />out.println("<br>"+"ID " + session.getId()+" ");
//得到该session的idQƈ打印
out.println("<br>"+"Created: " + created+" ");
//打印session创徏旉
out.println("<br>"+"Last Accessed: " + accessed+" ");
//打印最后访问时?/p>

session.setAttribute("Name","Tom");
//在session中添加变量Name=Tom
session.setAttribute("UID","12345678");
//在session中添加变量UID=12345678

Enumeration e = session.getAttributeNames();
//得到session中变量名的枚丑֯?br />while (e.hasMoreElements()) { //遍历每一个变?br />String name = (String)e.nextElement(); //首先得到名字
String value = session.getAttribute(name).toString();
//由名字从session中得到?br />out.println("<br>"+name + " = " + value+" "); //打印
}

%>
</body>
</html>



]]>
有热点的JfreeChart柱型图(原创Q?/title><link>http://www.aygfsteel.com/balajinima/articles/165086.html</link><dc:creator>李云?/dc:creator><author>李云?/author><pubDate>Tue, 04 Dec 2007 01:57:00 GMT</pubDate><guid>http://www.aygfsteel.com/balajinima/articles/165086.html</guid><wfw:comment>http://www.aygfsteel.com/balajinima/comments/165086.html</wfw:comment><comments>http://www.aygfsteel.com/balajinima/articles/165086.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/balajinima/comments/commentRss/165086.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/balajinima/services/trackbacks/165086.html</trackback:ping><description><![CDATA[ <p> <img src="http://www.aygfsteel.com/images/blogjava_net/balajinima/26977/r_chart.JPG" /> <br /> <br />实现方式Qjsp+javabean<br />版本 Qjfreechart-1.0.8<br />web-infQ设|?br />=====================================<br /><servlet><br />  <servlet-name>DisplayChart</servlet-name><br />  <servlet-class><br />   org.jfree.chart.servlet.DisplayChart<br />  </servlet-class><br /> </servlet><br /> <servlet-mapping><br />  <servlet-name>DisplayChart</servlet-name><br />  <url-pattern>/servlet/DisplayChart</url-pattern><br /> </servlet-mapping><br />======================================<br />jsp文gQ?br />=========================================================================<br /><%@ page language="java" contentType="text/html; charset=GBK"<br /> pageEncoding="GBK"%><br /><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><br /><html><br /><head><br /><meta http-equiv="Content-Type" content="text/html; charset=GBK"><br /><title>Insert title here</title></p> <p><script language="javascript"><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 /></script><br /><jsp:useBean id="barchart01" scope="session"<br /> class="com.mdcl.fso.homepage.chart.BarChart01" /><br /></head><br /><body><br /><%<br /> String fileName = barchart01.drawPic(request.getSession(), out);<br /> String graphURL = request.getContextPath()<br />   + "/servlet/DisplayChart?filename=" + fileName;<br />%><br /><br /><br /><img src="<%= graphURL %>" border="0" usemap="#<%=fileName %>" /><br /><br /><br /><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;">试昄</div><br /></body><br /></html><br />=========================================================================<br />java文g<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 < 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成本l计", "费用cd",<br />    "金额Q单位:元)", getDataset(), PlotOrientation.VERTICAL, true, true,<br />    true);<br />  chart.setBackgroundPaint(Color.WHITE);</p> <p>  CategoryPlot plot = chart.getCategoryPlot();// 获取l图?/p> <p>  plot.setBackgroundPaint(new Color(255, 255, 255)); // 讄l图景色</p> <p>  plot.setRangeGridlinePaint(Color.gray); // 讄水^方向背景UK?/p> <p>  plot.setRangeGridlinesVisible(true); // 讄是否昄水^方向背景U?默认gؓTrue</p> <p>  plot.setDomainGridlinePaint(Color.black); // 讄垂直方向背景UK?/p> <p>  // plot.setDomainGridlinesVisible(true); // 讄是否昄垂直方向背景U?默认gؓFalse</p> <p>  CategoryAxis domainAxis = plot.getDomainAxis();// 获取l计U类轴标题(X_</p> <p>  plot.setDomainAxis(domainAxis);// dX?/p> <p>  BarRenderer3D renderer = new BarRenderer3D();// 获得BarRenderer3Dcȝ实例Q目的是讄柱Ş的绘制属?/p> <p>  renderer.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator());//</p> <p>  renderer.setBaseItemURLGenerator(new StandardCategoryURLGenerator("index2.jsp"));// 生成热点,用于链接</p> <p>  renderer.setItemMargin(0.1);// 讄每个l所包含的^行柱的之间距?/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);// 讄柱Ş图上的文字偏d?/p> <p>  renderer.setBaseItemLabelFont(new Font("arial", Font.PLAIN, 10), true);// 讄柱Ş图上的文?/p> <p>  renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());// //昄每个q数|q修改该数值的字体属?/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);// 讄q透明?/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.aygfsteel.com/balajinima/aggbug/165086.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/balajinima/" target="_blank">李云?/a> 2007-12-04 09:57 <a href="http://www.aygfsteel.com/balajinima/articles/165086.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSP验证码生?http://www.aygfsteel.com/balajinima/articles/146891.html李云?/dc:creator>李云?/author>Thu, 20 Sep 2007 11:32:00 GMThttp://www.aygfsteel.com/balajinima/articles/146891.htmlhttp://www.aygfsteel.com/balajinima/comments/146891.htmlhttp://www.aygfsteel.com/balajinima/articles/146891.html#Feedback0http://www.aygfsteel.com/balajinima/comments/commentRss/146891.htmlhttp://www.aygfsteel.com/balajinima/services/trackbacks/146891.htmljava 代码
  1. <%@ page   
  2.          import = "java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*" %>   
  3. <%@ page  import = "java.io.OutputStream" %>   
  4. <%@ page pageEncoding= "UTF-8" %>   
  5. <%!Color getRandColor( int  fc,  int  bc) {   
  6.                 Random random =  new  Random();   
  7.                  if  (fc >  255 )   
  8.                         fc =  255 ;   
  9.                  if  (bc >  255 )   
  10.                         bc =  255 ;   
  11.                  int  r = fc + random.nextInt(bc - fc);   
  12.                  int  g = fc + random.nextInt(bc - fc);   
  13.                  int  b = fc + random.nextInt(bc - fc);   
  14.                  return   new  Color(r, g, b);   
  15.         }%>   
  16. <%   
  17.                  try  {   
  18.                 response.setHeader( "Pragma" "No-cache" );   
  19.                 response.setHeader( "Cache-Control" "no-cache" );   
  20.                 response.setDateHeader( "Expires" 0 );   
  21.                  int  width =  60 , height =  20 ;   
  22.                 BufferedImage image =  new  BufferedImage(width, height,   
  23.                 BufferedImage.TYPE_INT_RGB);   
  24.                 OutputStream os = response.getOutputStream();   
  25.                 Graphics g = image.getGraphics();   
  26.                 Random random =  new  Random();   
  27.                 g.setColor(getRandColor( 200 250 ));   
  28.                 g.fillRect( 0 0 , width, height);   
  29.   
  30.                 g.setFont( new  Font( "Times New Roman" , Font.PLAIN,  18 ));   
  31.                 g.setColor(getRandColor( 160 200 ));   
  32.                  for  ( int  i =  0 ; i <  155 ; i++) {   
  33.                          int  x = random.nextInt(width);   
  34.                          int  y = random.nextInt(height);   
  35.                          int  xl = random.nextInt( 12 );   
  36.                          int  yl = random.nextInt( 12 );   
  37.                         g.drawLine(x, y, x + xl, y + yl);   
  38.                 }   
  39.                 String sRand =  "" ;   
  40.                  for  ( int  i =  0 ; i <  4 ; i++) {   
  41.                         String rand = String.valueOf(random.nextInt( 10 ));   
  42.                         sRand += rand;   
  43.                         g.setColor( new  Color( 20  + random.nextInt( 110 ),  20  + random   
  44.                         .nextInt( 110 ),  20  + random.nextInt( 110 )));   
  45.                         g.drawString(rand,  13  * i +  6 16 );   
  46.                 }   
  47.                 session.setAttribute( "rand" , sRand);   
  48.                 g.dispose();   
  49.   
  50.                 ImageIO.write(image,  "JPEG" , os);   
  51.                 os.flush();   
  52.                 os.close();   
  53.                 os =  null ;   
  54.                 response.flushBuffer();   
  55.                 out.clear();   
  56.                 out = pageContext.pushBody();   
  57.         }  catch  (IllegalStateException e) {   
  58.                 System.out.println(e.getMessage());   
  59.                 e.printStackTrace();   
  60.         }   
  61. %>   


]]>
Escape/unescape的Java实现 http://www.aygfsteel.com/balajinima/articles/146872.html李云?/dc:creator>李云?/author>Thu, 20 Sep 2007 10:21:00 GMThttp://www.aygfsteel.com/balajinima/articles/146872.htmlhttp://www.aygfsteel.com/balajinima/comments/146872.htmlhttp://www.aygfsteel.com/balajinima/articles/146872.html#Feedback0http://www.aygfsteel.com/balajinima/comments/commentRss/146872.htmlhttp://www.aygfsteel.com/balajinima/services/trackbacks/146872.html阅读全文

]]>
Ajax实现二联动下拉?http://www.aygfsteel.com/balajinima/articles/146689.html李云?/dc:creator>李云?/author>Thu, 20 Sep 2007 02:04:00 GMThttp://www.aygfsteel.com/balajinima/articles/146689.htmlhttp://www.aygfsteel.com/balajinima/comments/146689.htmlhttp://www.aygfsteel.com/balajinima/articles/146689.html#Feedback0http://www.aygfsteel.com/balajinima/comments/commentRss/146689.htmlhttp://www.aygfsteel.com/balajinima/services/trackbacks/146689.html
目l构图:
option1.jpg

index.jsp:
<%@ page language="java" contentType="text/html; charset=utf-8"%>

<html>
  
<head>
    
<title>My JSP 'index.jsp' starting page</title>
    
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    
<SCRIPT type="text/javascript">
        var req;
        window.onload
=function(){
        }
        
        function Change_Select()
        {
            var zhi
=document.getElementById('hero').value;
            var url
="select?id="+escape(zhi);
            
if(window.XMLHttpRequest)
            {
                req
=new XMLHttpRequest();
            }
else if(window.ActiveXObject)
            {
                req
=new ActiveXObject("Microsoft.XMLHTTP");
            }
            
            
if(req)
            {
                req.open(
"GET",url,true);
                req.onreadystatechange
=callback;
                req.send(
null);
            }
        }
        
        function callback()
        {
            
if(req.readyState == 4)
            {
                
if(req.status == 200)
                {
                    parseMessage();
                }
else{
                    alert(
"Not able to retrieve description"+req.statusText);
                }
            }
        }
        
        function parseMessage()
        {
            var xmlDoc
=req.responseXML.documentElement;
            var xSel
=xmlDoc.getElementsByTagName('select');
            var select_root
=document.getElementById('skill');
            select_root.options.length
=0;
            
            
for(var i=0;i<xSel.length;i++)
            {
                var xValue
=xSel[i].childNodes[0].firstChild.nodeValue;
                var xText
=xSel[i].childNodes[1].firstChild.nodeValue;
                var option
=new Option(xText,xValue);
                
try{
                    select_root.add(option);
                }
catch(e){
                }
            }
            
            
        }
    
</SCRIPT>
  
</head>
  
  
<body>
    
<div align="center">
        
<form name="form1" method="post" action="">
            
<TABLE width="70%" boder="0" cellspacing="0">
                
<TR>
                    
<TD align="center">Double Select Box</TD>
                
</TR>
                
<TR>
                    
<TD>
                        
<SELECT name="hero" id="hero" onChange="Change_Select()">
                            
<OPTION value="0">Unbounded</OPTION>
                            
<OPTION value="1">D.K.</OPTION>
                            
<OPTION value="2">NEC.</OPTION>
                            
<OPTION value="3">BOSS</OPTION>
                        
</SELECT>
                        
<SELECT name="skill" id="skill">
                            
<OPTION value="0">Unbounded</OPTION>
                        
</SELECT>
                    
</TD>
                
</TR>
                
<TR><td>&nbsp;</td></TR>
            
</TABLE>
        
</form>
    
</div>
  
</body>
</html>

SelectServlet.java:
package com;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class SelectServlet extends HttpServlet {

    
/**
     * Constructor of the object.
     
*/
    
public SelectServlet() {
        
super();
    }

    
/**
     * Destruction of the servlet. <br>
     
*/
    
public void destroy() {
        
super.destroy(); // Just puts "destroy" string in log
        
// Put your code here
    }

    
/**
     * The doGet method of the servlet. <br>
     *
     * This method is called when a form has its tag value method equals to get.
     * 
     * 
@param request the request send by the client to the server
     * 
@param response the response send by the server to the client
     * 
@throws ServletException if an error occurred
     * 
@throws IOException if an error occurred
     
*/
    
public void doGet(HttpServletRequest request, HttpServletResponse response)
            
throws ServletException, IOException {
        response.setContentType(
"text/xml");
        response.setHeader(
"Cache-Control","no-cache");
        
        String targetId
=request.getParameter("id").toString();
        String xml_start
="<selects>";
        String xml_end
="</selects>";
        String xml
="";
        
if(targetId.equalsIgnoreCase("0")){
            xml
="<select><value>0</value><text>Unbounded</text></select>";
        }
else if(targetId.equalsIgnoreCase("1")){
            xml
="<select><value>1</value><text>Mana Burn</text></select>";
            xml 
+="<select><value>2</value><text>Death Coil</text></select>";
            xml 
+="<select><value>3</value><text>Unholy Aura</text></select>";
            xml 
+="<select><value>4</value><text>Unholy Fire</text></select>";
        }
else if(targetId.equalsIgnoreCase("2")){
            xml
="<select><value>1</value><text>Corprxplode</text></select>";
            xml 
+="<select><value>2</value><text>Raise Dead</text></select>";
            xml 
+="<select><value>3</value><text>Brilliance Aura</text></select>";
            xml 
+="<select><value>4</value><text>Aim Aura</text></select>";
        }
else{
            xml
="<select><value>1</value><text>Rain of Chaos</text></select>";
            xml 
+="<select><value>2</value><text>Finger of Death</text></select>";
            xml 
+="<select><value>3</value><text>Bash</text></select>";
            xml 
+="<select><value>4</value><text>Summon Doom</text></select>";
        }
        String last_xml
=xml_start+xml+xml_end;
        response.getWriter().write(last_xml);
    }

    
/**
     * The doPost method of the servlet. <br>
     *
     * This method is called when a form has its tag value method equals to post.
     * 
     * 
@param request the request send by the client to the server
     * 
@param response the response send by the server to the client
     * 
@throws ServletException if an error occurred
     * 
@throws IOException if an error occurred
     
*/
    
public void doPost(HttpServletRequest request, HttpServletResponse response)
            
throws ServletException, IOException {

        doGet(request,response);
    }

    
/**
     * Initialization of the servlet. <br>
     *
     * 
@throws ServletException if an error occure
     
*/
    
public void init() throws ServletException {
        
// Put your code here
    }

}

web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
    xmlns
="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation
="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <servlet>
    
<servlet-name>SelectServlet</servlet-name>
    
<servlet-class>com.SelectServlet</servlet-class>
  
</servlet>

  
<servlet-mapping>
    
<servlet-name>SelectServlet</servlet-name>
    
<url-pattern>/select</url-pattern>
  
</servlet-mapping>
    
    
<welcome-file-list>
        
<welcome-file>index.jsp</welcome-file>
    
</welcome-file-list>
</web-app>

q行l果图:
option2.jpg

]]>
java dtxt文本文g(转发)http://www.aygfsteel.com/balajinima/articles/140810.html李云?/dc:creator>李云?/author>Wed, 29 Aug 2007 03:01:00 GMThttp://www.aygfsteel.com/balajinima/articles/140810.htmlhttp://www.aygfsteel.com/balajinima/comments/140810.htmlhttp://www.aygfsteel.com/balajinima/articles/140810.html#Feedback0http://www.aygfsteel.com/balajinima/comments/commentRss/140810.htmlhttp://www.aygfsteel.com/balajinima/services/trackbacks/140810.html
d所有的文g数据
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.io.*,java.lang.*"%>
<html>
<head>
<title>d所有的文g数据</title>
</head>
<body>
<%
String path=request.getRealPath(".");
FileReader fr=new FileReader(path + "file://ReadData.txt/");
//关键在于dq程中,要判断所d的字W是否已l到了文件的末尾Qƈ且这个字W是不是文g中的断行W,卛_断该字符值是否ؓ13?br />int c=fr.read();//从文件中d一个字W?br />//判断是否已读到文件结?br />while(c!=-1){
 out.print((char)c);//输出d的数?br /> c=fr.read();//从文件中l箋d数据
 if(c==13){//判断是否为断行字W?br />  out.print("<br>");//输出分行标签
  fr.skip(1);//略过一个字W?br />  //c=fr.read();//d一个字W?br /> }
}
fr.close();
%>
</body>
</html>

一行一行读取数?br /><%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.io.*"%>
<html>
<head>
<title>文gd</title>
</head>
<body>
<%
 String path=request.getRealPath("");//取得当前目录的\?br /> FileReader fr=new FileReader(path + "file://file//inc//t.txt%22);//建立FileReader对象Qƈ实例化ؓfr
 BufferedReader br=new BufferedReader(fr);//建立BufferedReader对象Qƈ实例化ؓbr
 String Line=br.readLine();//从文件读取一行字W串
 //判断d到的字符串是否不为空
 while(Line!=null){
  out.println(Line + "<br>");//输出从文件中d的数?br />  Line=br.readLine();//从文件中l箋d一行数?br /> }
 br.close();//关闭BufferedReader对象
 fr.close();//关闭文g
%>
</body>
</html>

略过文g中的字符不读?br /><%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.io.*"%>
<html>
<head>
<title>略过字节不读?lt;/title>
</head>
<body>
<%
String path=request.getRealPath(".");
FileReader fr=new FileReader(path + "file://ReadData.txt/");
fr.skip(2);//跌2个字?br />int c=fr.read();//d一个字?br />while(c!=-1){
 out.print((char)c);
 c=fr.read();
}
fr.close();
%>
</body>
</html>

数据写入文?br /><%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.io.*"%>
<html>
<head>
<title>数据写入文?lt;/title>
</head>
<body>
<%
String path=request.getRealPath(".");
FileWriter fw=new FileWriter(path + "file://WriteData.txt%22);//建立FileWriter对象Qƈ实例化fw
//字W串写入文g
fw.write("大家好!");
fw.write("本书是《JSP~程技巧?);
fw.write("请多多指教!");
fw.write("email:stride@sina.com");
fw.close();
FileReader fr=new FileReader(path + "file://WriteData.txt/");
BufferedReader br=new BufferedReader(fr);//建立BufferedReader对象Qƈ实例化ؓbr
String Line=br.readLine();
//d一行数?br />out.println(Line + "<br>");
br.close();//关闭BufferedReader对象
fr.close();
%>
</body>
</html>

写入文件的数据分行
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.io.*"%>
<html>
<head>
<title>写入文件的数据分行</title>
</head>
<body>
<%
String path=request.getRealPath(".");
FileWriter fw=new FileWriter(path + "file://WriteData.txt/");
BufferedWriter bw=new BufferedWriter(fw);
bw.write("大家好!");
bw.write("本书是《JSP~程技巧》?);
bw.newLine();//断行
bw.write("请多多指教!");
bw.newLine();//断行
bw.write("email: stride@sina.com");
bw.flush();//数据更新至文g
fw.close();//关闭文g?br />out.println("写入文g内容为:<br>");
FileReader fr=new FileReader(path + "file://WriteData.txt/");
BufferedReader br=new BufferedReader(fr);
String Line=br.readLine();//d一行数?br />while(Line!=null){
 out.println(Line + "<br>");
 Line=br.readLine();
}
fr.close();
%>
</body>
</html>

如何数据追加写入到文g
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.io.*"%>
<html>
<head>
<title>写入文件的数据分行</title>
</head>
<body>
<%
String path=request.getRealPath(".");
RandomAccessFile rf=new RandomAccessFile(path + "file://WriteData.txt%22,%22rw%22);//定义一个类RandomAccessFile的对象,q实例化
rf.seek(rf.length());//指针移动到文g末尾
rf.writeBytes("\nAppend a line to the file!");
rf.close();//关闭文g?br />out.println("写入文g内容为:<br>");
FileReader fr=new FileReader(path + "file://WriteData.txt/");
BufferedReader br=new BufferedReader(fr);//d文g的BufferedRead对象
String Line=br.readLine();
while(Line!=null){
 out.println(Line + "<br>");
 Line=br.readLine();
}
fr.close();//关闭文g
%>
</body>
</html>
 
import java.util.*;
import java.io.*;
public class ReadIni
{
  public static void main(String[] args)
    throws Exception
  {
    Properties proDB = new Properties();
    FileInputStream in = new FileInputStream("DBConfig.ini");
    proDB.load(in);
    String jdbc = proDB.getProperty("jdbc");
    String dburl = proDB.getProperty("dburl");
    String userid = proDB.getProperty("userid");
    String password = proDB.getProperty("password");

    System.out.println(jdbc);
    System.out.println(dburl);
    System.out.println(userid);
    System.out.println(password);
  }
}

DBConfig.ini:

dburl=jdbcracle:thin:@202.16.147.104:1521ub
userid=user
password=password
jdbc=oracle.jdbc.driver.OracleDriver

 



]]>
单的jsp控制分页http://www.aygfsteel.com/balajinima/articles/134185.html李云?/dc:creator>李云?/author>Fri, 03 Aug 2007 02:55:00 GMThttp://www.aygfsteel.com/balajinima/articles/134185.htmlhttp://www.aygfsteel.com/balajinima/comments/134185.htmlhttp://www.aygfsteel.com/balajinima/articles/134185.html#Feedback0http://www.aygfsteel.com/balajinima/comments/commentRss/134185.htmlhttp://www.aygfsteel.com/balajinima/services/trackbacks/134185.html
<%
 //分页昄
 int num = 0;
 int countall = infolist.size();//L
 int pageSize = 28;//每页数量
 int pageCount;//d|
 int pageNo = 1;//当前号
 int mixNum;   //当前|据开始号
 int maxNum;
 
 String pNO = request.getParameter("pageNo");

 if((pNO != null) && (!pNO.equals(""))){

  pageNo=Integer.parseInt(pNO);
 }

 if (countall > pageSize) {
  if ((countall / pageSize) * pageSize < countall) {
   pageCount = (countall / pageSize) + 1;
  }
  else{
   pageCount = (countall / pageSize);
  }
 }
 
 else if (countall / pageSize == 1) {
  pageCount = 1;
 }
 else {
  pageCount = 1;
 }

 if (pageNo >= pageCount) {
  pageNo = pageCount;
 }
 else if (pageNo < 1) {
  pageNo = 1;
 }
    
    
 mixNum = (pageNo-1) * pageSize;
 maxNum = pageNo*pageSize;
 
 if((mixNum + pageSize) > countall){
  maxNum = countall;
 }
 else{
  maxNum = mixNum+pageSize;
 }
%>
---------------------------------------------------------------------------------------------
<html>
<head>
<script language="JavaScript" type="text/JavaScript">
function check(){
 if(Jtrim(document.forms.meslistForm.textfield.value)==""){
  alert("误入页?);
 }
 else if(checkNum(document.forms.meslistForm.textfield.value)){
  window.location.href="?pageNo="+document.forms.meslistForm.textfield.value;
 }else{
  alert("误入数字?);
 }
 document.forms.meslistForm.textfield.value = "";
 document.forms.meslistForm.textfield.select();
}
function checkNum(str){
return str.match(/\D/)==null;
}

function Jtrim(str)
{

        var i = 0;
        var len = str.length;
        if ( str == "" ) return( str );
        j = len -1;
        flagbegin = true;
        flagend = true;
        while ( flagbegin == true && i< len)
        {
           if ( str.charAt(i) == " " )
                {
                  i=i+1;
                  flagbegin=true;
                }
                else
                {
                        flagbegin=false;
                }
        }

        while  (flagend== true && j>=0)
        {
            if (str.charAt(j)==" ")
                {
                        j=j-1;
                        flagend=true;
                }
                else
                {
                        flagend=false;
                }
        }

        if ( i > j ) return ("")

        trimstr = str.substring(i,j+1);
        return trimstr;
}</script>
</head>


<body>
<%
 for(int i=mixNum;i<maxNum;i++){
 //此处用list循环下标用i
 }         
%>

 

 

 

 


 <table align="center" width="100%" border="0" cellspacing="0" cellpadding="0">
   <tr>
    <td width="4%" height="27" align="center" valign="middle"
     class="word">&nbsp;</td>
    <td width="56%" align="center" valign="middle" class="word"><img
     src="<%=path%>/images/pagination/list_home.gif" width="13"
     height="13">&nbsp; <%
      if (pageNo > 1) {
     %> <a href="?pageNo=1">&nbsp;首页</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <%
                     }else{
                    %> &nbsp;首页&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <%
                     }
                    %> <img src="<%=path%>/images/pagination/list_pre.gif"
     width="13" height="13"> <%
      if (pageNo > 1) {
     %> <a href="?pageNo=<%=(pageNo-1)%>">&nbsp;前一?lt;/a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <%
                     }else{
                    %> &nbsp;前一?amp;nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <%
                     }
                    %> <img
     src="<%=path%>/images/pagination/list_next.gif" width="13"
     height="13"> <%
      if (pageCount>pageNo) {
     %> <a href="?pageNo=<%=(pageNo+1)%>">&nbsp;&nbsp;后一?lt;/a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <%
                     }else{
                    %> &nbsp;&nbsp;后一?amp;nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <%
                     } 
                    %> <img src="<%=path%>/images/pagination/list_end.gif"
     width="13" height="13"> <%
      if (pageCount>pageNo) {
     %> <a href="?pageNo=<%=(pageCount)%>">&nbsp;&nbsp;N</a> <%
                     }else{
                    %> &nbsp;&nbsp;N <%
                     } 
                    %>
    <td width="26%" align="center" valign="middle" class="word">?lt;%=pageCount%>?amp;nbsp;W?lt;%=pageNo%>?amp;nbsp;
    跌{</td>
    <td width="4%" align="center" valign="middle" class="word"><input
     name="textfield" type="text" class="input" size="1"></td>
    <td width="6%" align="center" valign="middle" class="word"><a
     href="javascript:check()"><img
     src="<%=path%>/images/pagination/go.gif" border="0" width="18"
     height="18"></a></td>

    <td width="4%" align="left" valign="middle" class="word">&nbsp;</td>
   </tr>
  </table></body>  
</html>



]]>
JSP分页技术实?[转脓]http://www.aygfsteel.com/balajinima/articles/132962.html李云?/dc:creator>李云?/author>Sat, 28 Jul 2007 04:26:00 GMThttp://www.aygfsteel.com/balajinima/articles/132962.htmlhttp://www.aygfsteel.com/balajinima/comments/132962.htmlhttp://www.aygfsteel.com/balajinima/articles/132962.html#Feedback0http://www.aygfsteel.com/balajinima/comments/commentRss/132962.htmlhttp://www.aygfsteel.com/balajinima/services/trackbacks/132962.html  其它常见的方法还有每ơ翻都查询一ơ数据库Q从ResultSet中只取出一|据(使用rs.last();rs.getRow()获得总计录条敎ͼ使用rs.absolute()定位到本v始记录)。这U方式在某些数据?如oracle)的JDBC实现中差不多也是需要遍历所有记录,实验证明在记录数很大旉度非常慢?br />  至于~存l果集ResultSet的方法则完全是一U错误的做法。因为ResultSet在Statement或Connection关闭时也会被关闭Q如果要使ResultSet有效势必长时间占用数据库q接?

  因此比较好的分页做法应该是每ơ翻늚时候只从数据库里检索页面大的块区的数据。这栯然每ơ翻都需要查询数据库Q但查询出的记录数很,|络传输数据量不大,如果使用q接池更可以略过最耗时的徏立数据库q接q程。而在数据库端有各U成熟的优化技术用于提高查询速度Q比在应用服务器层做~存有效多了?/p>

  在oracle数据库中查询l果的行号用伪列ROWNUM表示Q从1开始)。例如select * from employee where rownum<10 q回?0条记录。但因ؓrownum是在查询之后排序之前赋值的Q所以查询employee按birthday排序的第100?20条记录应该这么写Q?br />[pre]        select * from (
            select my_table.*, rownum as my_rownum from (
                select name, birthday from employee order by birthday
            ) my_table where rownum <120
        ) where my_rownum>=100
[/pre]
  mySQL可以使用LIMIT子句Q?br />    select name, birthday from employee order by birthday LIMIT 99,20
  DB2有rownumber()函数用于获取当前行数?br />  SQL Server没研I过Q可以参考这文章:http://www.csdn.net/develop/article/18/18627.shtm

  在WebE序中分会被频J用,但分늚实现l节却是~程q程中比较麻烦的事情。大多分|C的查询操作都同旉要处理复杂的多重查询条gQsql语句需要动态拼接组成,再加上分需要的记录定位、总记录条数查询以及查询结果的遍历、封装和昄Q程序会变得很复杂ƈ且难以理解。因此需要一些工L化分代码,使程序员专注于业务逻辑部分。下面是我设计的两个工具c:
  PagedStatement  装了数据库q接、总记录数查询、分|询、结果数据封装和关闭数据库连接等操作Qƈ使用了PreparedStatement支持动态设|参数?br />  RowSetPage  参考PetStore的page by page iterator模式Q?设计RowSetPage用于装查询l果Q用OracleCachedRowSet~存查询出的一|据,关于使用CachedRowSet装数据库查询结果请参考JSP面查询昄常用模式Q以及当前页码、总记录条数、当前记录数{信息, q且可以生成单的HTML分页代码?br />  PagedStatement 查询的结果封装成RowsetPage?/p>

  下面是简单的使用CZQ?/p>

 

    //DAO查询数据部分代码Q?
    ?
    public RowSetPage getEmployee(String gender, int pageNo) throws Exception{
        String sql="select emp_id, emp_code,  user_name, real_name from employee where gender =?";
       //使用Oracle数据库的分页查询实现,每页昄5?
        PagedStatement pst =new PagedStatementOracleImpl(sql,  pageNo, 5);
        pst.setString(1, gender);
        return pst.executeQuery();
    }


    //Servlet处理查询h部分代码Q?

    ?
    int pageNo;
    try{
        //可以通过参数pageno获得用户选择的页?
        pageNo = Integer.parseInt(request.getParameter("pageno") );
    }catch(Exception ex){
        //默认为第一?
        pageNo=1;
    }
    String gender = request.getParameter("gender" );
    request.setAttribute("empPage", myBean.getEmployee(gender, pageNo) );
    ?

    //JSP昄部分代码
<%@ page import = "page.RowSetPage"%>
    ?
    <script language="javascript">
        function doQuery(){
            form1.actionType.value="doQuery";
            form1.submit();
    }
    </script>
    ?
    <form name=form1 method=get>
      <input type=hidden name=actionType>
      性别Q?
      <input type=text name=gender size=1 value="<%=request.getParameter("gender")%>">
      <input type=button value=" 查询 " onclick="doQuery()">
<%
    RowSetPage empPage = (RowSetPage)request.getAttribute("empPage");
    if (empPage == null ) empPage = RowSetPage.EMPTY_PAGE;
%>
    ?
    <table  cellspacing="0" width="90%">
        <tr> <td>ID</td> <td>代码</td> <td>用户?lt;/td> <td>姓名</td>  </tr>
<%
    javax.sql.RowSet empRS = (javax.sql.RowSet) empPage.getRowSet();
    if (empRS!=null) while (empRS.next() ) {
%>
        <tr>  
            <td><%= empRS.getString("EMP_ID")%></td> 
            <td><%= empRS.getString("EMP_CODE")%></td>  
            <td><%= empRS.getString("USER_NAME")%></td> 
            <td><%= empRS.getString("REAL_NAME")%></td>  
        </tr>
<%
    }// end while
%>
        <tr>
<%
    //昄总页数和当前|(pageno)以及分页代码?
    //此处doQuery为页面上提交查询动作的javascript函数名, pageno为标识当前页码的参数?
%>
            <td colspan=4><%= empPage .getHTML("doQuery", "pageno")%></td>
        </tr>
    </table>
    </form>

  效果如图Q?/p>


  因ؓ分页昄一般都会伴有查询条件和查询动作Q页面应已经有校验查询条件和提交查询的javascriptҎQ如上面的doQueryQ,所以RowSetPage.getHTML()生成的分代码在用户选择新页码时直接回调前面的处理提交查询的javascriptҎ。注意在昄查询l果的时候上ơ的查询条g也需要保持,?lt;input type=text name=gender size=1 value="<%=request.getParameter("gender")%>">。同时由于页码的参数名可以指定,因此也支持在同一面中有多个分页区?br />  另一U分代码实现是生成每一늚URLQ将查询参数和页码作为QueryString附在URL后面。这U方法的~陷是在查询条g比较复杂旉以处理,q且需要指定处理查询动作的servletQ可能不适合某些定制的查询操作?br />  如果对RowSetPage.getHTML()生成的默认分代码不满意可以~写自己的分处理代码,RowSetPage提供了很多getterҎ用于获取相关信息Q如当前늠、总页数?总记录数和当前记录数{)?br />  在实际应用中可以分|询和昄做成jsp taglibQ?q一步简化JSP代码Q屏蔽Java Code?/p>

附:分页工具cȝ源代码, 有注释,应该很容易理解?/p>

1.Page.java
2.RowSetPage.java(RowSetPagel承Page)
3.PagedStatement.java
4.PagedStatementOracleImpl.java(PagedStatementOracleImpll承PagedStatement)

 

您可以Q意用这些源代码Q但必须保留author evan_zhao@hotmail.com字样


///////////////////////////////////
//
//  Page.java
//  author: evan_zhao@hotmail.com
//
///////////////////////////////////

package page;

import java.util.List;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;


/**
 * Title: 分页对象<br>
 * Description:  用于包含数据及分信息的对象<br>
 *               PagecdC用于昄分页信息的基本方法,但未指定所含数据的cdQ?
 *               可根据需要实C特定方式l织数据的子c,<br>
 *               如RowSetPage以RowSet装数据QListPage以List装数据<br>
 * Copyright:    Copyright (c) 2002 <br>
 * @author evan_zhao@hotmail.com <br>
 * @version 1.0
 */
public  class Page implements java.io.Serializable {
    public static final Page EMPTY_PAGE = new Page();
    public static final int  DEFAULT_PAGE_SIZE = 20;
    public static final  int MAX_PAGE_SIZE = 9999;

    private int myPageSize = DEFAULT_PAGE_SIZE;

    private int start;
    private int avaCount,totalSize;
    private Object data;

    private int currentPageno;
    private int totalPageCount;

    /**
     * 默认构造方法,只构造空?
     */
    protected Page(){
        this.init(0,0,0,DEFAULT_PAGE_SIZE,new Object());
    }

    /**
     * 分页数据初始ҎQ由子类调用
     * @param start 本页数据在数据库中的起始位置
     * @param avaCount 本页包含的数据条?
     * @param totalSize 数据库中总记录条?
     * @param pageSize 本页定w
     * @param data 本页包含的数?
     */
    protected void init(int start, int avaCount, int totalSize, int pageSize, Object data){

        this.avaCount =avaCount;
        this.myPageSize = pageSize;

        this.start = start;
        this.totalSize = totalSize;

        this.data=data;

        //System.out.println("avaCount:"+avaCount);
        //System.out.println("totalSize:"+totalSize);
        if (avaCount>totalSize) {
            //throw new RuntimeException("记录条数大于L敎ͼQ?);
        }

        this.currentPageno = (start -1)/pageSize +1;
        this.totalPageCount = (totalSize + pageSize -1) / pageSize;

        if (totalSize==0 && avaCount==0){
            this.currentPageno = 1;
            this.totalPageCount = 1;
        }
        //System.out.println("Start Index to Page No: " + start + "-" + currentPageno);
    }

    public  Object getData(){
        return this.data;
    }

    /**
     * 取本|据容量(本页能包含的记录敎ͼ
     * @return 本页能包含的记录?
     */
    public int getPageSize(){
        return this.myPageSize;
    }

    /**
     * 是否有下一?
     * @return 是否有下一?
     */
    public boolean hasNextPage() {
      /*
        if (avaCount==0 && totalSize==0){
            return false;
        }
        return (start + avaCount -1) < totalSize;
       */
      return (this.getCurrentPageNo()<this.getTotalPageCount());
    }

    /**
     * 是否有上一?
     * @return  是否有上一?
     */
    public boolean hasPreviousPage() {
      /*
        return start > 1;
       */
      return (this.getCurrentPageNo()>1);
    }

    /**
     * 获取当前늬一条数据在数据库中的位|?
     * @return
     */
    public int getStart(){
        return start;
    }

    /**
     * 获取当前|后一条数据在数据库中的位|?
     * @return
     */
    public int getEnd(){
        int end = this.getStart() + this.getSize() -1;
        if (end<0) {
            end = 0;
        }
        return end;
    }

    /**
     * 获取上一늬一条数据在数据库中的位|?
     * @return 记录对应的rownum
     */
    public int getStartOfPreviousPage() {
        return Math.max(start-myPageSize, 1);
    }


    /**
     * 获取下一늬一条数据在数据库中的位|?
     * @return 记录对应的rownum
     */
    public int getStartOfNextPage() {
        return start + avaCount;
    }

    /**
     * 获取M늬一条数据在数据库中的位|,每页条数使用默认?
     * @param pageNo 号
     * @return 记录对应的rownum
     */
    public static int getStartOfAnyPage(int pageNo){
        return getStartOfAnyPage(pageNo, DEFAULT_PAGE_SIZE);
    }

    /**
     * 获取M늬一条数据在数据库中的位|?
     * @param pageNo 号
     * @param pageSize 每页包含的记录数
     * @return 记录对应的rownum
     */
    public static int getStartOfAnyPage(int pageNo, int pageSize){
        int startIndex = (pageNo-1) * pageSize + 1;
        if ( startIndex < 1) startIndex = 1;
        //System.out.println("Page No to Start Index: " + pageNo + "-" + startIndex);
        return startIndex;
    }

    /**
     * 取本包含的记录?
     * @return 本页包含的记录数
     */
    public int getSize() {
        return avaCount;
    }

    /**
     * 取数据库中包含的总记录数
     * @return 数据库中包含的总记录数
     */
    public int getTotalSize() {
        return this.totalSize;
    }

    /**
     * 取当前页?
     * @return 当前늠
     */
    public int getCurrentPageNo(){
        return  this.currentPageno;
    }

    /**
     * 取总页?
     * @return 总页?
     */
    public int getTotalPageCount(){
        return this.totalPageCount;
    }


    /**
     *
     * @param queryJSFunctionName 实现分页的JS脚本名字Q页码变动时会自动回调该Ҏ
     * @param pageNoParamName 늠参数名称
     * @return
     */
    public String getHTML(String queryJSFunctionName, String pageNoParamName){
        if (getTotalPageCount()<1){
            return "<input type='hidden' name='"+pageNoParamName+"' value='1' >";
        }
        if (queryJSFunctionName == null || queryJSFunctionName.trim().length()<1) {
            queryJSFunctionName = "gotoPage";
        }
        if (pageNoParamName == null || pageNoParamName.trim().length()<1){
            pageNoParamName = "pageno";
        }

        String gotoPage = "_"+queryJSFunctionName;

        StringBuffer html = new StringBuffer("\n");
        html.append("<script language=\"Javascript1.2\">\n")
             .append("function ").append(gotoPage).append("(pageNo){  \n")
             .append(  "   var curPage=1;  \n")
             .append(  "   try{ curPage = document.all[\"")
             .append(pageNoParamName).append("\"].value;  \n")
             .append(  "        document.all[\"").append(pageNoParamName)
             .append("\"].value = pageNo;  \n")
             .append(  "        ").append(queryJSFunctionName).append("(pageNo); \n")
             .append(  "        return true;  \n")
             .append(  "   }catch(e){ \n")
//             .append(  "      try{ \n")
//             .append(  "           document.forms[0].submit();  \n")
//             .append(  "      }catch(e){   \n")
             .append(  "          alert('未定义查询ҎQfunction ")
             .append(queryJSFunctionName).append("()'); \n")
             .append(  "          document.all[\"").append(pageNoParamName)
             .append("\"].value = curPage;  \n")
             .append(  "          return false;  \n")
//             .append(  "      }  \n")
             .append(  "   }  \n")
             .append(  "}")
             .append(  "</script>  \n")
             .append(  "");
        html.append( "<table  border=0 cellspacing=0 cellpadding=0 align=center width=80%>  \n")
             .append( "  <tr>  \n")
             .append( "    <td align=left><br>  \n");
        html.append(  "       ? ).append( getTotalPageCount() ).append( "?)
             .append(  "       [") .append(getStart()).append("..").append(getEnd())
             .append("/").append(this.getTotalSize()).append("]  \n")
             .append( "    </td>  \n")
             .append( "    <td align=right>  \n");
        if (hasPreviousPage()){
             html.append( "[<a href='javascript:").append(gotoPage)
             .append("(") .append(getCurrentPageNo()-1) 
             .append( ")'>上一?lt;/a>]   \n");
        }
        html.append(  "       W?)
             .append(   "        <select name='")
             .append(pageNoParamName).append("' onChange='javascript:")
             .append(gotoPage).append("(this.value)'>\n");
        String selected = "selected";
        for(int i=1;i<=getTotalPageCount();i++){
            if( i == getCurrentPageNo() )
                 selected = "selected";
            else selected = "";
            html.append( "      <option value='").append(i).append("' ")
              .append(selected).append(">").append(i).append("</option>  \n");
        }
        if (getCurrentPageNo()>getTotalPageCount()){
            html.append( "      <option value='").append(getCurrentPageNo())
            .append("' selected>").append(getCurrentPageNo())
            .append("</option>  \n");
        }
        html.append( "    </select>?\n");
        if (hasNextPage()){
             html.append( "    [<a href='javascript:").append(gotoPage)
               .append("(").append((getCurrentPageNo()+1)) 
               .append( ")'>下一?lt;/a>]   \n");
        }
        html.append( "</td></tr></table>  \n");

        return html.toString();

    }
}

 


///////////////////////////////////
//
//  RowSetPage.java
//  author: evan_zhao@hotmail.com
//
///////////////////////////////////
package page;

import javax.sql.RowSet;


/**
 * <p>Title: RowSetPage</p>
 * <p>Description: 使用RowSet装数据的分对?lt;/p>
 * <p>Copyright: Copyright (c) 2003</p>
 * @author evan_zhao@hotmail.com
 * @version 1.0
 */

public class RowSetPage extends Page {
    private javax.sql.RowSet rs;

    /**
     *I页
     */
    public static final RowSetPage EMPTY_PAGE = new RowSetPage();

    /**
     *默认构造方法,创徏I页
     */
    public RowSetPage(){
      this(null, 0,0);
    }

    /**
     *构造分对?
     *@param crs 包含一|据的OracleCachedRowSet
     *@param start 该页数据在数据库中的起始位置
     *@param totalSize 数据库中包含的记录L
     */
    public RowSetPage(RowSet crs, int start, int totalSize) {
        this(crs,start,totalSize,Page.DEFAULT_PAGE_SIZE);
    }

    /**
     *构造分对?
     *@param crs 包含一|据的OracleCachedRowSet
     *@param start 该页数据在数据库中的起始位置
     *@param totalSize 数据库中包含的记录L
     *@pageSize 本页能容U的记录?
     */
    public RowSetPage(RowSet crs, int start, int totalSize, int pageSize) {
        try{
            int avaCount=0;
            if (crs!=null) {
                crs.beforeFirst();
                if (crs.next()){
                    crs.last();
                    avaCount = crs.getRow();
                }
                crs.beforeFirst();
            }
            rs = crs;
            super.init(start,avaCount,totalSize,pageSize,rs);
        }catch(java.sql.SQLException sqle){
            throw new RuntimeException(sqle.toString());
        }
    }

    /**
     *取分对象中的记录数?
     */
    public javax.sql.RowSet getRowSet(){
        return rs;
    }


}

 


///////////////////////////////////
//
//  PagedStatement.java
//  author: evan_zhao@hotmail.com
//
///////////////////////////////////

package page;

import foo.DBUtil;

import java.math.BigDecimal;
import java.util.List;
import java.util.Iterator;
import java.util.Collections;

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.PreparedStatement;
import java.sql.Timestamp;
import javax.sql.RowSet;

/**
 * <p>Title: 分页查询</p>
 * <p>Description: Ҏ查询语句和页码查询出当页数据</p>
 * <p>Copyright: Copyright (c) 2002</p>
 * @author evan_zhao@hotmail.com
 * @version 1.0
 */
public abstract class PagedStatement {
    public final static int MAX_PAGE_SIZE = Page.MAX_PAGE_SIZE;

    protected String countSQL, querySQL;
    protected int pageNo,pageSize,startIndex,totalCount;
    protected javax.sql.RowSet rowSet;
    protected RowSetPage rowSetPage;

    private List boundParams;

    /**
     * 构造一查询出所有数据的PageStatement
     * @param sql  query sql
     */
    public PagedStatement(String sql){
        this(sql,1,MAX_PAGE_SIZE);
    }


    /**
     * 构造一查询出当|据的PageStatement
     * @param sql  query sql
     * @param pageNo  늠
     */
    public PagedStatement(String sql, int pageNo){
        this(sql, pageNo, Page.DEFAULT_PAGE_SIZE);
    }

    /**
     * 构造一查询出当|据的PageStatementQƈ指定每页昄记录条数
     * @param sql query sql
     * @param pageNo 늠
     * @param pageSize 每页定w
     */
    public PagedStatement(String sql, int pageNo, int pageSize){
        this.pageNo = pageNo;
        this.pageSize = pageSize;
        this.startIndex = Page.getStartOfAnyPage(pageNo, pageSize);
        this.boundParams = Collections.synchronizedList(new java.util.LinkedList());

        this.countSQL = "select count(*) from ( " + sql +") ";
        this.querySQL = intiQuerySQL(sql, this.startIndex, pageSize);
    }


    /**
     *生成查询一|据的sql语句
     *@param sql 原查询语?
     *@startIndex 开始记录位|?
     *@size 需要获取的记录?
     */
    protected abstract  String intiQuerySQL(String sql, int startIndex, int size);


    /**
     *使用l出的对象设|指定参数的?
     *@param index W一个参Cؓ1Q第二个?Q。。?
     *@param obj 包含参数值的对象
     */
    public void setObject(int index, Object obj) throws SQLException{
        BoundParam bp = new BoundParam(index, obj);
        boundParams.remove(bp);
        boundParams.add( bp);
    }

    /**
     *使用l出的对象设|指定参数的?
     *@param index W一个参Cؓ1Q第二个?Q。。?
     *@param obj 包含参数值的对象
     *@param targetSqlType 参数的数据库cd
     */
    public void setObject(int index, Object obj, int targetSqlType) throws SQLException{
        BoundParam bp = new BoundParam(index, obj, targetSqlType);
        boundParams.remove(bp);
        boundParams.add(bp );
    }

    /**
     *使用l出的对象设|指定参数的?
     *@param index W一个参Cؓ1Q第二个?Q。。?
     *@param obj 包含参数值的对象
     *@param targetSqlType 参数的数据库cd(帔R定义在java.sql.Types?
     *@param scale _ֺQ小数点后的位数
     * Q只对targetSqlType是Types.NUMBER或Types.DECIMAL有效Q其它类型则忽略Q?
     */
    public void setObject(int index, Object obj, int targetSqlType, int scale) throws SQLException{
        BoundParam bp = new BoundParam(index, obj, targetSqlType, scale) ;
        boundParams.remove(bp);
        boundParams.add(bp);
    }

    /**
     *使用l出的字W串讄指定参数的?
     *@param index W一个参Cؓ1Q第二个?Q。。?
     *@param str 包含参数值的字符?
     */
    public void setString(int index, String str)throws SQLException{
        BoundParam bp = new BoundParam(index, str)  ;
        boundParams.remove(bp);
        boundParams.add(bp);
    }

    /**
     *使用l出的字W串讄指定参数的?
     *@param index W一个参Cؓ1Q第二个?Q。。?
     *@param timestamp 包含参数值的旉?
     */
    public void setTimestamp(int index, Timestamp timestamp)throws SQLException{
        BoundParam bp = new BoundParam(index, timestamp)  ;
        boundParams.remove(bp);
        boundParams.add( bp );
    }

    /**
     *使用l出的整数设|指定参数的?
     *@param index W一个参Cؓ1Q第二个?Q。。?
     *@param value 包含参数值的整数
     */
    public void setInt(int index, int value)throws SQLException{
        BoundParam bp =  new BoundParam(index, new Integer(value))  ;
        boundParams.remove(bp);
        boundParams.add( bp );
    }

    /**
     *使用l出的长整数讄指定参数的?
     *@param index W一个参Cؓ1Q第二个?Q。。?
     *@param value 包含参数值的长整?
     */
    public void setLong(int index, long value)throws SQLException{
        BoundParam bp =  new BoundParam(index, new Long(value))  ;
        boundParams.remove(bp);
        boundParams.add( bp );
    }

    /**
     *使用l出的双_ֺ点数设|指定参数的?
     *@param index W一个参Cؓ1Q第二个?Q。。?
     *@param value 包含参数值的双精度QҎ
     */
    public void setDouble(int index, double value)throws SQLException{
        BoundParam bp =  new BoundParam(index, new Double(value))   ;
        boundParams.remove(bp);
        boundParams.add( bp);
    }

    /**
     *使用l出的BigDecimal讄指定参数的?
     *@param index W一个参Cؓ1Q第二个?Q。。?
     *@param bd 包含参数值的BigDecimal
     */
    public void setBigDecimal(int index, BigDecimal bd)throws SQLException{
        BoundParam bp =   new BoundParam(index, bd )   ;
        boundParams.remove(bp);
        boundParams.add( bp);
    }

    private  void setParams(PreparedStatement pst) throws SQLException{
        if (pst==null || this.boundParams==null || this.boundParams.size()==0 ) return ;
        BoundParam param;
        for (Iterator itr = this.boundParams.iterator();itr.hasNext();){
            param = (BoundParam) itr.next();
            if  (param==null) continue;
            if (param.sqlType == java.sql.Types.OTHER){
                pst.setObject(param.index, param.value);
            }else{
                pst.setObject(param.index, param.value, param.sqlType, param.scale);
            }
        }
    }

 

    /**
     * 执行查询取得一|据,执行l束后关闭数据库q接
     * @return RowSetPage
     * @throws SQLException
     */
    public  RowSetPage executeQuery() throws SQLException{
        System.out.println("executeQueryUsingPreparedStatement");
        Connection conn = DBUtil.getConnection();
        PreparedStatement pst = null;
        ResultSet rs = null;
        try{
            pst = conn.prepareStatement(this.countSQL);
            setParams(pst);
            rs =pst.executeQuery();
            if (rs.next()){
                totalCount = rs.getInt(1);
            } else {
                totalCount = 0;
            }

            rs.close();
            pst.close();

            if (totalCount < 1 ) return RowSetPage.EMPTY_PAGE;

            pst = conn.prepareStatement(this.querySQL);
            System.out.println(querySQL);
            pst.setFetchSize(this.pageSize);
            setParams(pst);
            rs =pst.executeQuery();
            //rs.setFetchSize(pageSize);

            this.rowSet = populate(rs);

            rs.close();
            rs = null;
            pst.close();
            pst = null;

            this.rowSetPage = new RowSetPage(this.rowSet,startIndex,totalCount,pageSize);
            return this.rowSetPage;
        }catch(SQLException sqle){
            //System.out.println("executeQuery SQLException");
            sqle.printStackTrace();
            throw sqle;
        }catch(Exception e){
            e.printStackTrace();
            throw new RuntimeException(e.toString());
        }finally{
            //System.out.println("executeQuery finally");
            DBUtil.close(rs, pst, conn);
        }
    }

    /**
     *ResultSet数据填充qCachedRowSet
     */
    protected abstract RowSet populate(ResultSet rs) throws SQLException;

    /**
     *取封装成RowSet查询l果
     *@return RowSet
     */
    public javax.sql.RowSet getRowSet(){
        return this.rowSet;
    }


    /**
     *取封装成RowSetPage的查询结?
     *@return RowSetPage
     */
    public RowSetPage getRowSetPage() {
        return this.rowSetPage;
    }

 

    /**
     *关闭数据库连?
     */
    public void close(){
        //因ؓ数据库连接在查询l束或发生异常时卛_闭,此处不做M事情
        //留待扩充?
    }

 

    private class BoundParam {
        int index;
        Object value;
        int sqlType;
        int scale;

        public BoundParam(int index, Object value) {
            this(index, value, java.sql.Types.OTHER);
        }

        public BoundParam(int index, Object value, int sqlType) {
            this(index, value, sqlType, 0);
        }

        public BoundParam(int index, Object value, int sqlType, int scale) {
            this.index = index;
            this.value = value;
            this.sqlType = sqlType;
            this.scale = scale;
        }

        public boolean equals(Object obj){
            if (obj!=null && this.getClass().isInstance(obj)){
                BoundParam bp = (BoundParam)obj;
                if (this.index==bp.index) return true;
            }
            return false;
        }
    }

}


///////////////////////////////////
//
//  PagedStatementOracleImpl.java
//  author: evan_zhao@hotmail.com
//
///////////////////////////////////
package page;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.sql.RowSet;
import oracle.jdbc.rowset.OracleCachedRowSet;

/**
 * <p>Title: 分页查询Oracle数据库实?lt;/p>
 * <p>Copyright: Copyright (c) 2002</p>
 * @author evan_zhao@hotmail.com
 * @version 1.0
 */
public class PagedStatementOracleImpl extends PagedStatement {

    /**
     * 构造一查询出所有数据的PageStatement
     * @param sql  query sql
     */
    public PagedStatementOracleImpl(String sql){
        super(sql);
    }


    /**
     * 构造一查询出当|据的PageStatement
     * @param sql  query sql
     * @param pageNo  늠
     */
    public PagedStatementOracleImpl(String sql, int pageNo){
        super(sql, pageNo);
    }

    /**
     * 构造一查询出当|据的PageStatementQƈ指定每页昄记录条数
     * @param sql query sql
     * @param pageNo 늠
     * @param pageSize 每页定w
     */
    public PagedStatementOracleImpl(String sql, int pageNo, int pageSize){
        super(sql, pageNo, pageSize);
    }


    /**
     *生成查询一|据的sql语句
     *@param sql 原查询语?
     *@startIndex 开始记录位|?
     *@size 需要获取的记录?
     */
    protected String intiQuerySQL(String sql, int startIndex, int size){
        StringBuffer querySQL = new StringBuffer();
        if (size != super.MAX_PAGE_SIZE) {
            querySQL.append("select * from (select my_table.*,rownum as my_rownum from(")
                    .append(  sql)
                    .append(") my_table where rownum<").append(startIndex + size)
                    .append(") where my_rownum>=").append(startIndex);
        } else {
            querySQL.append("select * from (select my_table.*,rownum as my_rownum from(")
                    .append(sql)
                    .append(") my_table ")
                    .append(") where my_rownum>=").append(startIndex);
        }
        return querySQL.toString();
    }

    /**
     *ResultSet数据填充qCachedRowSet
     */
    protected  RowSet populate(ResultSet rs) throws SQLException{
        OracleCachedRowSet ocrs = new OracleCachedRowSet();
        ocrs.populate(rs);
        return ocrs;
    }

}

 



]]>
վ֩ģ壺 ٷ| | | | | Ѱ| | | | | ԭ| ѧ| ˷| ״| ƽ| Ͼ| | | ݳ| | | | | ؼ| | | | | | | | | | | Ԫ| | ֲ| | | ȫ| |