锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import com.mdcl.mocha.fe.developer.template.util.TemplateUtil;
public class ParamUtil {
聽/**
聽 * 鎶妑equest鍙栧埌鐨勫弬鏁版斁鍒頒竴涓狹ap涓?br />聽 * @param request
聽 * @return
聽 */
聽public static Map parseRequest(HttpServletRequest request){
聽聽Map map = new HashMap();
聽聽String key = null;
聽聽String value = null;
聽聽聽聽聽聽聽 for(Enumeration enumeration = request.getParameterNames(); enumeration.hasMoreElements(); map.put(key, value))
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 key = (String)enumeration.nextElement();
聽聽聽聽聽聽聽聽聽聽聽 String as[] = request.getParameterValues(key);
聽聽聽聽聽聽聽聽聽聽聽 value = as[0];
聽聽聽聽聽聽聽聽聽聽聽 for(int i = 1; i < as.length; i++)
聽聽聽聽聽聽聽聽聽聽聽 聽value = value + "," +as[i];
聽聽聽聽聽聽聽 }
聽聽return map;
聽}
}
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);
聽}
}
Date created = new Date(session.getCreationTime());
//寰楀埌session瀵硅薄鍒涘緩鐨勬椂闂?br />Date accessed = new Date(session.getLastAccessedTime());
//寰楀埌鏈鍚庤闂session瀵硅薄鐨勬椂闂?br />out.println("<br>"+"ID " + session.getId()+" ");
//寰楀埌璇ession鐨刬d錛屽茍鎵撳嵃
out.println("<br>"+"Created: " + created+" ");
//鎵撳嵃session鍒涘緩鏃墮棿
out.println("<br>"+"Last Accessed: " + accessed+" ");
//鎵撳嵃鏈鍚庤闂椂闂?/p>
session.setAttribute("Name","Tom");
//鍦╯ession涓坊鍔犲彉閲廚ame=Tom
session.setAttribute("UID","12345678");
//鍦╯ession涓坊鍔犲彉閲廢ID=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>
<script language="javascript">
function overlib(s){
聽document.all.ChartTip.style.display="block";
聽top.document.getElementById('ChartTip').innerHTML=s;
聽document.all.ChartTip.style.left=document.body.scrollLeft+event.x;
聽document.all.ChartTip.style.top=document.body.scrollTop+event.y-20;
}
function nd(s){
聽document.all.ChartTip.style.display="none";
}
</script>
<jsp:useBean id="barchart01" scope="session"
聽class="com.mdcl.fso.homepage.chart.BarChart01" />
</head>
<body>
<%
聽String fileName = barchart01.drawPic(request.getSession(), out);
聽String graphURL = request.getContextPath()
聽聽聽+ "/servlet/DisplayChart?filename=" + fileName;
%>
<br />
<img src="<%= graphURL %>" border="0" usemap="#<%=fileName %>" />
<br />
<div id="ChartTip"
聽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>
</body>
</html>
=========================================================================
java鏂囦歡
=========================================================================
package com.mdcl.fso.homepage.chart;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartRenderingInfo;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
import java.awt.Color;
import java.awt.Font;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import org.jfree.chart.renderer.category.BarRenderer3D;
import org.jfree.chart.servlet.ServletUtilities;
import org.jfree.chart.urls.StandardCategoryURLGenerator;
import org.jfree.chart.urls.StandardPieURLGenerator;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.axis.AxisLocation;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.entity.StandardEntityCollection;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.labels.*;
import org.jfree.ui.*;
import java.util.*;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.jsp.JspWriter;
import com.mdcl.fso.homepage.*;
public class BarChart01 {
聽private static DefaultCategoryDataset dataset = new DefaultCategoryDataset();
聽private DefaultCategoryDataset getDataset() {// 鍙栨暟鎹?/p>
聽聽List expense = new ArrayList();
聽聽String sql = "select ftr.organ_id ,fs.dept_name,ftr.subject_id,fft.finance_type_name,ftr.rpt_date ,ftr.rpt_data "
聽聽聽聽+ "from fso_t_rpt_expense ftr,fso_sdept fs,fso_finance_type fft "
聽聽聽聽+ "where ftr.type_id='D' "
聽聽聽聽+ "and ftr.organ_id=fs.dept_id聽 "
聽聽聽聽+ "and ftr.rpt_date='2007-08' "
聽聽聽聽+ "and fft.finance_type_id=ftr.subject_id聽 "
聽聽聽聽+ "and ftr.organ_id='1140'";
聽聽expense = DBDao.DbQueryExpense(sql);
聽聽for (int i = 0; i < expense.size(); i++) {
聽聽聽HashMap param = new HashMap();
聽聽聽param = (HashMap) expense.get(i);
聽聽聽double dt = Double.parseDouble(String.valueOf(param.get("rpt_data")));
聽聽聽String a = (String) param.get("organ");
聽聽聽String b = (String) param.get("subject");
聽聽聽dataset.addValue(dt, a, b);
聽聽}
聽聽return dataset;
聽}
聽public String drawPic(HttpSession session, JspWriter out) {
聽聽String fileName = null;
聽聽JFreeChart chart = ChartFactory.createBarChart3D("2007-08鎴愭湰緇熻", "璐圭敤綾誨瀷",
聽聽聽聽"閲戦錛堝崟浣嶏細鍏冿級", getDataset(), PlotOrientation.VERTICAL, true, true,
聽聽聽聽true);
聽聽chart.setBackgroundPaint(Color.WHITE);
聽聽CategoryPlot plot = chart.getCategoryPlot();// 鑾峰彇緇樺浘鍖?/p>
聽聽plot.setBackgroundPaint(new Color(255, 255, 255)); // 璁劇疆緇樺浘鍖鴻儗鏅壊
聽聽plot.setRangeGridlinePaint(Color.gray); // 璁劇疆姘村鉤鏂瑰悜鑳屾櫙綰塊鑹?/p>
聽聽plot.setRangeGridlinesVisible(true); // 璁劇疆鏄惁鏄劇ず姘村鉤鏂瑰悜鑳屾櫙綰?榛樿鍊間負True
聽聽plot.setDomainGridlinePaint(Color.black); // 璁劇疆鍨傜洿鏂瑰悜鑳屾櫙綰塊鑹?/p>
聽聽// plot.setDomainGridlinesVisible(true); // 璁劇疆鏄惁鏄劇ず鍨傜洿鏂瑰悜鑳屾櫙綰?榛樿鍊間負False
聽聽CategoryAxis domainAxis = plot.getDomainAxis();// 鑾峰彇緇熻縐嶇被杞存爣棰橈紙X杞達級
聽聽plot.setDomainAxis(domainAxis);// 娣誨姞X杞?/p>
聽聽BarRenderer3D renderer = new BarRenderer3D();// 鑾峰緱BarRenderer3D綾葷殑瀹炰緥錛岀洰鐨勬槸璁劇疆鏌卞艦鐨勭粯鍒跺睘鎬?/p>
聽聽renderer.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator());//
聽聽renderer.setBaseItemURLGenerator(new StandardCategoryURLGenerator("index2.jsp"));// 鐢熸垚鐑偣,鐢ㄤ簬閾炬帴
聽聽renderer.setItemMargin(0.1);// 璁劇疆姣忎釜緇勬墍鍖呭惈鐨勫鉤琛屾煴鐨勪箣闂磋窛紱?/p>
聽聽renderer.setSeriesPaint(0, Color.GREEN);// 璁劇疆鏌卞瓙鐨勯鑹?br />聽聽renderer.setSeriesPaint(1, Color.blue);// 璁劇疆鏌卞瓙鐨勯鑹?/p>
聽聽renderer.setBaseOutlinePaint(Color.BLACK);
聽聽renderer.setWallPaint(Color.gray);// 璁劇疆 Wall 鐨勯鑹?/p>
聽聽renderer.setItemLabelAnchorOffset(10D);// 璁劇疆鏌卞艦鍥句笂鐨勬枃瀛楀亸紱誨?/p>
聽聽renderer.setBaseItemLabelFont(new Font("arial", Font.PLAIN, 10), true);// 璁劇疆鏌卞艦鍥句笂鐨勬枃瀛?/p>
聽聽renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());// //鏄劇ず姣忎釜鏌辯殑鏁板鹼紝騫朵慨鏀硅鏁板肩殑瀛椾綋灞炴?/p>
聽聽renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_CENTER));
聽聽renderer.setBaseItemLabelsVisible(true);
聽聽renderer.setMaximumBarWidth(0.050000000000000003D);
聽聽plot.setRenderer(renderer);
聽聽plot.setForegroundAlpha(0.80f);// 璁劇疆鏌辯殑閫忔槑搴?/p>
聽聽// plot.setDomainAxisLocation(AxisLocation.TOP_OR_RIGHT);//璁劇疆鏄劇ず浣嶇疆
聽聽plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);// 璁劇疆鏄劇ず浣嶇疆
聽聽try {
聽聽聽PrintWriter pw = new PrintWriter(out);
聽聽聽StandardEntityCollection sec = new StandardEntityCollection();
聽聽聽ChartRenderingInfo info = new ChartRenderingInfo(sec);
聽聽聽fileName = ServletUtilities.saveChartAsPNG(chart, 640, 400, info,
聽聽聽聽聽session);
聽聽聽// ChartUtilities.writeChartAsPNG(op,chart, 640, 400, info,true,0);
聽聽聽ChartUtilities.writeImageMap(pw, fileName, info, true);
聽聽} catch (IOException e) {
聽聽聽// TODO Auto-generated catch block
聽聽聽e.printStackTrace();
聽聽}
聽聽return fileName;
聽}
}
=========================================================================
涓琛屼竴琛岃鍙栨暟鎹?br /><%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.io.*"%>
<html>
<head>
<title>鏂囦歡璇誨彇</title>
</head>
<body>
<%
聽String path=request.getRealPath("");//鍙栧緱褰撳墠鐩綍鐨勮礬寰?br />聽FileReader fr=new FileReader(path + "file://file//inc//t.txt%22);//寤虹珛FileReader瀵硅薄錛屽茍瀹炰緥鍖栦負fr
聽BufferedReader br=new BufferedReader(fr);//寤虹珛BufferedReader瀵硅薄錛屽茍瀹炰緥鍖栦負br
聽String Line=br.readLine();//浠庢枃浠惰鍙栦竴琛屽瓧絎︿覆
聽//鍒ゆ柇璇誨彇鍒扮殑瀛楃涓叉槸鍚︿笉涓虹┖
聽while(Line!=null){
聽 out.println(Line + "<br>");//杈撳嚭浠庢枃浠朵腑璇誨彇鐨勬暟鎹?br />聽 Line=br.readLine();//浠庢枃浠朵腑緇х畫璇誨彇涓琛屾暟鎹?br />聽}
聽br.close();//鍏抽棴BufferedReader瀵硅薄
聽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(".");
FileReader fr=new FileReader(path + "file://ReadData.txt/");
fr.skip(2);//璺寵繃2涓瓧鑺?br />int c=fr.read();//璇誨彇涓涓瓧鑺?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瀵硅薄錛屽茍瀹炰緥鍖杅w
//灝嗗瓧絎︿覆鍐欏叆鏂囦歡
fw.write("澶у濂斤紒");
fw.write("鏈功鏄奐SP緙栫▼鎶宸с?);
fw.write("璇峰澶氭寚鏁欙紒");
fw.write("email:stride@sina.com");
fw.close();
FileReader fr=new FileReader(path + "file://WriteData.txt/");
BufferedReader br=new BufferedReader(fr);//寤虹珛BufferedReader瀵硅薄錛屽茍瀹炰緥鍖栦負br
String Line=br.readLine();
//璇誨彇涓琛屾暟鎹?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("鏈功鏄奐SP緙栫▼鎶宸с嬨?);
bw.newLine();//鏂
bw.write("璇峰澶氭寚鏁欙紒");
bw.newLine();//鏂
bw.write("email: stride@sina.com");
bw.flush();//灝嗘暟鎹洿鏂拌嚦鏂囦歡
fw.close();//鍏抽棴鏂囦歡嫻?br />out.println("鍐欏叆鏂囦歡鍐呭涓猴細<br>");
FileReader fr=new FileReader(path + "file://WriteData.txt/");
BufferedReader br=new BufferedReader(fr);
String Line=br.readLine();//璇誨彇涓琛屾暟鎹?br />while(Line!=null){
聽out.println(Line + "<br>");
聽Line=br.readLine();
}
fr.close();
%>
</body>
</html>
濡備綍灝嗘暟鎹拷鍔犲啓鍏ュ埌鏂囦歡
<%@ 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鐨勫璞★紝騫跺疄渚嬪寲
rf.seek(rf.length());//灝嗘寚閽堢Щ鍔ㄥ埌鏂囦歡鏈熬
rf.writeBytes("\nAppend a line to the file!");
rf.close();//鍏抽棴鏂囦歡嫻?br />out.println("鍐欏叆鏂囦歡鍐呭涓猴細<br>");
FileReader fr=new FileReader(path + "file://WriteData.txt/");
BufferedReader br=new BufferedReader(fr);//璇誨彇鏂囦歡鐨凚ufferedRead瀵硅薄
String Line=br.readLine();
while(Line!=null){
聽out.println(Line + "<br>");
聽Line=br.readLine();
}
fr.close();//鍏抽棴鏂囦歡
%>
</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
聽
聽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++){
聽//姝ゅ鐢╨ist寰幆涓嬫爣鐢╥
聽}聽聽聽聽聽 聽聽聽
%>
聽
聽
聽
聽
聽<table align="center" width="100%" border="0" cellspacing="0" cellpadding="0">
聽聽聽<tr>
聽聽聽聽<td width="4%" height="27" align="center" valign="middle"
聽聽聽聽聽class="word"> </td>
聽聽聽聽<td width="56%" align="center" valign="middle" class="word"><img
聽聽聽聽聽src="<%=path%>/images/pagination/list_home.gif" width="13"
聽聽聽聽聽height="13"> <%
聽聽聽聽聽聽if (pageNo > 1) {
聽聽聽聽聽%> <a href="?pageNo=1"> 棣栭〉</a>
聽聽聽聽<%
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 聽}else{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 %> 棣栭〉 <%
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 聽}
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 %> <img src="<%=path%>/images/pagination/list_pre.gif"
聽聽聽聽聽width="13" height="13"> <%
聽聽聽聽聽聽if (pageNo > 1) {
聽聽聽聽聽%> <a href="?pageNo=<%=(pageNo-1)%>"> 鍓嶄竴欏?lt;/a>
聽聽聽聽<%
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 聽}else{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 %> 鍓嶄竴欏?amp;nbsp; <%
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 聽}
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 %> <img
聽聽聽聽聽src="<%=path%>/images/pagination/list_next.gif" width="13"
聽聽聽聽聽height="13"> <%
聽聽聽聽聽聽if (pageCount>pageNo) {
聽聽聽聽聽%> <a href="?pageNo=<%=(pageNo+1)%>"> 鍚庝竴欏?lt;/a>
聽聽聽聽<%
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 聽}else{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 %> 鍚庝竴欏?amp;nbsp; <%
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 聽}聽
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 %> <img src="<%=path%>/images/pagination/list_end.gif"
聽聽聽聽聽width="13" height="13"> <%
聽聽聽聽聽聽if (pageCount>pageNo) {
聽聽聽聽聽%> <a href="?pageNo=<%=(pageCount)%>"> 灝鵑〉</a> <%
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 聽}else{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 %> 灝鵑〉 <%
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 聽}聽
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 %>
聽聽聽聽<td width="26%" align="center" valign="middle" class="word">鍏?lt;%=pageCount%>欏?amp;nbsp;絎?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"> </td>
聽聽聽</tr>
聽聽</table></body>聽聽
</html>
銆銆鍥犳姣旇緝濂界殑鍒嗛〉鍋氭硶搴旇鏄瘡嬈$炕欏電殑鏃跺欏彧浠庢暟鎹簱閲屾绱㈤〉闈㈠ぇ灝忕殑鍧楀尯鐨勬暟鎹傝繖鏍瘋櫧鐒舵瘡嬈$炕欏甸兘闇瑕佹煡璇㈡暟鎹簱錛屼絾鏌ヨ鍑虹殑璁板綍鏁板緢灝戯紝緗戠粶浼犺緭鏁版嵁閲忎笉澶э紝濡傛灉浣跨敤榪炴帴姹犳洿鍙互鐣ヨ繃鏈鑰楁椂鐨勫緩绔嬫暟鎹簱榪炴帴榪囩▼銆傝屽湪鏁版嵁搴撶鏈夊悇縐嶆垚鐔熺殑浼樺寲鎶鏈敤浜庢彁楂樻煡璇㈤熷害錛屾瘮鍦ㄥ簲鐢ㄦ湇鍔″櫒灞傚仛緙撳瓨鏈夋晥澶氫簡銆?/p>
銆銆鍦╫racle鏁版嵁搴撲腑鏌ヨ緇撴灉鐨勮鍙蜂嬌鐢ㄤ吉鍒桼OWNUM琛ㄧず錛堜粠1寮濮嬶級銆備緥濡俿elect * from employee where rownum<10 榪斿洖鍓?0鏉¤褰曘備絾鍥犱負rownum鏄湪鏌ヨ涔嬪悗鎺掑簭涔嬪墠璧嬪肩殑錛屾墍浠ユ煡璇mployee鎸塨irthday鎺掑簭鐨勭100鍒?20鏉¤褰曞簲璇ヨ繖涔堝啓錛?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瀛愬彞錛?br />銆銆銆銆select name, birthday from employee order by birthday LIMIT 99,20
銆銆DB2鏈塺ownumber()鍑芥暟鐢ㄤ簬鑾峰彇褰撳墠琛屾暟銆?br />銆銆SQL Server娌$爺絀惰繃錛屽彲浠ュ弬鑰冭繖綃囨枃绔狅細http://www.csdn.net/develop/article/18/18627.shtm
銆銆鍦╓eb紼嬪簭涓垎欏典細琚綣佷嬌鐢紝浣嗗垎欏電殑瀹炵幇緇嗚妭鍗存槸緙栫▼榪囩▼涓瘮杈冮夯鐑︾殑浜嬫儏銆傚ぇ澶氬垎欏墊樉紺虹殑鏌ヨ鎿嶄綔閮藉悓鏃墮渶瑕佸鐞嗗鏉傜殑澶氶噸鏌ヨ鏉′歡錛宻ql璇彞闇瑕佸姩鎬佹嫾鎺ョ粍鎴愶紝鍐嶅姞涓婂垎欏甸渶瑕佺殑璁板綍瀹氫綅銆佹昏褰曟潯鏁版煡璇互鍙婃煡璇㈢粨鏋滅殑閬嶅巻銆佸皝瑁呭拰鏄劇ず錛岀▼搴忎細鍙樺緱寰堝鏉傚茍涓旈毦浠ョ悊瑙c傚洜姝ら渶瑕佷竴浜涘伐鍏風被綆鍖栧垎欏典唬鐮侊紝浣跨▼搴忓憳涓撴敞浜庝笟鍔¢昏緫閮ㄥ垎銆備笅闈㈡槸鎴戣璁$殑涓や釜宸ュ叿綾伙細
銆銆PagedStatement聽 灝佽浜嗘暟鎹簱榪炴帴銆佹昏褰曟暟鏌ヨ銆佸垎欏墊煡璇€佺粨鏋滄暟鎹皝瑁呭拰鍏抽棴鏁版嵁搴撹繛鎺ョ瓑鎿嶄綔錛屽茍浣跨敤浜哖reparedStatement鏀寔鍔ㄦ佽緗弬鏁般?br />銆銆RowSetPage聽 鍙傝働etStore鐨刾age by page iterator妯″紡錛?璁捐RowSetPage鐢ㄤ簬灝佽鏌ヨ緇撴灉錛堜嬌鐢∣racleCachedRowSet緙撳瓨鏌ヨ鍑虹殑涓欏墊暟鎹紝鍏充簬浣跨敤CachedRowSet灝佽鏁版嵁搴撴煡璇㈢粨鏋滆鍙傝僇SP欏甸潰鏌ヨ鏄劇ず甯哥敤妯″紡錛変互鍙婂綋鍓嶉〉鐮併佹昏褰曟潯鏁般佸綋鍓嶈褰曟暟絳変俊鎭紝 騫朵笖鍙互鐢熸垚綆鍗曠殑HTML鍒嗛〉浠g爜銆?br />銆銆PagedStatement 鏌ヨ鐨勭粨鏋滃皝瑁呮垚RowsetPage銆?/p>
銆銆涓嬮潰鏄畝鍗曠殑浣跨敤紺轟緥錛?/p>
聽
聽聽聽 //DAO鏌ヨ鏁版嵁閮ㄥ垎浠g爜錛?
聽聽聽 鈥?
聽聽聽 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澶勭悊鏌ヨ璇鋒眰閮ㄥ垎浠g爜錛?
聽聽聽 鈥?
聽聽聽 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鏄劇ず閮ㄥ垎浠g爜
<%@ 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>
聽聽聽聽聽 鎬у埆錛?
聽聽聽聽聽 <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>浠g爜</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)浠ュ強鍒嗛〉浠g爜銆?
聽聽聽 //姝ゅdoQuery涓洪〉闈笂鎻愪氦鏌ヨ鍔ㄤ綔鐨刯avascript鍑芥暟鍚嶏紝 pageno涓烘爣璇嗗綋鍓嶉〉鐮佺殑鍙傛暟鍚?
%>
聽聽聽聽聽聽聽聽聽聽聽 <td colspan=4><%= empPage .getHTML("doQuery", "pageno")%></td>
聽聽聽聽聽聽聽 </tr>
聽聽聽 </table>
聽聽聽 </form>
銆銆鏁堟灉濡傚浘錛?/p>
銆銆鍥犱負鍒嗛〉鏄劇ず涓鑸兘浼氫即鏈夋煡璇㈡潯浠跺拰鏌ヨ鍔ㄤ綔錛岄〉闈㈠簲宸茬粡鏈夋牎楠屾煡璇㈡潯浠跺拰鎻愪氦鏌ヨ鐨刯avascript鏂規硶錛堝涓婇潰鐨刣oQuery錛夛紝鎵浠owSetPage.getHTML()鐢熸垚鐨勫垎欏典唬鐮佸湪鐢ㄦ埛閫夋嫨鏂伴〉鐮佹椂鐩存帴鍥炶皟鍓嶉潰鐨勫鐞嗘彁浜ゆ煡璇㈢殑javascript鏂規硶銆傛敞鎰忓湪鏄劇ず鏌ヨ緇撴灉鐨勬椂鍊欎笂嬈$殑鏌ヨ鏉′歡涔熼渶瑕佷繚鎸侊紝濡?lt;input type=text name=gender size=1 value="<%=request.getParameter("gender")%>">銆傚悓鏃剁敱浜庨〉鐮佺殑鍙傛暟鍚嶅彲浠ユ寚瀹氾紝鍥犳涔熸敮鎸佸湪鍚屼竴欏甸潰涓湁澶氫釜鍒嗛〉鍖恒?br />銆銆鍙︿竴縐嶅垎欏典唬鐮佸疄鐜版槸鐢熸垚姣忎竴欏電殑URL錛屽皢鏌ヨ鍙傛暟鍜岄〉鐮佷綔涓篞ueryString闄勫湪URL鍚庨潰銆傝繖縐嶆柟娉曠殑緙洪櫡鏄湪鏌ヨ鏉′歡姣旇緝澶嶆潅鏃墮毦浠ュ鐞嗭紝騫朵笖闇瑕佹寚瀹氬鐞嗘煡璇㈠姩浣滅殑servlet錛屽彲鑳戒笉閫傚悎鏌愪簺瀹氬埗鐨勬煡璇㈡搷浣溿?br />銆銆濡傛灉瀵筊owSetPage.getHTML()鐢熸垚鐨勯粯璁ゅ垎欏典唬鐮佷笉婊℃剰鍙互緙栧啓鑷繁鐨勫垎欏靛鐞嗕唬鐮侊紝RowSetPage鎻愪緵浜嗗緢澶歡etter鏂規硶鐢ㄤ簬鑾峰彇鐩稿叧淇℃伅錛堝褰撳墠欏電爜銆佹婚〉鏁般?鎬昏褰曟暟鍜屽綋鍓嶈褰曟暟絳夛級銆?br />銆銆鍦ㄥ疄闄呭簲鐢ㄤ腑鍙互灝嗗垎欏墊煡璇㈠拰鏄劇ず鍋氭垚jsp taglib錛?榪涗竴姝ョ畝鍖朖SP浠g爜錛屽睆钄絁ava Code銆?/p>
闄勶細鍒嗛〉宸ュ叿綾葷殑婧愪唬鐮侊紝 鏈夋敞閲婏紝搴旇寰堝鏄撶悊瑙c?/p>
1.Page.java
2.RowSetPage.java(RowSetPage緇ф壙Page)
3.PagedStatement.java
4.PagedStatementOracleImpl.java(PagedStatementOracleImpl緇ф壙PagedStatement)
聽
鎮ㄥ彲浠ヤ換鎰忎嬌鐢ㄨ繖浜涙簮浠g爜錛屼絾蹇呴』淇濈暀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>
聽*聽聽聽聽聽聽聽聽聽聽聽聽聽聽 Page綾誨疄鐜頒簡鐢ㄤ簬鏄劇ず鍒嗛〉淇℃伅鐨勫熀鏈柟娉曪紝浣嗘湭鎸囧畾鎵鍚暟鎹殑綾誨瀷錛?
聽*聽聽聽聽聽聽聽聽聽聽聽聽聽聽 鍙牴鎹渶瑕佸疄鐜頒互鐗瑰畾鏂瑰紡緇勭粐鏁版嵁鐨勫瓙綾伙紝<br>
聽*聽聽聽聽聽聽聽聽聽聽聽聽聽聽 濡俁owSetPage浠owSet灝佽鏁版嵁錛孡istPage浠ist灝佽鏁版嵁<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());
聽聽聽 }
聽聽聽 /**
聽聽聽聽 * 鍒嗛〉鏁版嵁鍒濆鏂規硶錛岀敱瀛愮被璋冪敤
聽聽聽聽 * @param start 鏈〉鏁版嵁鍦ㄦ暟鎹簱涓殑璧峰浣嶇疆
聽聽聽聽 * @param avaCount 鏈〉鍖呭惈鐨勬暟鎹潯鏁?
聽聽聽聽 * @param totalSize 鏁版嵁搴撲腑鎬昏褰曟潯鏁?
聽聽聽聽 * @param pageSize 鏈〉瀹歸噺
聽聽聽聽 * @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("璁板綍鏉℃暟澶т簬鎬繪潯鏁幫紵錛?);
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 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 璁板綍瀵瑰簲鐨剅ownum
聽聽聽聽 */
聽聽聽 public int getStartOfPreviousPage() {
聽聽聽聽聽聽聽 return Math.max(start-myPageSize, 1);
聽聽聽 }
聽聽聽 /**
聽聽聽聽 * 鑾峰彇涓嬩竴欏電涓鏉℃暟鎹湪鏁版嵁搴撲腑鐨勪綅緗?
聽聽聽聽 * @return 璁板綍瀵瑰簲鐨剅ownum
聽聽聽聽 */
聽聽聽 public int getStartOfNextPage() {
聽聽聽聽聽聽聽 return start + avaCount;
聽聽聽 }
聽聽聽 /**
聽聽聽聽 * 鑾峰彇浠諱竴欏電涓鏉℃暟鎹湪鏁版嵁搴撲腑鐨勪綅緗紝姣忛〉鏉℃暟浣跨敤榛樿鍊?
聽聽聽聽 * @param pageNo 欏靛彿
聽聽聽聽 * @return 璁板綍瀵瑰簲鐨剅ownum
聽聽聽聽 */
聽聽聽 public static int getStartOfAnyPage(int pageNo){
聽聽聽聽聽聽聽 return getStartOfAnyPage(pageNo, DEFAULT_PAGE_SIZE);
聽聽聽 }
聽聽聽 /**
聽聽聽聽 * 鑾峰彇浠諱竴欏電涓鏉℃暟鎹湪鏁版嵁搴撲腑鐨勪綅緗?
聽聽聽聽 * @param pageNo 欏靛彿
聽聽聽聽 * @param pageSize 姣忛〉鍖呭惈鐨勮褰曟暟
聽聽聽聽 * @return 璁板綍瀵瑰簲鐨剅ownum
聽聽聽聽 */
聽聽聽 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 瀹炵幇鍒嗛〉鐨凧S鑴氭湰鍚嶅瓧錛岄〉鐮佸彉鍔ㄦ椂浼氳嚜鍔ㄥ洖璋冭鏂規硶
聽聽聽聽 * @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('灝氭湭瀹氫箟鏌ヨ鏂規硶錛歠unction ")
聽聽聽聽聽聽聽聽聽聽聽聽 .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(聽 "聽聽聽聽聽聽 絎?)
聽聽聽聽聽聽聽聽聽聽聽聽 .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;
聽聽聽 /**
聽聽聽聽 *絀洪〉
聽聽聽聽 */
聽聽聽 public static final RowSetPage EMPTY_PAGE = new RowSetPage();
聽聽聽 /**
聽聽聽聽 *榛樿鏋勯犳柟娉曪紝鍒涘緩絀洪〉
聽聽聽聽 */
聽聽聽 public RowSetPage(){
聽聽聽聽聽 this(null, 0,0);
聽聽聽 }
聽聽聽 /**
聽聽聽聽 *鏋勯犲垎欏靛璞?
聽聽聽聽 *@param crs 鍖呭惈涓欏墊暟鎹殑OracleCachedRowSet
聽聽聽聽 *@param start 璇ラ〉鏁版嵁鍦ㄦ暟鎹簱涓殑璧峰浣嶇疆
聽聽聽聽 *@param totalSize 鏁版嵁搴撲腑鍖呭惈鐨勮褰曟繪暟
聽聽聽聽 */
聽聽聽 public RowSetPage(RowSet crs, int start, int totalSize) {
聽聽聽聽聽聽聽 this(crs,start,totalSize,Page.DEFAULT_PAGE_SIZE);
聽聽聽 }
聽聽聽 /**
聽聽聽聽 *鏋勯犲垎欏靛璞?
聽聽聽聽 *@param crs 鍖呭惈涓欏墊暟鎹殑OracleCachedRowSet
聽聽聽聽 *@param start 璇ラ〉鏁版嵁鍦ㄦ暟鎹簱涓殑璧峰浣嶇疆
聽聽聽聽 *@param totalSize 鏁版嵁搴撲腑鍖呭惈鐨勮褰曟繪暟
聽聽聽聽 *@pageSize 鏈〉鑳藉綰崇殑璁板綍鏁?
聽聽聽聽 */
聽聽聽 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);
聽聽聽 }
聽聽聽 /**
聽聽聽聽 * 鏋勯犱竴鏌ヨ鍑哄綋欏墊暟鎹殑PageStatement錛屽茍鎸囧畾姣忛〉鏄劇ず璁板綍鏉℃暟
聽聽聽聽 * @param sql query sql
聽聽聽聽 * @param pageNo 欏電爜
聽聽聽聽 * @param pageSize 姣忛〉瀹歸噺
聽聽聽聽 */
聽聽聽 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);
聽聽聽 /**
聽聽聽聽 *浣跨敤緇欏嚭鐨勫璞¤緗寚瀹氬弬鏁扮殑鍊?
聽聽聽聽 *@param index 絎竴涓弬鏁頒負1錛岀浜屼釜涓?錛屻傘傘?
聽聽聽聽 *@param obj 鍖呭惈鍙傛暟鍊肩殑瀵硅薄
聽聽聽聽 */
聽聽聽 public void setObject(int index, Object obj) throws SQLException{
聽聽聽聽聽聽聽 BoundParam bp = new BoundParam(index, obj);
聽聽聽聽聽聽聽 boundParams.remove(bp);
聽聽聽聽聽聽聽 boundParams.add( bp);
聽聽聽 }
聽聽聽 /**
聽聽聽聽 *浣跨敤緇欏嚭鐨勫璞¤緗寚瀹氬弬鏁扮殑鍊?
聽聽聽聽 *@param index 絎竴涓弬鏁頒負1錛岀浜屼釜涓?錛屻傘傘?
聽聽聽聽 *@param obj 鍖呭惈鍙傛暟鍊肩殑瀵硅薄
聽聽聽聽 *@param targetSqlType 鍙傛暟鐨勬暟鎹簱綾誨瀷
聽聽聽聽 */
聽聽聽 public void setObject(int index, Object obj, int targetSqlType) throws SQLException{
聽聽聽聽聽聽聽 BoundParam bp = new BoundParam(index, obj, targetSqlType);
聽聽聽聽聽聽聽 boundParams.remove(bp);
聽聽聽聽聽聽聽 boundParams.add(bp );
聽聽聽 }
聽聽聽 /**
聽聽聽聽 *浣跨敤緇欏嚭鐨勫璞¤緗寚瀹氬弬鏁扮殑鍊?
聽聽聽聽 *@param index 絎竴涓弬鏁頒負1錛岀浜屼釜涓?錛屻傘傘?
聽聽聽聽 *@param obj 鍖呭惈鍙傛暟鍊肩殑瀵硅薄
聽聽聽聽 *@param targetSqlType 鍙傛暟鐨勬暟鎹簱綾誨瀷(甯擱噺瀹氫箟鍦╦ava.sql.Types涓?
聽聽聽聽 *@param scale 綺懼害錛屽皬鏁扮偣鍚庣殑浣嶆暟
聽聽聽聽 * 錛堝彧瀵箃argetSqlType鏄疶ypes.NUMBER鎴朤ypes.DECIMAL鏈夋晥錛屽叾瀹冪被鍨嬪垯蹇界暐錛?
聽聽聽聽 */
聽聽聽 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);
聽聽聽 }
聽聽聽 /**
聽聽聽聽 *浣跨敤緇欏嚭鐨勫瓧絎︿覆璁劇疆鎸囧畾鍙傛暟鐨勫?
聽聽聽聽 *@param index 絎竴涓弬鏁頒負1錛岀浜屼釜涓?錛屻傘傘?
聽聽聽聽 *@param str 鍖呭惈鍙傛暟鍊肩殑瀛楃涓?
聽聽聽聽 */
聽聽聽 public void setString(int index, String str)throws SQLException{
聽聽聽聽聽聽聽 BoundParam bp = new BoundParam(index, str)聽 ;
聽聽聽聽聽聽聽 boundParams.remove(bp);
聽聽聽聽聽聽聽 boundParams.add(bp);
聽聽聽 }
聽聽聽 /**
聽聽聽聽 *浣跨敤緇欏嚭鐨勫瓧絎︿覆璁劇疆鎸囧畾鍙傛暟鐨勫?
聽聽聽聽 *@param index 絎竴涓弬鏁頒負1錛岀浜屼釜涓?錛屻傘傘?
聽聽聽聽 *@param timestamp 鍖呭惈鍙傛暟鍊肩殑鏃墮棿鎴?
聽聽聽聽 */
聽聽聽 public void setTimestamp(int index, Timestamp timestamp)throws SQLException{
聽聽聽聽聽聽聽 BoundParam bp = new BoundParam(index, timestamp)聽 ;
聽聽聽聽聽聽聽 boundParams.remove(bp);
聽聽聽聽聽聽聽 boundParams.add( bp );
聽聽聽 }
聽聽聽 /**
聽聽聽聽 *浣跨敤緇欏嚭鐨勬暣鏁拌緗寚瀹氬弬鏁扮殑鍊?
聽聽聽聽 *@param index 絎竴涓弬鏁頒負1錛岀浜屼釜涓?錛屻傘傘?
聽聽聽聽 *@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 );
聽聽聽 }
聽聽聽 /**
聽聽聽聽 *浣跨敤緇欏嚭鐨勯暱鏁存暟璁劇疆鎸囧畾鍙傛暟鐨勫?
聽聽聽聽 *@param index 絎竴涓弬鏁頒負1錛岀浜屼釜涓?錛屻傘傘?
聽聽聽聽 *@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 );
聽聽聽 }
聽聽聽 /**
聽聽聽聽 *浣跨敤緇欏嚭鐨勫弻綺懼害嫻偣鏁拌緗寚瀹氬弬鏁扮殑鍊?
聽聽聽聽 *@param index 絎竴涓弬鏁頒負1錛岀浜屼釜涓?錛屻傘傘?
聽聽聽聽 *@param value 鍖呭惈鍙傛暟鍊肩殑鍙岀簿搴︽誕鐐規暟
聽聽聽聽 */
聽聽聽 public void setDouble(int index, double value)throws SQLException{
聽聽聽聽聽聽聽 BoundParam bp =聽 new BoundParam(index, new Double(value))聽聽 ;
聽聽聽聽聽聽聽 boundParams.remove(bp);
聽聽聽聽聽聽聽 boundParams.add( bp);
聽聽聽 }
聽聽聽 /**
聽聽聽聽 *浣跨敤緇欏嚭鐨凚igDecimal璁劇疆鎸囧畾鍙傛暟鐨勫?
聽聽聽聽 *@param index 絎竴涓弬鏁頒負1錛岀浜屼釜涓?錛屻傘傘?
聽聽聽聽 *@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);
聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 }
聽聽聽 }
聽
聽聽聽 /**
聽聽聽聽 * 鎵ц鏌ヨ鍙栧緱涓欏墊暟鎹紝鎵ц緇撴潫鍚庡叧闂暟鎹簱榪炴帴
聽聽聽聽 * @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);
聽聽聽聽聽聽聽 }
聽聽聽 }
聽聽聽 /**
聽聽聽聽 *灝哛esultSet鏁版嵁濉厖榪汣achedRowSet
聽聽聽聽 */
聽聽聽 protected abstract RowSet populate(ResultSet rs) throws SQLException;
聽聽聽 /**
聽聽聽聽 *鍙栧皝瑁呮垚RowSet鏌ヨ緇撴灉
聽聽聽聽 *@return RowSet
聽聽聽聽 */
聽聽聽 public javax.sql.RowSet getRowSet(){
聽聽聽聽聽聽聽 return this.rowSet;
聽聽聽 }
聽聽聽 /**
聽聽聽聽 *鍙栧皝瑁呮垚RowSetPage鐨勬煡璇㈢粨鏋?
聽聽聽聽 *@return RowSetPage
聽聽聽聽 */
聽聽聽 public RowSetPage getRowSetPage() {
聽聽聽聽聽聽聽 return this.rowSetPage;
聽聽聽 }
聽
聽聽聽 /**
聽聽聽聽 *鍏抽棴鏁版嵁搴撹繛鎺?
聽聽聽聽 */
聽聽聽 public void close(){
聽聽聽聽聽聽聽 //鍥犱負鏁版嵁搴撹繛鎺ュ湪鏌ヨ緇撴潫鎴栧彂鐢熷紓甯告椂鍗沖叧闂紝姝ゅ涓嶅仛浠諱綍浜嬫儏
聽聽聽聽聽聽聽 //鐣欏緟鎵╁厖銆?
聽聽聽 }
聽
聽聽聽 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);
聽聽聽 }
聽聽聽 /**
聽聽聽聽 * 鏋勯犱竴鏌ヨ鍑哄綋欏墊暟鎹殑PageStatement錛屽茍鎸囧畾姣忛〉鏄劇ず璁板綍鏉℃暟
聽聽聽聽 * @param sql query sql
聽聽聽聽 * @param pageNo 欏電爜
聽聽聽聽 * @param pageSize 姣忛〉瀹歸噺
聽聽聽聽 */
聽聽聽 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();
聽聽聽 }
聽聽聽 /**
聽聽聽聽 *灝哛esultSet鏁版嵁濉厖榪汣achedRowSet
聽聽聽聽 */
聽聽聽 protected聽 RowSet populate(ResultSet rs) throws SQLException{
聽聽聽聽聽聽聽 OracleCachedRowSet ocrs = new OracleCachedRowSet();
聽聽聽聽聽聽聽 ocrs.populate(rs);
聽聽聽聽聽聽聽 return ocrs;
聽聽聽 }
}
聽