??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美一区二区三区小说,国产资源在线观看,亚洲国产经典视频http://www.aygfsteel.com/honolulu14/走过、\q、千万别错过zh-cnSat, 17 May 2025 14:26:47 GMTSat, 17 May 2025 14:26:47 GMT60javascript 增加一?Qƈ且背景要一?/title><link>http://www.aygfsteel.com/honolulu14/archive/2007/01/18/94636.html</link><dc:creator>一~青?/dc:creator><author>一~青?/author><pubDate>Thu, 18 Jan 2007 06:39:00 GMT</pubDate><guid>http://www.aygfsteel.com/honolulu14/archive/2007/01/18/94636.html</guid><wfw:comment>http://www.aygfsteel.com/honolulu14/comments/94636.html</wfw:comment><comments>http://www.aygfsteel.com/honolulu14/archive/2007/01/18/94636.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/honolulu14/comments/commentRss/94636.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/honolulu14/services/trackbacks/94636.html</trackback:ping><description><![CDATA[ <div class="wmqeeuq" id="world"> <p> <font face="Times New Roman">表格部分代码如下Q?/font> </p> <p> <font face="Times New Roman"><table id="testTbl" border=1></font> </p> <p> <font face="Times New Roman"><tr id="tr1"></font> </p> <p> <font face="Times New Roman"><td width=6%><input type=checkbox id="box1"></td></font> </p> <p> <font face="Times New Roman"><td id="b">W一?lt;/td></font> </p> <p> <font face="Times New Roman"></tr></font> </p> <p> <font face="Times New Roman"><tr id="tr2"></font> </p> <p> <font face="Times New Roman"><td width=6%><input type=checkbox id="box2"></td></font> </p> <p> <font face="Times New Roman"><td id="b">W二?lt;/td></font> </p> <p> <font face="Times New Roman"></tr></font> </p> <p> <font face="Times New Roman"><tr></font> </p> <p> <font face="Times New Roman"><td width=6%><input type=checkbox id="box3"></td></font> </p> <p> <font face="Times New Roman"><td>W三?lt;/td></font> </p> <p> <font face="Times New Roman"></tr></font> </p> <p> <font face="Times New Roman"></table></font> </p> <p> <font face="Times New Roman">动态添加表行的javascript函数如下Q?/font> </p> <p> <font face="Times New Roman"><script language="javascript"></font> </p> <p> <font face="Times New Roman">function addRow(){</font> </p> <p> <font face="Times New Roman">//d一?/font> </p> <p> <font face="Times New Roman">var newTr = testTbl.insertRow();</font> </p> <p> <font face="Times New Roman">//讄行背?/font> </p> <p> <font face="Times New Roman">newTr.bgColor = '#008040';</font> </p> <p> <font face="Times New Roman">//d两列</font> </p> <p> <font face="Times New Roman">var newTd0 = newTr.insertCell();</font> </p> <p> <font face="Times New Roman">var newTd1 = newTr.insertCell();</font> </p> <p> <font face="Times New Roman">//讄列内容和属?/font> </p> <p> <font face="Times New Roman">newTd0.innerHTML = '<input type=checkbox id="box4">'; </font> </p> <p> <font face="Times New Roman">newTd1.innerText= '新增加的?;<br />}<br /></script></font> </p> <p> <font face="Times New Roman"><BR><br /><a href="#" onclick="addRow();">增加一?lt;/a></font> </p> <font face="Times New Roman"> <p> <br />p么简单,做点详细的说明:(x)</p> <p>1、inserRow()和insertCell()函数</p> <p>insertRow()函数可以带参敎ͼ形式如下Q?/p> <p>insertRow(index)</p> <p>q个函数新行添加到index的那一行前Q比如insertRow(0),是将新行d到第一行之前。默认的insertRow()函数相当于insertRow(-1),新行添加到表的最后?/p> <p>insertCell()和insertRow的用法相同?/p> <p>2、动态设|属性和事g</p> <p>上面行数中的innerHTML和innerText都是列的属性?/p> <p>q个innerQ就是“inner”到<tb></tb>之间QinnerText是添加到<tb></tb>之间的文本,innerHTML是添加到<tb></tb>之间的HTML代码(q个so单,q个解释挺多余的)</p> <p>讄其他属性也是用同样的方式,比如Q设|行背景?/p> <p>newTr.bgColor = 'red';</p> <p> </p> <p>讄事g也一P需要简单说明一炏V?/p> <p>比如Q我要让点击新加行的时候执行一个自己定义的函数 newClick,newClick行数如下Q?/p> <p>function newClick(){</p> <p>alert("q是新添加的?);</p> <p>?/p> <p>对onclick事g讄q个函数的代码如下:(x)</p> <p>newTr.onclick = newClick;</p> <p>q里需要主义的是,Q后面的部分必须是函数名,而且不能带引P</p> <p>newTr.onclick = newClick();</p> <p>newTr.onclick = 'newClick';</p> <p>newTr.onclick = "newClick"; </p> <p> </p> <p>上面的写法都是错误的?/p> <p>Z么,其实知道Z么没有什么意思,知道怎么用就O(jin)K了,如果不想知道Q可以蟩q下面这一Dc(din)?/p> <p> </p> <p>实际上这?后面的newClick是指向自己定义的newClick函数的指针,javascript里面函数名就是指向函数的指针Q加了引h号什么的览器就找不到那个函C?/p> <p>下面的写法,也是正确?/p> <p>newTr.onclick = function newClick(){</p> <p>alert("q是新添加的?);</p> <p>?/p> <p>q个使用函数名实际上是一L(fng)</p> <p>讄其他的事件用法相同?/p> </font> </div> <img src ="http://www.aygfsteel.com/honolulu14/aggbug/94636.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/honolulu14/" target="_blank">一~青?/a> 2007-01-18 14:39 <a href="http://www.aygfsteel.com/honolulu14/archive/2007/01/18/94636.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>J2EEE序中用oracle数据库LOB字段的ȝ(elathen)http://www.aygfsteel.com/honolulu14/archive/2007/01/16/94225.html一~青?/dc:creator>一~青?/author>Tue, 16 Jan 2007 08:14:00 GMThttp://www.aygfsteel.com/honolulu14/archive/2007/01/16/94225.htmlhttp://www.aygfsteel.com/honolulu14/comments/94225.htmlhttp://www.aygfsteel.com/honolulu14/archive/2007/01/16/94225.html#Feedback0http://www.aygfsteel.com/honolulu14/comments/commentRss/94225.htmlhttp://www.aygfsteel.com/honolulu14/services/trackbacks/94225.html J2EEE序中用oracle数据库LOB字段的ȝ(elathen)    http://www.souzz.net 2005-10-23 文章出处Q博客园  
    

posted on 2005-05-27 09:36 L逍遥?/a>

最q在J2EE的项目中需要用LOB字段保存文本信息以及(qing)囄和文?到网上搜拉一?q不?仔细看拉一?但都不是很全有的q有错误,l过几天的实?把问题都解决?Zȝ一?希望寚w要的朋友有点参?

LOB中我们用的比较多的主要有两种CLOB和BLOB,我们对两U类型分别讨?

1.CLOB是字W型LOB,主要存储文本信息,,最长ؓ(f)4G.,在J2EEE序?比如|页的textarea中的字符信息比较?Varchar2字段cd不能满?我们得用CLOB数据cd,我们q次目中就到q种情况.现在我们先说说如何存取CLOB字段

现在我要把网中的textarea元素的信息保存到数据库的CLOB字段? 我们都知道textarea中的信息当然不能直接保存成CLOB,我们在后台得到的是Stringcd?不多说拉,我们q是以一个实例讲?

先徏一个test?表有2个字D?ID,CONTENTS,其中CONTENTS保存CLOBcd的文本数?

create table TEST
(
ID VARCHAR2(18) not null,
CONTENTS CLOB,
)

接着我们~写一个测试用的jsp文gClobTest.jsp,代码如下



<%@ page language="java" contentType="text/html; charset=gb2312" %>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<title>Clob对象的存取测?lt;/title>

</head>



<body>

<form name="test" method="post" action="clobTest.action">

<table width="80%" height="88" border="0" align="center" cellpadding="0" cellspacing="0">

<tr>

<td height="30" align="center">输入ID?lt;input type="text" name="ID">

</tr>

<tr>

<td align="center">

<textarea rows="28" cols="68" name="CONTENTS">

注册用户需遵守:

重?x)员个h隐私、保障会(x)员隐U安全是CSDN的一基本政{,CSDN不会(x)公开、编辑或透露?x)员的注册资料,除非W合以下情况Q?
(1) Ҏ(gu)中华人民共和国国家安全机构、公安部门的要求?qing)根据相应的法律E序要求?
(2) l护CSDN的商标所有权?qing)其它权益?
(3) 在紧急情况下竭力l护?x)员个h、其它社?x)个体和C会(x)大众的安全?
(4) 严重q反CSDN有关规定?
CSDN保留l束?x)员使用|络服务资格的权利,q保证结束会(x)员资格后仍ؓ(f)?x)员保密所有个人隐U?

</textarea>

</td>

</tr>

<tr>

<td align="center">

<input type="submit" name="Submit" value="提交">

</td>

</tr>

</table>

</form>

</body>

</html>

点击”提交”按?我们在后台的到的?个Stringcd的对?

String strID = request.getParameter(“ID?;

String strCONTENTS = request.getParameter(“CONTENTS?;

接着我们要做的Q务就是如何把StringcdCONTENTS存到数据库中的CLOBcd字段?

注意:LOB数据不能象其它类型数据一L(fng)接插入(INSERTQ。插入前必须先插入一个空的LOB对象QCLOBcd的空对象为EMPTY_CLOB()QBLOBcd的空对象为EMPTY_BLOB()。之后通过SELECT命o(h)查询得到先前插入的记录ƈ锁定Q而将I对象修改ؓ(f)所要插入的LOB对象?

//我们先插入一个空的CLOB对象

public int insertEmptyClob() throws Exception {

Statement statement = null;

int intResult = -1;

try {

//创徏数据库操作语?

statement = connection.createStatement();

//定义SQL语句

String strSQL = “INSET INTO TEST (ID,CONTENTS) VALUES(strID, EMPTY_CLOB())?

//执行SQL语句

intResult = statement.executeUpdate(strSQL);

System.out.println(" intResult valus is"+intResult);

return intResult;

} catch(Exception e) {

e.printStackTrace();

return -1;

} finally {

if (statement != null) {

statement.close();

}

}

}

//把strCONTENT插入CLOB字段

public void insertClob() throws Exception {

Statement statement = null;

ResultSet resultset = null;

try {

//讄不自动提?

connection.setAutoCommit(false);

//创徏数据库操作语?

statement = connection.createStatement();

//定义SQL语句

String strSQL = “SELECT CONTENTS FROM TEST WHERE ID=strID"?

resultset = statement.executeQuery(strSQL);

oracle.sql.CLOB contents = null;

while(resultset.next()) {

//取出CLOB对象

contents = (oracle.sql.CLOB)resultset.getClob("CONTENTS");

}

Writer out = contents.getCharacterOutputStream();

out.write(strContents);

out.flush();

out.close();

//数据库提?

connection.commit();

} catch(Exception e) {

e.printStackTrace();

}finally{

if(resultset != null) {

resultset.close();

}

if(statement != null) {

statement.close();

}

}

}

OK,我们已经把这D|本以CLOB字段的Ş式保存到数据库中了,在实际应用中Q如果要保存或修改一条记录,我们要分2步做Q先保存或修攚wLOB字段cd的字D,再保存或修改LOB字段Q接下来我们来把刚才保存到数据库中的CLOB字段djsp面中去?

我们在保存的时候,CLOB字段?x)把上面textarea中的文本按原来的格式一行一行(包括I格Q都保存到CLOB字段中,d的时候我们只要按照原来格式读起出来就行了Q我q里自己用了一个小处理Ҏ(gu)Q但如果你有更好的方法请告诉我)。在q里我们把CLOBdStringBuffer?Z保存不同行我在行之间加了个?amp;”字W来区分。最后{化成String

攑ֈVO中,q样׃证从前台到后収ͼ从后台到前台的数据传递的一致性!代码如下Q?







/**

* 获取CLOB文本对象

* @param sbSQL

* @return

* @throws java.lang.Exception

*/

public String selectIncludeClob(StringBuffer sbSQL) throws Exception {

Statement stmt = null;

ResultSet rs = null;

StringBuffer sbResult = new StringBuffer();

try {

//讑֮数据库不自动提交

//connection.setAutoCommit(false);

//创徏数据库操作语?

stmt = connection.createStatement();

//获取l果?

rs = stmt.executeQuery(sbSQL.toString());



while(rs.next()) {

CLOB clob = (CLOB)rs.getClob("CONTENTS");

Reader isClob = clob.getCharacterStream();

BufferedReader bfClob = new BufferedReader(isClob);

String strClob = bfClob.readLine();

while(strClob != null) {

sbResult.append(strClob);

sbResult.append("&");

strClob = bfClob.readLine();

}

}

//提交事务

// connection.commit();

} catch(Exception e) {

e.printStackTrace();

throw e;

} finally {

if(rs != null) {

rs.close();

}

if(stmt != null) {

stmt.close();

}

}

return sbResult.toString();

}

到jsp面中,我们从VO中获取改文本信息?

<textarea rows="42" cols="68" name="CONTENTS" style="border-style: solid; border-color: #FFFFFF; font-family:仿宋_GB2312; font-size:14pt; line-height:200%; margin-top:8; margin-bottom:6" >

<%

String content = vo.getContent();

String[] contentArray = content.split("&");

for(int i=0;i<contentArray.length;i++) {

String s= contentArray[i];

out.println(s);

}

%>

</textarea>

q样我们׃证什么格式保存就以什么格式显C?

2QBLOB字段,二进制LOBQ主要存储二q制数据Q最长ؓ(f)4GQ在J2EEE序中,一般类g囄和文件的保存。当然也有另一U方法,把囄和文件保存在盘上,数据库中只保存图片的链接地址和文件在服务器上的\径。如果遇到文件和囄比较重要的还是需要保存到数据库中Q例如:(x)我们做国土资源项目的时候,好多囄、文件就很重要,需要保存到数据库中Q?下面我写一个保存文件到数据库的Blob字段和从数据库的Blob字段中获取文件的Ҏ(gu)Q当然完全应用还要做其他工作Q这里就不多说了Q如果你不清楚的可以问我Q:(x)

/**

* 把上传的文g保存到数据库的Blob字段?

* @param strTableName 对应的表名称

* @param strColumnName 表中保存文g的Blob字段名称

* @param inputStream 输入的文件流

* @param sbSQLWhere where条g

* @throws java.lang.Exception

*/

public static void fileUpload(String strTableName,

String strColumnName,

InputStream inputStream,

StringBuffer sbSQLWhere)

throws Exception {

Connection con = null;

ResultSet resultset = null;

Statement stmt = null;

try {

//得到数据库连?

con = DBConnector.getConnection();

//构徏查询语句

StringBuffer sbSQL = new StringBuffer();

sbSQL.append(" UPDATE ");

sbSQL.append(strTableName);

sbSQL.append(" SET ");

sbSQL.append(strColumnName);

sbSQL.append("=EMPTY_BLOB() ");

sbSQL.append(sbSQLWhere);

System.out.println(" update sql value is*******"+sbSQL.toString());

//获取数据库操作语?

stmt=con.createStatement();

//插入I的blob对象

stmt.executeUpdate(sbSQL.toString());

con.setAutoCommit(false);

StringBuffer sbSQLBlob = new StringBuffer();

sbSQLBlob.append(" SELECT ");

sbSQLBlob.append(strColumnName);

sbSQLBlob.append(" FROM ");

sbSQLBlob.append(strTableName);

sbSQLBlob.append(sbSQLWhere);

sbSQLBlob.append(" FOR UPDATE");

System.out.println(" select sql value is*********"+sbSQL.toString());

resultset =stmt.executeQuery(sbSQLBlob.toString());

while (resultset.next()) {

/* 取出此BLOB对象 */

oracle.sql.BLOB blob = (oracle.sql.BLOB)resultset.getBlob("BODY");

/* 向B(ti)LOB对象中写入数?*/

BufferedOutputStream out = new BufferedOutputStream(blob.getBinaryOutputStream());

BufferedInputStream in = new BufferedInputStream(inputStream);

int c;

while ((c=in.read())!=-1) {

out.write(c);

}

in.close();

out.close();

}

con.setAutoCommit(false);

con.commit();

} catch (Exception ex) {

ex.printStackTrace();

throw ex;

} finally {

if (stmt != null) {

stmt.close();

}

if (resultset != null) {

resultset.close();

}

if (con!=null) {

con.close();

}

}

}



下面的方法是从数据库中得C传的文g的输入流Q把输入写到servlet中Q再从页面中获取Qservlet׃写了?

/**

* Ҏ(gu)描述Q得到数据库上传的文件数?

*

* 输入参数Q?1Q表?String)

* 2Q字D名(String)

* 3: Where条g(StringBuffer)

* 5: 输出?ServletOutputStream)

*

* 输出参数Qvoid

* ~写? */

public static void getdownFile(String strTableName,

String strColumnName,

StringBuffer sbSQLWhere,

ServletOutputStream sos) throws Exception {

Connection con = null;

PreparedStatement ps = null;

ResultSet resultset = null;

try {

//得到数据库连?

con = DBConnector.getConnection();

StringBuffer sbSQL = new StringBuffer();

//构徏查询语句

sbSQL.append(" SELECT " + strColumnName + " FROM " + strTableName);

sbSQL.append(sbSQLWhere);



System.out.println(" sql value is:"+sbSQLWhere.toString());



ps = con.prepareStatement(sbSQL.toString());

//执行查询

resultset = ps.executeQuery();

while (resultset.next()) {

//d数据?

InputStream is = resultset.getBinaryStream(strColumnName);



byte[] buf = new byte[2048];

while(is.read(buf)!=-1) {

//把数据流按块写到servlet的输出流?

sos.write(buf);

}



}

} catch (Exception ex) {

ex.printStackTrace();

throw ex;

} finally {

if (ps != null) {

ps.close();

}

if (resultset != null) {

resultset.close();

}

if (con!=null) {

con.close();

}

}

}

囄的保存和文g的保存一P如果不清楚的可以和我联系



后记Q?

qxd着做项目,闲的时候也很懒QL把自己实际中的一些问题和解决Ҏ(gu)结一下,但L完成Q这是第一ơ写Q写的不好或不清楚的地方请包涵,下次改进Q也希望大家多提意见Q大家一赯步!Q!Q!Q!Q!Q!



]]>
J2EEE序中用oracle数据库LOB字段的ȝ(elathen)http://www.aygfsteel.com/honolulu14/archive/2007/01/16/94224.html一~青?/dc:creator>一~青?/author>Tue, 16 Jan 2007 08:14:00 GMThttp://www.aygfsteel.com/honolulu14/archive/2007/01/16/94224.htmlhttp://www.aygfsteel.com/honolulu14/comments/94224.htmlhttp://www.aygfsteel.com/honolulu14/archive/2007/01/16/94224.html#Feedback0http://www.aygfsteel.com/honolulu14/comments/commentRss/94224.htmlhttp://www.aygfsteel.com/honolulu14/services/trackbacks/94224.html J2EEE序中用oracle数据库LOB字段的ȝ(elathen)    http://www.souzz.net 2005-10-23 文章出处Q博客园  
    

posted on 2005-05-27 09:36 L逍遥?/a>

最q在J2EE的项目中需要用LOB字段保存文本信息以及(qing)囄和文?到网上搜拉一?q不?仔细看拉一?但都不是很全有的q有错误,l过几天的实?把问题都解决?Zȝ一?希望寚w要的朋友有点参?

LOB中我们用的比较多的主要有两种CLOB和BLOB,我们对两U类型分别讨?

1.CLOB是字W型LOB,主要存储文本信息,,最长ؓ(f)4G.,在J2EEE序?比如|页的textarea中的字符信息比较?Varchar2字段cd不能满?我们得用CLOB数据cd,我们q次目中就到q种情况.现在我们先说说如何存取CLOB字段

现在我要把网中的textarea元素的信息保存到数据库的CLOB字段? 我们都知道textarea中的信息当然不能直接保存成CLOB,我们在后台得到的是Stringcd?不多说拉,我们q是以一个实例讲?

先徏一个test?表有2个字D?ID,CONTENTS,其中CONTENTS保存CLOBcd的文本数?

create table TEST
(
ID VARCHAR2(18) not null,
CONTENTS CLOB,
)

接着我们~写一个测试用的jsp文gClobTest.jsp,代码如下



<%@ page language="java" contentType="text/html; charset=gb2312" %>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<title>Clob对象的存取测?lt;/title>

</head>



<body>

<form name="test" method="post" action="clobTest.action">

<table width="80%" height="88" border="0" align="center" cellpadding="0" cellspacing="0">

<tr>

<td height="30" align="center">输入ID?lt;input type="text" name="ID">

</tr>

<tr>

<td align="center">

<textarea rows="28" cols="68" name="CONTENTS">

注册用户需遵守:

重?x)员个h隐私、保障会(x)员隐U安全是CSDN的一基本政{,CSDN不会(x)公开、编辑或透露?x)员的注册资料,除非W合以下情况Q?
(1) Ҏ(gu)中华人民共和国国家安全机构、公安部门的要求?qing)根据相应的法律E序要求?
(2) l护CSDN的商标所有权?qing)其它权益?
(3) 在紧急情况下竭力l护?x)员个h、其它社?x)个体和C会(x)大众的安全?
(4) 严重q反CSDN有关规定?
CSDN保留l束?x)员使用|络服务资格的权利,q保证结束会(x)员资格后仍ؓ(f)?x)员保密所有个人隐U?

</textarea>

</td>

</tr>

<tr>

<td align="center">

<input type="submit" name="Submit" value="提交">

</td>

</tr>

</table>

</form>

</body>

</html>

点击”提交”按?我们在后台的到的?个Stringcd的对?

String strID = request.getParameter(“ID?;

String strCONTENTS = request.getParameter(“CONTENTS?;

接着我们要做的Q务就是如何把StringcdCONTENTS存到数据库中的CLOBcd字段?

注意:LOB数据不能象其它类型数据一L(fng)接插入(INSERTQ。插入前必须先插入一个空的LOB对象QCLOBcd的空对象为EMPTY_CLOB()QBLOBcd的空对象为EMPTY_BLOB()。之后通过SELECT命o(h)查询得到先前插入的记录ƈ锁定Q而将I对象修改ؓ(f)所要插入的LOB对象?

//我们先插入一个空的CLOB对象

public int insertEmptyClob() throws Exception {

Statement statement = null;

int intResult = -1;

try {

//创徏数据库操作语?

statement = connection.createStatement();

//定义SQL语句

String strSQL = “INSET INTO TEST (ID,CONTENTS) VALUES(strID, EMPTY_CLOB())?

//执行SQL语句

intResult = statement.executeUpdate(strSQL);

System.out.println(" intResult valus is"+intResult);

return intResult;

} catch(Exception e) {

e.printStackTrace();

return -1;

} finally {

if (statement != null) {

statement.close();

}

}

}

//把strCONTENT插入CLOB字段

public void insertClob() throws Exception {

Statement statement = null;

ResultSet resultset = null;

try {

//讄不自动提?

connection.setAutoCommit(false);

//创徏数据库操作语?

statement = connection.createStatement();

//定义SQL语句

String strSQL = “SELECT CONTENTS FROM TEST WHERE ID=strID"?

resultset = statement.executeQuery(strSQL);

oracle.sql.CLOB contents = null;

while(resultset.next()) {

//取出CLOB对象

contents = (oracle.sql.CLOB)resultset.getClob("CONTENTS");

}

Writer out = contents.getCharacterOutputStream();

out.write(strContents);

out.flush();

out.close();

//数据库提?

connection.commit();

} catch(Exception e) {

e.printStackTrace();

}finally{

if(resultset != null) {

resultset.close();

}

if(statement != null) {

statement.close();

}

}

}

OK,我们已经把这D|本以CLOB字段的Ş式保存到数据库中了,在实际应用中Q如果要保存或修改一条记录,我们要分2步做Q先保存或修攚wLOB字段cd的字D,再保存或修改LOB字段Q接下来我们来把刚才保存到数据库中的CLOB字段djsp面中去?

我们在保存的时候,CLOB字段?x)把上面textarea中的文本按原来的格式一行一行(包括I格Q都保存到CLOB字段中,d的时候我们只要按照原来格式读起出来就行了Q我q里自己用了一个小处理Ҏ(gu)Q但如果你有更好的方法请告诉我)。在q里我们把CLOBdStringBuffer?Z保存不同行我在行之间加了个?amp;”字W来区分。最后{化成String

攑ֈVO中,q样׃证从前台到后収ͼ从后台到前台的数据传递的一致性!代码如下Q?







/**

* 获取CLOB文本对象

* @param sbSQL

* @return

* @throws java.lang.Exception

*/

public String selectIncludeClob(StringBuffer sbSQL) throws Exception {

Statement stmt = null;

ResultSet rs = null;

StringBuffer sbResult = new StringBuffer();

try {

//讑֮数据库不自动提交

//connection.setAutoCommit(false);

//创徏数据库操作语?

stmt = connection.createStatement();

//获取l果?

rs = stmt.executeQuery(sbSQL.toString());



while(rs.next()) {

CLOB clob = (CLOB)rs.getClob("CONTENTS");

Reader isClob = clob.getCharacterStream();

BufferedReader bfClob = new BufferedReader(isClob);

String strClob = bfClob.readLine();

while(strClob != null) {

sbResult.append(strClob);

sbResult.append("&");

strClob = bfClob.readLine();

}

}

//提交事务

// connection.commit();

} catch(Exception e) {

e.printStackTrace();

throw e;

} finally {

if(rs != null) {

rs.close();

}

if(stmt != null) {

stmt.close();

}

}

return sbResult.toString();

}

到jsp面中,我们从VO中获取改文本信息?

<textarea rows="42" cols="68" name="CONTENTS" style="border-style: solid; border-color: #FFFFFF; font-family:仿宋_GB2312; font-size:14pt; line-height:200%; margin-top:8; margin-bottom:6" >

<%

String content = vo.getContent();

String[] contentArray = content.split("&");

for(int i=0;i<contentArray.length;i++) {

String s= contentArray[i];

out.println(s);

}

%>

</textarea>

q样我们׃证什么格式保存就以什么格式显C?

2QBLOB字段,二进制LOBQ主要存储二q制数据Q最长ؓ(f)4GQ在J2EEE序中,一般类g囄和文件的保存。当然也有另一U方法,把囄和文件保存在盘上,数据库中只保存图片的链接地址和文件在服务器上的\径。如果遇到文件和囄比较重要的还是需要保存到数据库中Q例如:(x)我们做国土资源项目的时候,好多囄、文件就很重要,需要保存到数据库中Q?下面我写一个保存文件到数据库的Blob字段和从数据库的Blob字段中获取文件的Ҏ(gu)Q当然完全应用还要做其他工作Q这里就不多说了Q如果你不清楚的可以问我Q:(x)

/**

* 把上传的文g保存到数据库的Blob字段?

* @param strTableName 对应的表名称

* @param strColumnName 表中保存文g的Blob字段名称

* @param inputStream 输入的文件流

* @param sbSQLWhere where条g

* @throws java.lang.Exception

*/

public static void fileUpload(String strTableName,

String strColumnName,

InputStream inputStream,

StringBuffer sbSQLWhere)

throws Exception {

Connection con = null;

ResultSet resultset = null;

Statement stmt = null;

try {

//得到数据库连?

con = DBConnector.getConnection();

//构徏查询语句

StringBuffer sbSQL = new StringBuffer();

sbSQL.append(" UPDATE ");

sbSQL.append(strTableName);

sbSQL.append(" SET ");

sbSQL.append(strColumnName);

sbSQL.append("=EMPTY_BLOB() ");

sbSQL.append(sbSQLWhere);

System.out.println(" update sql value is*******"+sbSQL.toString());

//获取数据库操作语?

stmt=con.createStatement();

//插入I的blob对象

stmt.executeUpdate(sbSQL.toString());

con.setAutoCommit(false);

StringBuffer sbSQLBlob = new StringBuffer();

sbSQLBlob.append(" SELECT ");

sbSQLBlob.append(strColumnName);

sbSQLBlob.append(" FROM ");

sbSQLBlob.append(strTableName);

sbSQLBlob.append(sbSQLWhere);

sbSQLBlob.append(" FOR UPDATE");

System.out.println(" select sql value is*********"+sbSQL.toString());

resultset =stmt.executeQuery(sbSQLBlob.toString());

while (resultset.next()) {

/* 取出此BLOB对象 */

oracle.sql.BLOB blob = (oracle.sql.BLOB)resultset.getBlob("BODY");

/* 向B(ti)LOB对象中写入数?*/

BufferedOutputStream out = new BufferedOutputStream(blob.getBinaryOutputStream());

BufferedInputStream in = new BufferedInputStream(inputStream);

int c;

while ((c=in.read())!=-1) {

out.write(c);

}

in.close();

out.close();

}

con.setAutoCommit(false);

con.commit();

} catch (Exception ex) {

ex.printStackTrace();

throw ex;

} finally {

if (stmt != null) {

stmt.close();

}

if (resultset != null) {

resultset.close();

}

if (con!=null) {

con.close();

}

}

}



下面的方法是从数据库中得C传的文g的输入流Q把输入写到servlet中Q再从页面中获取Qservlet׃写了?

/**

* Ҏ(gu)描述Q得到数据库上传的文件数?

*

* 输入参数Q?1Q表?String)

* 2Q字D名(String)

* 3: Where条g(StringBuffer)

* 5: 输出?ServletOutputStream)

*

* 输出参数Qvoid

* ~写? */

public static void getdownFile(String strTableName,

String strColumnName,

StringBuffer sbSQLWhere,

ServletOutputStream sos) throws Exception {

Connection con = null;

PreparedStatement ps = null;

ResultSet resultset = null;

try {

//得到数据库连?

con = DBConnector.getConnection();

StringBuffer sbSQL = new StringBuffer();

//构徏查询语句

sbSQL.append(" SELECT " + strColumnName + " FROM " + strTableName);

sbSQL.append(sbSQLWhere);



System.out.println(" sql value is:"+sbSQLWhere.toString());



ps = con.prepareStatement(sbSQL.toString());

//执行查询

resultset = ps.executeQuery();

while (resultset.next()) {

//d数据?

InputStream is = resultset.getBinaryStream(strColumnName);



byte[] buf = new byte[2048];

while(is.read(buf)!=-1) {

//把数据流按块写到servlet的输出流?

sos.write(buf);

}



}

} catch (Exception ex) {

ex.printStackTrace();

throw ex;

} finally {

if (ps != null) {

ps.close();

}

if (resultset != null) {

resultset.close();

}

if (con!=null) {

con.close();

}

}

}

囄的保存和文g的保存一P如果不清楚的可以和我联系



后记Q?

qxd着做项目,闲的时候也很懒QL把自己实际中的一些问题和解决Ҏ(gu)结一下,但L完成Q这是第一ơ写Q写的不好或不清楚的地方请包涵,下次改进Q也希望大家多提意见Q大家一赯步!Q!Q!Q!Q!Q!



]]>
ajax~存解决http://www.aygfsteel.com/honolulu14/archive/2007/01/11/93169.html一~青?/dc:creator>一~青?/author>Thu, 11 Jan 2007 06:56:00 GMThttp://www.aygfsteel.com/honolulu14/archive/2007/01/11/93169.htmlhttp://www.aygfsteel.com/honolulu14/comments/93169.htmlhttp://www.aygfsteel.com/honolulu14/archive/2007/01/11/93169.html#Feedback0http://www.aygfsteel.com/honolulu14/comments/commentRss/93169.htmlhttp://www.aygfsteel.com/honolulu14/services/trackbacks/93169.htmlҎ(gu)1Q?/div>
  1. xmlhttp.setRequestHeader("Cache-Control","no-cache");
  2. url += "&random="+Math.random();
  3. url += "&timestamp="+new Date().getTime();

Ҏ(gu)二:(x)

//处理面~存
  response.setHeader("Pragma","No-cache");
  response.setHeader("Cache-Control","no-cache");
  response.setDateHeader("Expires", 0);

]]>
正则表达式经?(? http://www.aygfsteel.com/honolulu14/archive/2006/12/04/85271.html一~青?/dc:creator>一~青?/author>Mon, 04 Dec 2006 01:36:00 GMThttp://www.aygfsteel.com/honolulu14/archive/2006/12/04/85271.htmlhttp://www.aygfsteel.com/honolulu14/comments/85271.htmlhttp://www.aygfsteel.com/honolulu14/archive/2006/12/04/85271.html#Feedback0http://www.aygfsteel.com/honolulu14/comments/commentRss/85271.htmlhttp://www.aygfsteel.com/honolulu14/services/trackbacks/85271.html正则表达式经?(?
"^\d+$"  //非负整数Q正整数 + 0Q?/p>

"^[0-9]*[1-9][0-9]*$"  //正整?/p>

"^((-\d+)|(0+))$"  //非正整数Q负整数 + 0Q?/p>

"^-[0-9]*[1-9][0-9]*$"  //负整?/p>

"^-?\d+$"    //整数

"^\d+(\.\d+)?$"  //非负点敎ͼ正QҎ(gu) + 0Q?/p>

"^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$"  //正QҎ(gu)

"^((-\d+(\.\d+)?)|(0+(\.0+)?))$"  //非正点敎ͼ负QҎ(gu) + 0Q?/p>

"^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"  //负QҎ(gu)

"^(-?\d+)(\.\d+)?$"  //点?/p>

"^[A-Za-z]+$"  //?6个英文字母组成的字符?/p>

"^[A-Z]+$"  //?6个英文字母的大写l成的字W串

"^[a-z]+$"  //?6个英文字母的写l成的字W串

"^[A-Za-z0-9]+$"  //由数字和26个英文字母组成的字符?/p>

"^\w+$"  //由数字?6个英文字母或者下划线l成的字W串

"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$"    //email地址

"^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$"

----------------------------------------------------------------------------------------------------------------------

字符描述Q?\Q将下一个字W标Cؓ(f)Ҏ(gu)字符或字面倹{例?n"与字W?n"匚w?\n"与换行符匚w。序?\\"?\"匚wQ?\("?("匚w?/p>

^ Q匹配输入的开始位|?/p>

$ Q匹配输入的l尾?/p>

* Q匹配前一个字W零ơ或几次。例如,"zo*"可以匚w"z"?zoo"?/p>

+ Q匹配前一个字W一ơ或多次。例如,"zo+"可以匚w"zoo",但不匚w"z"?/p>

? Q匹配前一个字W零ơ或一ơ。例如,"a?ve?"可以匚w"never"中的"ve"?/p>

.Q匹配换行符以外的Q何字W?/p>

(pattern) 与模式匹配ƈC匚w。匹配的子字W串可以从作为结果的 Matches 集合中?Item [0]...[n]取得。如果要匚w括号字符(?)Q可使用"\(" ?"\)"?/p>

x|yQ匹?x ?y。例?"z|food" 可匹?"z" ?"food"?(z|f)ood" 匚w "zoo" ?"food"?/p>

{n}Qn 为非负的整数。匹配恰好nơ。例如,"o{2}" 不能?"Bob 中的 "o" 匚wQ但是可以与"foooood"中的前两个o匚w?/p>

{n,} Qn 为非负的整数。匹配至nơ。例如,"o{2,}"不匹?Bob"中的"o"Q但是匹?foooood"中所有的o?o{1,}"{h(hun)?o+"?o{0,}"{h(hun)?o*"?/p>

{n,m} Qm ?n 为非负的整数。匹配至?n ơ,臛_ m ơ。例如,"o{1,3}" 匚w "fooooood"中前三个o?o{0,1}"{h(hun)?o?"?/p>

[xyz] Q一个字W集。与括号中字W的其中之一匚w。例如,"[abc]" 匚w"plain"中的"a"?/p>

[^xyz] Q一个否定的字符集。匹配不在此括号中的M字符。例如,"[^abc]" 可以匚w"plain"中的"p".

[a-z] Q表C某个范围内的字W。与指定区间内的M字符匚w。例如,"[a-z]"匚w"a"?z"之间的Q何一个小写字母字W?/p>

[^m-z] Q否定的字符区间。与不在指定区间内的字符匚w。例如,"[m-z]"与不?m"?z"之间的Q何字W匹配?/p>

\b Q与单词的边界匹配,卛_词与I格之间的位|。例如,"er\b" ?never"中的"er"匚wQ但是不匚w"verb"中的"er"?/p>

\B Q与非单词边界匹配?ea*r\B"?never early"中的"ear"匚w?/p>

\d Q与一个数字字W匹配。等价于[0-9]?/p>

\D Q与非数字的字符匚w。等价于[^0-9]?/p>

\f Q与分页W匹配?/p>

\n Q与换行W字W匹配?/p>

\r Q与回R字符匚w?/p>

\s Q与M白字W匹配,包括I格、制表符、分늬{。等价于"[ \f\n\r\t\v]"?/p>

\S Q与M非空白的字符匚w。等价于"[^ \f\n\r\t\v]"?/p>

\t Q与制表W匹配?/p>

\v Q与垂直制表W匹配?/p>

\w Q与M单词字符匚wQ包括下划线。等价于"[A-Za-z0-9_]"?/p>

\W Q与M非单词字W匹配。等价于"[^A-Za-z0-9_]"?/p>

\num Q匹?num个,其中 num Z个正整数。引用回到记住的匚w。例如,"(.)\1"匚w两个q箋的相同的字符?/p>

\nQ匹?nQ其中n 是一个八q制换码倹{八q制换码值必L 1, 2 ?3 个数字长?/p>

例如Q?\11" ?"\011" 都与一个制表符匚w?\0011"{h(hun)?\001" ?"1"。八q制换码g得超q?256。否则,只有前两个字W被视ؓ(f)表达式的一部分。允许在正则表达式中使用ASCII码?/p>

\xnQ匹配nQ其中n是一个十六进制的换码倹{十六进制换码值必L好ؓ(f)两个数字ѝ例如,"\x41"匚w"A"?\x041"{h(hun)?\x04" ?"1"。允许在正则表达式中使用 ASCII 码?/p>

   好了Q常用的Ҏ(gu)和属性就是这些了Q上面的语法介绍的已l很详细了,我们没有必要在|嗦了,接下来我们来看看在具体的例子里面如何使用q些Ҏ(gu)和属性来校验数据的合法性,我们q是举个例子吧,比如Q我们想要对用户输入的电(sh)子邮件进行校验,那么Q什么样的数据才是一个合法的?sh)子邮g呢?我可以这栯入:(x)uestc95@263.netQ当然我也会(x)q样输入Q?a href="mailto:xxx@yyy.com.cn">xxx@yyy.com.cn,但是q样的输入就是非法的Q?a href="mailto:xxx@@com.cn">xxx@@com.cn或者@xxx.com.cnQ等{,所以我们得Z个合法的?sh)子邮g地址臛_应当满以下几个条gQ?/p>

1. 必须包含一个ƈ且只有一个符号“@?/p>

2. 必须包含臛_一个至多三个符号??/p>

3. W一个字W不得是“@”或者??/p>

4. 不允许出现“@.”或?@

5. l尾不得是字W“@”或者??/p>

所以根据以上的原则和上面表中的语法Q我们很Ҏ(gu)的就可以得到需要的模板如下Q?(\w)+[@]{1}(\w)+[.]{1Q?}(\w)+"

  接下来我们仔l分析一下这个模?首先“\w”表C邮件的开始字W只能是包含下划U的单词字符Q这P满了第三个条gQ“[@]{1}”表C在?sh)子邮g中应当匹配ƈ且只能匹配一ơ字W“@?满了条件一Q同L(fng)“[.]{1Q?}”表C在?sh)子邮g中至匹?个至多匹?个字W??Q满了W二个条Ӟ模板最后的?\w)+”表C结字符只能是包含下划线在内的单词字W,满了条件五Q模板中间的?\w)+”满了条g四?/p>

  然后Q我们就直接调用刚才的那个函数CheckExp("(\w)+[@]{1}(\w)+[.]{1}(\w)+",待校验的字符?好了,如果q回TruepC数据是合法的,否则是不正的Q怎么P单吧。我们还可以写出来校验n份证L(fng)的模板:(x)"([0-9]){15}"Q校验URL的模板:(x)"^http://{1}((\w)+[.]){1,3}"{等Q我们可以看刎ͼq些模板为我们提供了很好的可重利用的模块Q利用自己或者别人提供的各种模板Q我们就可以方便快捷的进行数据的合法性校验了Q相信你一定会(x)写出非常通用的模板的?/p>

  q样Q我们只要定制不同的模板Q就可以实现对不同数据的合法性校验了。所以,正则表达式对象中最重要的属性就是:(x)“Pattern”属?只要真正掌握了这个属性,才可以自qq用正则表达式对象来为我们的数据校验q行服务?/p>



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=560411



]]>
TCP_IP协议详解学习(fn)W记_?_W?7-18章_TCP协议 http://www.aygfsteel.com/honolulu14/archive/2006/12/04/85269.html一~青?/dc:creator>一~青?/author>Mon, 04 Dec 2006 01:35:00 GMThttp://www.aygfsteel.com/honolulu14/archive/2006/12/04/85269.htmlhttp://www.aygfsteel.com/honolulu14/comments/85269.htmlhttp://www.aygfsteel.com/honolulu14/archive/2006/12/04/85269.html#Feedback0http://www.aygfsteel.com/honolulu14/comments/commentRss/85269.htmlhttp://www.aygfsteel.com/honolulu14/services/trackbacks/85269.htmlTCP协议 

==> TCP首部

    源端口号、目的端口号、位序号、位认序号、首部长度、标志位、窗口大、检验和、紧急指针和其它选项?
   
    一个IP地址和一个端口号也成Z个插?socket)。插口对可唯一定互联|中每个TCPq接的双斏V?/p>


==> TCPq接的徏立与l止

    TCP是一个面向连接的协议Q无论哪方向另一方发送数据之前,都必d在双方之间徏立一条连接?br />    TCPq接的徏立——三ơ握手?br />    TCPq接的终止——四ơ握手。这是由TCP的半关闭造成的。因为TCP是全双工的,因此每个方向必须单独的进行关闭?/p>


==> 最大报文段长度MSS

    MSS大Q允许每个报文段传递的数据多Q相对TCP和IP的首部有更高的利用率?/p>

    有些情况下,MSS是可以在建立TCPq接时进行协商的选项Q但是有些情况下不行 ?/p>

    * 如果是本地网l,TCP可以Ҏ(gu)|络外出接口处的MTU值减d定的IP首部(20)和TCP长度(20)Q对于以太网Q可以达?460?/p>

    * 如果IP地址为非本地的,则MSS通常定ؓ(f)默认?36字节Q允?0字节的IP首部?0字节的TCP首部以适合576字节的IP数据报)?/p>

    MSS让主机限制另一端发送数据的长度Q同时也能控制它自己发送数据报的长度,避免较小MTU发生分片?/p>


==> TCP的半关闭

    TCPq接的一端在l束它的发送后q能接收来自另一端数据(直到它也发送FINQ的能力Q这是所谓的半关闭。应用程序很用到?/p>


==> 复位报文D?/p>

    * 不存在的端口Q目的端口没有进E监听)。目的主机将对SYNhq回一个RST报文Dc(din)(UDP则将产生一个端口不可达的信息)

    * 异常l止?/p>

    * 半打开的连接?/p>


==> TCP服务器的设计

    * 大多数TCP服务器的q程是ƈ发的.

    * 只有处于监听的进E才能处理客L(fng)的连接请?

    * TCP服务器可以对本地IP地址q行限制,但是一般不能对q程IP地址q行限制.

  




Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=561075



]]>
区别QStringcMstring变量、堆与栈Q{Q?http://www.aygfsteel.com/honolulu14/archive/2006/12/04/85266.html一~青?/dc:creator>一~青?/author>Mon, 04 Dec 2006 01:31:00 GMThttp://www.aygfsteel.com/honolulu14/archive/2006/12/04/85266.htmlhttp://www.aygfsteel.com/honolulu14/comments/85266.htmlhttp://www.aygfsteel.com/honolulu14/archive/2006/12/04/85266.html#Feedback0http://www.aygfsteel.com/honolulu14/comments/commentRss/85266.htmlhttp://www.aygfsteel.com/honolulu14/services/trackbacks/85266.html关于Java栈与堆的思?
1. ?stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同QJava自动理栈和堆,E序员不能直接地讄栈或堆?/p>

2. 栈的优势是,存取速度比堆要快Q仅ơ于直接位于CPU中的寄存器。但~点是,存在栈中的数据大与生存期必L定的,~Z灉|性。另外,栈数据可以共享,详见W?炏V堆的优势是可以动态地分配内存大小Q生存期也不必事先告诉编译器QJava的垃圾收集器?x)自动收走这些不再用的数据。但~点是,׃要在q行时动态分配内存,存取速度较慢?/p>

3. Java中的数据cd有两U?br />  一U是基本cd(primitive types), 共有8U,即int, short, long, byte, float, double, boolean, char(注意Qƈ没有string的基本类?。这U类型的定义是通过诸如int a = 3; long b = 255L;的Ş式来定义的,UCؓ(f)自动变量。值得注意的是Q自动变量存的是字面|不是cȝ实例Q即不是cȝ引用Q这里ƈ没有cȝ存在。如int a = 3; q里的a是一个指向intcd的引用,指向3q个字面倹{这些字面值的数据Q由于大可知,生存期可?q些字面值固定定义在某个E序块里面,E序块退出后Q字D值就消失?Q出于追求速度的原因,存在于栈中?br />  另外Q栈有一个很重要的特D性,是存在栈中的数据可以共享。假设我们同时定?/p>

  int a = 3;
  int b = 3Q?/p>

   ~译器先处理int a = 3Q首先它?x)在栈中创徏一个变量ؓ(f)a的引用,然后查找有没有字面gؓ(f)3的地址Q没扑ֈQ就开辟一个存?q个字面值的地址Q然后将a指向3的地址。接着处理int b = 3Q在创徏完b的引用变量后Q由于在栈中已经?q个字面|便将b直接指向3的地址。这P出Ca与b同时均指?的情c(din)?/p>

   特别注意的是Q这U字面值的引用与类对象的引用不同。假定两个类对象的引用同时指向一个对象,如果一个对象引用变量修改了q个对象的内部状态,那么另一个对象引用变量也卛_反映个变化。相反,通过字面值的引用来修改其|不会(x)D另一个指向此字面值的引用的g跟着改变的情c(din)如上例Q我们定义完a?b的值后Q再令a=4Q那么,b不会(x){于4Q还是等?。在~译器内部,遇到a=4Q时Q它?yu)׃?x)重新搜烦栈中是否?的字面|如果没有Q重新开辟地址存放4的|如果已经有了Q则直接a指向q个地址。因此a值的改变不会(x)影响到b的倹{?/p>

  另一U是包装cL据,如Integer, String, Double{将相应的基本数据类型包装v来的cR这些类数据全部存在于堆中,Java用new()语句来显C地告诉~译器,在运行时才根据需要动态创建,因此比较灉|Q但~点是要占用更多的时间?/p>

4. String是一个特D的包装cL据。即可以用String str = new String("abc");的Ş式来创徏Q也可以用String str = "abc"Q的形式来创?作ؓ(f)Ҏ(gu)Q在JDK 5.0之前Q你从未见过Integer i = 3;的表辑ּQ因为类与字面值是不能通用的,除了String。而在JDK 5.0中,q种表达式是可以的!因ؓ(f)~译器在后台q行Integer i = new Integer(3)的{?。前者是规范的类的创E,卛_Java中,一切都是对象,而对象是cȝ实例Q全部通过new()的Ş式来创徏。Java 中的有些c,如DateFormatc,可以通过该类的getInstance()Ҏ(gu)来返回一个新创徏的类Q似乎违反了此原则。其实不然。该c运用了单例模式来返回类的实例,只不q这个实例是在该cd部通过new()来创建的Q而getInstance()向外部隐藏了此细节。那Z么在String str = "abc"Q中Qƈ没有通过new()来创建实例,是不是违反了上述原则Q其实没有?/p>

5. 关于String str = "abc"的内部工作。Java内部此语句转化Z下几个步骤:(x)
  (1)先定义一个名为str的对Stringcȝ对象引用变量QString strQ?br />   (2)在栈中查找有没有存放gؓ(f)"abc"的地址Q如果没有,则开辟一个存攑֭面gؓ(f)"abc"的地址Q接着创徏一个新的Stringcȝ对象oQƈo 的字W串值指向这个地址Q而且在栈中这个地址旁边Cq个引用的对象o。如果已l有了gؓ(f)"abc"的地址Q则查找对象oQƈq回o的地址?br />  (3)str指向对象o的地址?br />  值得注意的是Q一般StringcM字符串值都是直接存值的。但像String str = "abc"Q这U场合下Q其字符串值却是保存了一个指向存在栈中数据的引用Q?br /> 
  Z更好地说明这个问题,我们可以通过以下的几个代码进行验证?/p>

  String str1 = "abc";
  String str2 = "abc";
  System.out.println(str1==str2);  //true
 
  注意Q我们这里ƈ不用str1.equals(str2)Q的方式Q因比较两个字W串的值是否相{?=PҎ(gu)JDK的说明,只有在两个引用都指向了同一个对象时才返回真倹{而我们在q里要看的是Qstr1与str2是否都指向了同一个对象?br />  l果说明QJVM创徏了两个引用str1和str2Q但只创Z一个对象,而且两个引用都指向了q个对象?/p>

  我们再来更进一步,以上代码改成:(x)

  String str1 = "abc";
  String str2 = "abc";
  str1 = "bcd";
  System.out.println(str1 + "," + str2);  //bcd, abc
  System.out.println(str1==str2);  //false

  q就是说Q赋值的变化D了类对象引用的变化,str1指向了另外一个新对象Q而str2仍旧指向原来的对象。上例中Q当我们str1的值改?bcd"ӞJVM发现在栈中没有存放该值的地址Q便开辟了q个地址Qƈ创徏了一个新的对象,其字W串的值指向这个地址?br />   事实上,Stringc被设计成ؓ(f)不可改变(immutable)的类。如果你要改变其|可以Q但JVM在运行时Ҏ(gu)新值?zhn)?zhn)创Z一个新对象Q然后将q个对象的地址q回l原来类的引用。这个创E虽说是完全自动q行的,但它毕竟占用了更多的旉。在Ҏ(gu)间要求比较敏感的环境中,?x)带有一定的不良影响?/p>

  再修改原来代码:(x)

  String str1 = "abc";
  String str2 = "abc";
 
  str1 = "bcd";
 
  String str3 = str1;
  System.out.println(str3);  //bcd

  String str4 = "bcd";
  System.out.println(str1 == str4);  //true
   
  str3 q个对象的引用直接指向str1所指向的对?注意Qstr3q没有创建新对象)。当str1改完其值后Q再创徏一个String的引用str4Qƈ指向因str1修改D创建的新的对象。可以发玎ͼq回str4也没有创建新的对象,从而再ơ实现栈中数据的׃n?/p>

  我们再接着看以下的代码?/p>

  String str1 = new String("abc");
  String str2 = "abc";
  System.out.println(str1==str2);  //false

  创徏了两个引用。创Z两个对象。两个引用分别指向不同的两个对象?/p>

  String str1 = "abc";
  String str2 = new String("abc");
  System.out.println(str1==str2);  //false

  创徏了两个引用。创Z两个对象。两个引用分别指向不同的两个对象?/p>

  以上两段代码说明Q只要是用new()来新建对象的Q都?x)在堆中创徏Q而且其字W串是单独存值的Q即使与栈中的数据相同,也不?x)与栈中的数据共享?/p>

6. 数据cd包装cȝg可修攏V不仅仅是Stringcȝg可修改,所有的数据cd包装c都不能更改其内部的倹{?/p>

7. l论与徏议:(x)

   (1)我们在用诸如String str = "abc"Q的格式定义cLQL惛_然地认ؓ(f)Q我们创ZStringcȝ对象str。担心陷阱!对象可能q没有被创徏Q唯一可以肯定的是Q指?Stringcȝ引用被创Z。至于这个引用到底是否指向了一个新的对象,必须Ҏ(gu)上下文来考虑Q除非你通过new()Ҏ(gu)来显要地创徏一个新的对象。因此,更ؓ(f)准确的说法是Q我们创Z一个指向Stringcȝ对象的引用变量strQ这个对象引用变量指向了某个gؓ(f)"abc"的StringcR清醒地认识到这一点对排除E序中难以发现的bug是很有帮助的?/p>

  (2)使用String str = "abc"Q的方式Q可以在一定程度上提高E序的运行速度Q因为JVM?x)自动根据栈中数据的实际情况来决定是否有必要创徏新对象。而对于String str = new String("abc")Q的代码Q则一概在堆中创徏新对象,而不其字符串值是否相{,是否有必要创建新对象Q从而加重了E序的负担。这个思想应该是n元模式的思想Q但JDK的内部在q里实现是否应用了这个模式,不得而知?/p>

  (3)当比较包装类里面的数值是否相{时Q用equals()Ҏ(gu)Q当试两个包装cȝ引用是否指向同一个对象时Q用==?/p>

  (4)׃Stringcȝimmutable性质Q当String变量需要经常变换其值时Q应该考虑使用StringBufferc,以提高程序效率?br />



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=561129



]]>
提高JSP应用E序的七大秘c绝?/title><link>http://www.aygfsteel.com/honolulu14/archive/2006/11/08/79947.html</link><dc:creator>一~青?/dc:creator><author>一~青?/author><pubDate>Wed, 08 Nov 2006 12:42:00 GMT</pubDate><guid>http://www.aygfsteel.com/honolulu14/archive/2006/11/08/79947.html</guid><wfw:comment>http://www.aygfsteel.com/honolulu14/comments/79947.html</wfw:comment><comments>http://www.aygfsteel.com/honolulu14/archive/2006/11/08/79947.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/honolulu14/comments/commentRss/79947.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/honolulu14/services/trackbacks/79947.html</trackback:ping><description><![CDATA[ <div align="center"> <font face="黑体" color="#333333" size="4">提高JSP应用E序的七大秘c绝?/font> </div> <br />你时常被客户抱怨JSP面响应速度很慢吗?你想q当客户讉Kơ数剧增Ӟ你的WEB应用能承受日益增加的讉K量吗Q本文讲qC调整JSP和servlet的一些非常实用的Ҏ(gu)Q它可你的servlet和JSP面响应更快Q扩展性更强。而且在用h增加的情况下Q系l负载会(x)呈现出^滑上长的势。在本文中,我将通过一些实际例子和配置Ҏ(gu)使得你的应用E序的性能有出人意料的提升?br /><br />       其中Q某些调优技术是在你的编E工作中实现的。而另一些技术是与应用服务器的配|相关的。在本文中,我们详l地描述怎样通过调整servlet和JSP面Q来提高你的应用E序的M性能。在阅读本文之前Q假设你有基本的servlet和JSP的知识?br /><br />Ҏ(gu)一Q在servlet的init()Ҏ(gu)中缓存数?br /><br />当应用服务器初始化servlet实例之后Qؓ(f)客户端请求提供服务之前,它会(x)调用q个servlet的init()Ҏ(gu)。在一个servlet的生命周期中Qinit()Ҏ(gu)只会(x)被调用一ơ。通过在init()Ҏ(gu)中缓存一些静态的数据或完成一些只需要执行一ơ的、耗时的操作,可大大地提高系l性能?br /><br />例如Q通过在init()Ҏ(gu)中徏立一个JDBCq接池是一个最佳例子,假设我们是用jdbc2.0的DataSource接口来取得数据库q接Q在通常的情况下Q我们需要通过JNDI来取得具体的数据源。我们可以想象在一个具体的应用中,如果每次SQLh都要执行一ơJNDI查询的话Q那pȝ性能会(x)急剧下降。解x法是如下代码Q它通过~存DataSourceQ得下一ơSQL调用时仍然可以l利用它Q?br /><br /><center><ccid_nobr><table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="635" align="center" bordercolorlight="black" border="1"><tbody><tr><td class="code" style="FONT-SIZE: 9pt" width="627" bgcolor="#e6e6e6"><pre><ccid_code>public class ControllerServlet extends HttpServlet {  private javax.sql.DataSource testDS = null;  public void init(ServletConfig config) throws ServletException  {   super.init(config);   Context ctx = null;   try   {    ctx = new InitialContext();    testDS = (javax.sql.DataSource)ctx.lookup("jdbc/testDS");   }   catch(NamingException ne)   {    ne.printStackTrace();   }   catch(Exception e)   {    e.printStackTrace();   }  }  public javax.sql.DataSource getTestDS()  {   return testDS;  }  ...  ... }</ccid_code></pre></td></tr></tbody></table></ccid_nobr></center><br /><br />Ҏ(gu) 2:止servlet和JSP 自动重蝲(auto-reloading) <br /><br />     Servlet/JSP提供了一个实用的技术,卌动重载技术,它ؓ(f)开发h员提供了一个好的开发环境,当你改变servlet和JSP面后而不必重启应用服务器。然而,q种技术在产品q行阶段对系l的资源是一个极大的损耗,因ؓ(f)它会(x)lJSP引擎的类装蝲?classloader)带来极大的负担。因此关闭自动重载功能对pȝ性能的提升是一个极大的帮助?<br /><br />Ҏ(gu) 3: 不要滥用HttpSession <br /><br />     在很多应用中Q我们的E序需要保持客L(fng)的状态,以便面之间可以怺联系。但不幸的是׃HTTPh天生无状态性,从而无法保存客L(fng)的状态。因此一般的应用服务器都提供了session来保存客L(fng)状态。在JSP应用服务器中Q是通过HttpSession对像来实现session的功能的Q但在方便的同时Q它也给pȝ带来了不的负担。因为每当你获得或更新sessionӞpȝ者要对它q行Ҏ(gu)的序列化操作。你可以通过对HttpSession的以下几U处理方式来提升pȝ的性能?br /><br />    如果没有必要Q就应该关闭JSP面中对HttpSession的缺省设|?如果你没有明指定的话,每个JSP面都会(x)~省地创Z个HttpSession。如果你的JSP中不需要用session的话Q那可以通过如下的JSP面指示W来止它:(x)<br /><br /><center><ccid_nobr><table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1"><tbody><tr><td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6"><pre><ccid_code>Q?@ page session="false"%Q?/ccid_code></pre></td></tr></tbody></table></ccid_nobr></center><br /><br />不要在HttpSession中存攑֤的数据对像:(x)如果你在HttpSession中存攑֤的数据对像的话,每当对它q行dӞ应用服务器都对其进行序列化Q从而增加了pȝ的额外负担。你在HttpSession中存攄数据对像大Q那pȝ的性能׃降得快?<br /><br />     当你不需要HttpSessionӞ快地释攑֮Q当你不再需要sessionӞ你可以通过调用HttpSession.invalidate()Ҏ(gu)来释攑֮。尽量将session的超时时间设得短一点:(x)在JSP应用服务器中Q有一个缺省的session的超时时间。当客户在这个时间之后没有进行Q何操作的话,pȝ?x)将相关的session自动从内存中释放。超时时间设得越大,pȝ的性能׃(x)低Q因此最好的Ҏ(gu)是量使得它的g持在一个较低的水^?<br /><br />Ҏ(gu) 4: 页面输行压~?<br /><br />    压羃是解x据冗余的一个好的方法,特别是在|络带宽不够发达的今天。有的浏览器支持gzip(GNU zip)q行来对HTML文gq行压羃Q这U方法可以戏剧性地减少HTML文g的下载时间。因此,如果你将servlet或JSP面生成的HTML面q行压羃的话Q那用户׃(x)觉得面览速度?x)非常快。但不幸的是Q不是所有的览器都支持gzip压羃Q但你可以通过在你的程序中查客L(fng)览器是否支持它。下面就是关于这U方法实现的一个代码片D:(x) <br /><br /><center><ccid_nobr><table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="640" align="center" bordercolorlight="black" border="1"><tbody><tr><td class="code" style="FONT-SIZE: 9pt" width="632" bgcolor="#e6e6e6"><pre><ccid_code>public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {  OutputStream out = null  String encoding = request.getHeader("Accept-Encoding");  if (encoding != null && encoding.indexOf("gzip") != -1)  {   request.setHeader("Content-Encoding" , "gzip");   out = new GZIPOutputStream(request.getOutputStream());  }  else if (encoding != null && encoding.indexOf("compress") != -1)  {   request.setHeader("Content-Encoding" , "compress");   out = new ZIPOutputStream(request.getOutputStream());  }  else  {   out = request.getOutputStream();  }  ...  ... }</ccid_code></pre></td></tr></tbody></table></ccid_nobr></center><br /><br />Ҏ(gu) 5: 使用U程?br /><br />    应用服务器缺省地为每个不同的客户端请求创Z个线E进行处理,qؓ(f)它们分派service()Ҏ(gu)Q当service()Ҏ(gu)调用完成后,与之相应的线E也随之撤消。由于创建和撤消U程?x)耗费一定的pȝ资源Q这U缺省模式降低了pȝ的性能。但所q的是我们可以通过创徏一个线E池来改变这U状c(din)?br /><br />    另外Q我们还要ؓ(f)q个U程池设|一个最线E数和一个最大线E数。在应用服务器启动时Q它?x)创建数量等于最线E数的一个线E池Q当客户有请求时Q相应地从池从取Z个线E来q行处理Q当处理完成后,再将U程重新攑օ到池中。如果池中的U程不够地话Q系l会(x)自动地增加池中线E的数量Q但总量不能过最大线E数。通过使用U程池,当客L(fng)h急剧增加Ӟpȝ的负载就?x)呈现的qx的上升曲U,从而提高的pȝ的可伸羃性?br /><br />Ҏ(gu) 6: 选择正确的页面包含机?br /><br />在JSP中有两种Ҏ(gu)可以用来包含另一个页面:(x)<br /><br />1、用include指示W?br /><br /><center><ccid_nobr><table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1"><tbody><tr><td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6"><pre><ccid_code>Q?@ includee file=”test.jsp?%Q?/ccid_code></pre></td></tr></tbody></table></ccid_nobr></center><br /><br />2、用jsp指示W?<br /><br /><center><ccid_nobr><table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1"><tbody><tr><td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6"><pre><ccid_code>Qjsp:includee page=”test.jsp?flush=”true?Q?/ccid_code></pre></td></tr></tbody></table></ccid_nobr></center><br /><br />在实际中发现Q如果用第一U方法的话,可以使得pȝ性能更高?<br /><br />Ҏ(gu) 7:正确地确定javabean的生命周?<br /><br />      JSP的一个强大的地方是对javabean的支持。通过在JSP面中用<jsp:useBeanQ标{,可以javabean直接插入C个JSP面中。它的用方法如下:(x) <br /><br /><center><ccid_nobr><table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="665" align="center" bordercolorlight="black" border="1"><tbody><tr><td class="code" style="FONT-SIZE: 9pt" width="657" bgcolor="#e6e6e6"><pre><ccid_code>Qjsp:useBean id="name" scope="page|request|session|application" class="package.className" type="typeName"Q? Q?jsp:useBeanQ?/ccid_code></pre></td></tr></tbody></table></ccid_nobr></center><br /><br />其中scope属性指Zq个bean的生命周期。缺省的生命周期为page。如果你没有正确地选择bean的生命周期的话,它将影响pȝ的性能?<br /><br />举例来说Q如果你只想在一ơ请求中使用某个beanQ但你却这个bean的生命周期设|成了sessionQ那当这ơ请求结束后Q这个bean仍然保留在内存中,除非session时或用户关闭浏览器。这样会(x)耗费一定的内存Qƈ无谓的增加了JVM垃圾攉器的工作量。因此ؓ(f)bean讄正确的生命周期,q在bean的命结束后快地清理它们,?x)用系l性能有一个提高?<br /><br />其它一些有用的Ҏ(gu) <br /><br />1、在字符串连接操作中量不用“+”操作符Q在java~程中,我们常常使用“+”操作符来将几个字符串连接v来,但你或许从来没有惛_q它居然?x)对pȝ性能造成影响吧?׃字符串是帔RQ因此JVM?x)生一些(f)时的对像。你使用的“+”越多,生成的(f)时对像就多Q这样也?x)给pȝ性能带来一些媄响。解决的Ҏ(gu)是用StringBuffer对像来代曎쀜+”操作符?<br /><br />2、避免用System.out.println()Ҏ(gu)Q由于System.out.println()是一U同步调用,卛_调用它时Q磁盘I(y)/O操作必须{待它的完成Q因此我们要量避免对它的调用。但我们在调试程序时它又是一个必不可的方便工具Qؓ(f)了解册个矛盾,我徏议你最好用Log4j工具(http://Jakarta.apache.org )Q它既可以方便调试,而不?x)生System.out.println()q样的方法?<br /><br />3、ServletOutputStream ?PrintWriter的权衡:(x)使用PrintWriter可能?x)带来一些小的开销Q因为它?yu)所有的原始输出都{换ؓ(f)字符来输出Q因此如果用它来作为页面输出的话,pȝ要负担一个{换过E。而用ServletOutputStream作ؓ(f)面输出的话׃存在一个问题,但它是以二进制进行输出的。因此在实际应用中要权衡两者的利弊?<br /><br />ȝ <br /><br />     本文的目的是通过对servlet和JSP的一些调优技术来极大地提高你的应用程序的性能Qƈ因此提升整个J2EE应用的性能。通过q些调优技术,你可以发现其实ƈ不是某种技术^収ͼ比如J2EE?NET之争Q决定了你的应用E序的性能Q重要是你要对这U^台有一个较为深入的了解Q这样你才能从根本上对自q应用E序做一个优化?<br /><br />本文来自Qhttp://www.aygfsteel.com/sgsoft/articles/2378.html <br /><img src ="http://www.aygfsteel.com/honolulu14/aggbug/79947.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/honolulu14/" target="_blank">一~青?/a> 2006-11-08 20:42 <a href="http://www.aygfsteel.com/honolulu14/archive/2006/11/08/79947.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Servlet初始?/title><link>http://www.aygfsteel.com/honolulu14/archive/2006/10/30/78130.html</link><dc:creator>一~青?/dc:creator><author>一~青?/author><pubDate>Mon, 30 Oct 2006 11:54:00 GMT</pubDate><guid>http://www.aygfsteel.com/honolulu14/archive/2006/10/30/78130.html</guid><wfw:comment>http://www.aygfsteel.com/honolulu14/comments/78130.html</wfw:comment><comments>http://www.aygfsteel.com/honolulu14/archive/2006/10/30/78130.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/honolulu14/comments/commentRss/78130.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/honolulu14/services/trackbacks/78130.html</trackback:ping><description><![CDATA[ <h1 style="MARGIN: 17pt 0cm 16.5pt; TEXT-ALIGN: center" align="center"> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"> <font size="2"> <span style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 仿宋_GB2312; mso-bidi-font-size: 10.0pt">版权所有,转蝲请声明出?</span> <b> <span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: 仿宋_GB2312">zhyiwww@163.com</span> </b> </font> </span> </h1> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在读我自q认识之前</span> <span lang="EN-US">,</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">我们先来看一?/span> <span lang="EN-US">servet</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的结构图</span> <span lang="EN-US">:<br /></span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <span lang="EN-US"> <?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /?> <v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"> <v:stroke joinstyle="miter"> </v:stroke> <v:formulas> <v:f eqn="if lineDrawn pixelLineWidth 0"> </v:f> <v:f eqn="sum @0 1 0"> </v:f> <v:f eqn="sum 0 0 @1"> </v:f> <v:f eqn="prod @2 1 2"> </v:f> <v:f eqn="prod @3 21600 pixelWidth"> </v:f> <v:f eqn="prod @3 21600 pixelHeight"> </v:f> <v:f eqn="sum @0 0 1"> </v:f> <v:f eqn="prod @6 1 2"> </v:f> <v:f eqn="prod @7 21600 pixelWidth"> </v:f> <v:f eqn="sum @8 21600 0"> </v:f> <v:f eqn="prod @7 21600 pixelHeight"> </v:f> <v:f eqn="sum @10 21600 0"> </v:f> </v:formulas> <v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"> </v:path> <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?> <o:lock aspectratio="t" v:ext="edit"> </o:lock> </v:shapetype> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"> <img height="455" alt="servlet.png" src="http://www.aygfsteel.com/images/blogjava_net/zhyiwww/servlet.png" width="628" border="0" /> <br />以下是我自己的一Ҏ(gu)见:(x)</span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 20pt; mso-list: l0 level1 lfo1"> <span lang="EN-US" style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">① </span> <span lang="EN-US">Servlet</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在初始化的时?/span> <span lang="EN-US">,</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是通过</span> <span lang="EN-US">init(ServletConfig<span style="mso-spacerun: yes">  </span>config)</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span> <span lang="EN-US">init()</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">来执行的?/span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"> <span lang="EN-US">ServletConfig</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是一个接口,它怎样传递给他一格对象来q行初始化呢Q其实,是这个对象是?/span> <span lang="EN-US">servlet</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">容器来实例化的,由容器生一?/span> <span lang="EN-US">ServletConfig</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的实现类的对象,然后传递给</span> <span lang="EN-US">Servlet</span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"> <b style="mso-bidi-font-weight: normal"> <span style="FONT-SIZE: 16pt; COLOR: navy; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt">l论Q?/span> </b> <b style="mso-bidi-font-weight: normal"> <span lang="EN-US" style="FONT-SIZE: 16pt; COLOR: navy; mso-bidi-font-size: 10.0pt">ServletConfig</span> </b> <b style="mso-bidi-font-weight: normal"> <span style="FONT-SIZE: 16pt; COLOR: navy; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt">由容器实例化</span> </b> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 20pt; mso-list: l0 level1 lfo1"> <span lang="EN-US" style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">② </span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">我们有些时候可能在</span> <span lang="EN-US">Servlet</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">初始化时l它一些固定的配置参数Q那么这些参数是怎样传递到</span> <span lang="EN-US">Servlet</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">呢?</span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">其实Q我们在</span> <span lang="EN-US">web.xml</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中给</span> <span lang="EN-US">servlet</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">配置启动参数Q在容器?/span> <span lang="EN-US">servlet</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">q行初始化的时候,?x)收集你所配置的参敎ͼ记录?/span> <span lang="EN-US">ServletConfig</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的实现类中,所以你才可以通过</span> <span lang="EN-US">ServletConfig</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对象?/span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"> <span lang="EN-US"> <span style="mso-spacerun: yes">    </span>public String getInitParameter(String name);</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"> <span lang="EN-US"> <span style="mso-spacerun: yes">    </span>public Enumeration getInitParameterNames();</span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Ҏ(gu)来取得你已经配置好的参数Q也是_(d)你对</span> <span lang="EN-US">servlet</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的配|都已经记录?/span> <span lang="EN-US">ServletConfig</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对象中了?/span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"> <b style="mso-bidi-font-weight: normal"> <span style="FONT-SIZE: 15pt; COLOR: navy; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt">l论Q你?/span> </b> <b style="mso-bidi-font-weight: normal"> <span lang="EN-US" style="FONT-SIZE: 15pt; COLOR: navy; mso-bidi-font-size: 10.0pt">Servlet</span> </b> <b style="mso-bidi-font-weight: normal"> <span style="FONT-SIZE: 15pt; COLOR: navy; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt">的配|,?/span> </b> <b style="mso-bidi-font-weight: normal"> <span lang="EN-US" style="FONT-SIZE: 15pt; COLOR: navy; mso-bidi-font-size: 10.0pt">Servlet</span> </b> <b style="mso-bidi-font-weight: normal"> <span style="FONT-SIZE: 15pt; COLOR: navy; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt">的初始化旉由容器来攉q且记录?/span> </b> <b style="mso-bidi-font-weight: normal"> <span lang="EN-US" style="FONT-SIZE: 15pt; COLOR: navy; mso-bidi-font-size: 10.0pt">ServletConfig</span> </b> <b style="mso-bidi-font-weight: normal"> <span style="FONT-SIZE: 15pt; COLOR: navy; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt">的实现类中?/span> </b> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"> <span lang="EN-US"> <o:p></o:p></span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 20pt; mso-list: l0 level1 lfo1"> <span lang="EN-US" style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">③ </span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">我们来看一?/span> <span lang="EN-US">Servlet</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的配|?/span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"> <span lang="EN-US"> <span style="mso-spacerun: yes">  </span><servlet></span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"> <span lang="EN-US"> <span style="mso-spacerun: yes">    </span><servlet-name>index</servlet-name></span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"> <span lang="EN-US"> <span style="mso-spacerun: yes">    </span><servlet-class>org.zy.pro.sw.servlet.IndexServlet</servlet-class></span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"> <b style="mso-bidi-font-weight: normal"> <span lang="EN-US" style="FONT-SIZE: 14pt; COLOR: navy; mso-bidi-font-size: 10.0pt"> <span style="mso-spacerun: yes">    </span><init-param><o:p></o:p></span> </b> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"> <b style="mso-bidi-font-weight: normal"> <span lang="EN-US" style="FONT-SIZE: 14pt; COLOR: navy; mso-bidi-font-size: 10.0pt"> <span style="mso-spacerun: yes">      </span><param-name>dbconfig</param-name><o:p></o:p></span> </b> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"> <b style="mso-bidi-font-weight: normal"> <span lang="EN-US" style="FONT-SIZE: 14pt; COLOR: navy; mso-bidi-font-size: 10.0pt"> <span style="mso-spacerun: yes">      </span><param-value>/WEB-INF/dbconfig.xml</param-value><o:p></o:p></span> </b> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"> <b style="mso-bidi-font-weight: normal"> <span lang="EN-US" style="FONT-SIZE: 14pt; COLOR: navy; mso-bidi-font-size: 10.0pt"> <span style="mso-spacerun: yes">    </span></init-param></span> </b> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"> <span lang="EN-US"> <span style="mso-spacerun: yes">  </span></servlet></span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在此Q我们实现对数据库的配置文g的加载?/span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span> <span lang="EN-US">Servlet</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">初始化完成后Q我们可以通过</span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"> <span lang="EN-US">String<span style="mso-spacerun: yes">  </span>dbconf=this.getServletConfig().getInitParameter("dbconfig")</span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">来取得我们的配置的参数的倹{?/span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">但是Q我们仅能得C个配|的字符丌Ӏ之后我们可以通过配置文g取得我们的数据库的配|参敎ͼ然后Ҏ(gu)据库q行初始化?/span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">其实我们也可以通过传递一个类的名字串Q然后再实例化?/span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"> <b style="mso-bidi-font-weight: normal"> <span lang="EN-US" style="FONT-SIZE: 14pt; COLOR: navy; mso-bidi-font-size: 10.0pt"> <span style="mso-spacerun: yes">    </span><init-param><o:p></o:p></span> </b> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"> <b style="mso-bidi-font-weight: normal"> <span lang="EN-US" style="FONT-SIZE: 14pt; COLOR: navy; mso-bidi-font-size: 10.0pt"> <span style="mso-spacerun: yes">      </span><param-name>dbconfig</param-name><o:p></o:p></span> </b> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"> <b style="mso-bidi-font-weight: normal"> <span lang="EN-US" style="FONT-SIZE: 14pt; COLOR: navy; mso-bidi-font-size: 10.0pt"> <span style="mso-spacerun: yes">      </span><param-value>org.zy.util.db.DBUtil</param-value><o:p></o:p></span> </b> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"> <b style="mso-bidi-font-weight: normal"> <span lang="EN-US" style="FONT-SIZE: 14pt; COLOR: navy; mso-bidi-font-size: 10.0pt"> <span style="mso-spacerun: yes">   </span> <span style="mso-spacerun: yes"> </span></init-param><o:p></o:p></span> </b> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"> <b style="mso-bidi-font-weight: normal"> <span style="COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">我们先取得配|参敎ͼ(x)</span> <span lang="EN-US" style="COLOR: navy"> <o:p> </o:p> </span> </b> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"> <span lang="EN-US">String<span style="mso-spacerun: yes">  </span>dbconf=this.getServletConfig().getInitParameter("dbconfig")</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q?/span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">然后通过</span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"> <span lang="EN-US">Class.forName(dbconf).getInstance();</span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">来实例化对象Q就可以实现Ҏ(gu)据库的调用了?/span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"> <b style="mso-bidi-font-weight: normal"> <span style="FONT-SIZE: 15pt; COLOR: navy; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt">l论Q在</span> </b> <b style="mso-bidi-font-weight: normal"> <span lang="EN-US" style="FONT-SIZE: 15pt; COLOR: navy; mso-bidi-font-size: 10.0pt">web.xml</span> </b> <b style="mso-bidi-font-weight: normal"> <span style="FONT-SIZE: 15pt; COLOR: navy; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt">中对</span> </b> <b style="mso-bidi-font-weight: normal"> <span lang="EN-US" style="FONT-SIZE: 15pt; COLOR: navy; mso-bidi-font-size: 10.0pt">Servlet</span> </b> <b style="mso-bidi-font-weight: normal"> <span style="FONT-SIZE: 15pt; COLOR: navy; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt">的初始化Q只能传递字W串cd的数?/span> </b> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 20pt; mso-list: l0 level1 lfo1"> <span lang="EN-US" style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">④ </span> <span lang="EN-US">ServletContext</span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"> <span lang="EN-US">ServletContext</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是负责和</span> <span lang="EN-US">Servlet</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的上文和下文交互Q上面和</span> <span lang="EN-US">Servlet</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">容器交互Q下面和</span> <span lang="EN-US">Servlet</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中的h和相应进行交互?/span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span> <span lang="EN-US">ServletConfig</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中,</span> <span lang="EN-US"> <span style="mso-spacerun: yes">    </span> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"> <span lang="EN-US">public ServletContext getServletContext();</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Ҏ(gu)实现取得当前</span> <span lang="EN-US">ServletContext</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的对象?/span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">你可能要问,</span> <span lang="EN-US">ServletContext</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是一个接口,那么你如何取得他的对象呢Q?/span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">其实q个问题?/span> <span lang="EN-US">ServletConfig</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">相同Q都是在</span> <span lang="EN-US">Servlet</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">q行初始化的时候生的对象Q是由容器来初始化的?/span> </p> <img src ="http://www.aygfsteel.com/honolulu14/aggbug/78130.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/honolulu14/" target="_blank">一~青?/a> 2006-10-30 19:54 <a href="http://www.aygfsteel.com/honolulu14/archive/2006/10/30/78130.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>面直接打印的代?/title><link>http://www.aygfsteel.com/honolulu14/archive/2006/10/20/76378.html</link><dc:creator>一~青?/dc:creator><author>一~青?/author><pubDate>Fri, 20 Oct 2006 06:26:00 GMT</pubDate><guid>http://www.aygfsteel.com/honolulu14/archive/2006/10/20/76378.html</guid><wfw:comment>http://www.aygfsteel.com/honolulu14/comments/76378.html</wfw:comment><comments>http://www.aygfsteel.com/honolulu14/archive/2006/10/20/76378.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/honolulu14/comments/commentRss/76378.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/honolulu14/services/trackbacks/76378.html</trackback:ping><description><![CDATA[ <div id="wmqeeuq" class="postTitle"> <a id="viewpost1_TitleUrl" >关于web打印的ȝQ?/a> </div> <div id="wmqeeuq" class="postText"> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"> <img src="http://pbc1984.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /> <span style="COLOR: #000000">关于web打印的ȝ<br /><img src="http://pbc1984.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />Ҏ(gu)一Q?br /><img src="http://pbc1984.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />       调用览器的打印函数利用览器的模版<br /><img src="http://pbc1984.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />   源程序代码:(x)<br /><img src="http://pbc1984.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />         <br /><img src="http://pbc1984.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span> <span style="COLOR: #000000"><</span> <span style="COLOR: #000000">OBJECT id</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">WebBrowser</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000"> classid</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">CLSID:8856F961-340A-11D0-A96B-00C04FD705A2</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000"> height</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000"> <br /> <img src="http://pbc1984.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />                width</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000"> VIEWASTEXT</span> <span style="COLOR: #000000">></span> <span style="COLOR: #000000"> <br /> <img src="http://pbc1984.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />            </span> <span style="COLOR: #000000"></</span> <span style="COLOR: #000000">OBJECT</span> <span style="COLOR: #000000">></span> <span style="COLOR: #000000"> <br /> <img src="http://pbc1984.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />     说明Q此代码攑֜html 中 打印模版的指定框架为此代码在的模块Q?br /><img src="http://pbc1984.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />      调用E序Q?br /><img src="http://pbc1984.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />      </span> <span style="COLOR: #000000"><</span> <span style="COLOR: #000000">onclick</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">parent.main.focus();parent.main.WebBrowser.ExecWB(7,1);</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000"> <br /> <img src="http://pbc1984.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />调用览器的对象中的Ҏ(gu)<br /><img src="http://pbc1984.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span> <span style="COLOR: #000000"><</span> <span style="COLOR: #000000">2</span> <span style="COLOR: #000000">></span> <span style="COLOR: #000000"> 调用直接打印<br /><img src="http://pbc1984.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />      </span> <span style="COLOR: #000000"><</span> <span style="COLOR: #000000">onclick</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">parent.main.focus();parent.main.WebBrowser..print (7,1);</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000"> <br /> <img src="http://pbc1984.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /> </span> <span style="COLOR: #000000"><</span> <span style="COLOR: #000000">3</span> <span style="COLOR: #000000">></span> <span style="COLOR: #000000"> 当打印的时候不昄时的css样式<br /><img src="http://pbc1984.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />      </span> <span style="COLOR: #000000"><</span> <span style="COLOR: #000000">style media</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">print</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">></span> <span style="COLOR: #000000"> <br /> <img id="Codehighlighter1_465_479_Open_Image" onclick="this.style.display='none'; Codehighlighter1_465_479_Open_Text.style.display='none'; Codehighlighter1_465_479_Closed_Image.style.display='inline'; Codehighlighter1_465_479_Closed_Text.style.display='inline';" src="http://pbc1984.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /> <img id="Codehighlighter1_465_479_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_465_479_Closed_Text.style.display='none'; Codehighlighter1_465_479_Open_Image.style.display='inline'; Codehighlighter1_465_479_Open_Text.style.display='inline';" src="http://pbc1984.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" />.Noprint</span> <span id="Codehighlighter1_465_479_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"> <img src="http://pbc1984.cnblogs.com/Images/dot.gif" /> </span> <span id="Codehighlighter1_465_479_Open_Text"> <span style="COLOR: #000000">{display:none;}</span> </span> <span style="COLOR: #000000"> <br /> <img id="Codehighlighter1_490_516_Open_Image" onclick="this.style.display='none'; Codehighlighter1_490_516_Open_Text.style.display='none'; Codehighlighter1_490_516_Closed_Image.style.display='inline'; Codehighlighter1_490_516_Closed_Text.style.display='inline';" src="http://pbc1984.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /> <img id="Codehighlighter1_490_516_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_490_516_Closed_Text.style.display='none'; Codehighlighter1_490_516_Open_Image.style.display='inline'; Codehighlighter1_490_516_Open_Text.style.display='inline';" src="http://pbc1984.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" />.PageNext</span> <span id="Codehighlighter1_490_516_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"> <img src="http://pbc1984.cnblogs.com/Images/dot.gif" /> </span> <span id="Codehighlighter1_490_516_Open_Text"> <span style="COLOR: #000000">{page</span> <span style="COLOR: #000000">-</span> <span style="COLOR: #0000ff">break</span> <span style="COLOR: #000000">-</span> <span style="COLOR: #000000">after: always;}</span> </span> <span style="COLOR: #000000"> <br /> <img src="http://pbc1984.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /> </span> <span style="COLOR: #000000"></</span> <span style="COLOR: #000000">style</span> <span style="COLOR: #000000">></span> <span style="COLOR: #000000"> <br /> <img id="Codehighlighter1_541_573_Open_Image" onclick="this.style.display='none'; Codehighlighter1_541_573_Open_Text.style.display='none'; Codehighlighter1_541_573_Closed_Image.style.display='inline'; Codehighlighter1_541_573_Closed_Text.style.display='inline';" src="http://pbc1984.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /> <img id="Codehighlighter1_541_573_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_541_573_Closed_Text.style.display='none'; Codehighlighter1_541_573_Open_Image.style.display='inline'; Codehighlighter1_541_573_Open_Text.style.display='inline';" src="http://pbc1984.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" /> </span> <span style="COLOR: #000000"><</span> <span style="COLOR: #000000">style</span> <span style="COLOR: #000000">></span> <span style="COLOR: #000000">.TdCs1 </span> <span id="Codehighlighter1_541_573_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"> <img src="http://pbc1984.cnblogs.com/Images/dot.gif" /> </span> <span id="Codehighlighter1_541_573_Open_Text"> <span style="COLOR: #000000">{ border:solid windowtext </span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000">.0pt;}</span> </span> <span style="COLOR: #000000"> <br /> <img id="Codehighlighter1_582_632_Open_Image" onclick="this.style.display='none'; Codehighlighter1_582_632_Open_Text.style.display='none'; Codehighlighter1_582_632_Closed_Image.style.display='inline'; Codehighlighter1_582_632_Closed_Text.style.display='inline';" src="http://pbc1984.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /> <img id="Codehighlighter1_582_632_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_582_632_Closed_Text.style.display='none'; Codehighlighter1_582_632_Open_Image.style.display='inline'; Codehighlighter1_582_632_Open_Text.style.display='inline';" src="http://pbc1984.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" />.TdCs2 </span> <span id="Codehighlighter1_582_632_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"> <img src="http://pbc1984.cnblogs.com/Images/dot.gif" /> </span> <span id="Codehighlighter1_582_632_Open_Text"> <span style="COLOR: #000000">{ border:solid windowtext </span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000">.0pt; border</span> <span style="COLOR: #000000">-</span> <span style="COLOR: #000000">left:none;}</span> </span> <span style="COLOR: #000000"> <br /> <img id="Codehighlighter1_641_768_Open_Image" onclick="this.style.display='none'; Codehighlighter1_641_768_Open_Text.style.display='none'; Codehighlighter1_641_768_Closed_Image.style.display='inline'; Codehighlighter1_641_768_Closed_Text.style.display='inline';" src="http://pbc1984.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /> <img id="Codehighlighter1_641_768_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_641_768_Closed_Text.style.display='none'; Codehighlighter1_641_768_Open_Image.style.display='inline'; Codehighlighter1_641_768_Open_Text.style.display='inline';" src="http://pbc1984.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" />.TdCs3 </span> <span id="Codehighlighter1_641_768_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"> <img src="http://pbc1984.cnblogs.com/Images/dot.gif" /> </span> <span id="Codehighlighter1_641_768_Open_Text"> <span style="COLOR: #000000">{border</span> <span style="COLOR: #000000">-</span> <span style="COLOR: #000000">top:none;border</span> <span style="COLOR: #000000">-</span> <span style="COLOR: #000000">left:solid windowtext </span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000">.0pt; border</span> <span style="COLOR: #000000">-</span> <span style="COLOR: #000000">bottom:solid windowtext </span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000">.0pt; border</span> <span style="COLOR: #000000">-</span> <span style="COLOR: #000000">right:solid windowtext </span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000">.0pt;}</span> </span> <span style="COLOR: #000000"> <br /> <img id="Codehighlighter1_777_886_Open_Image" onclick="this.style.display='none'; Codehighlighter1_777_886_Open_Text.style.display='none'; Codehighlighter1_777_886_Closed_Image.style.display='inline'; Codehighlighter1_777_886_Closed_Text.style.display='inline';" src="http://pbc1984.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /> <img id="Codehighlighter1_777_886_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_777_886_Closed_Text.style.display='none'; Codehighlighter1_777_886_Open_Image.style.display='inline'; Codehighlighter1_777_886_Open_Text.style.display='inline';" src="http://pbc1984.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" />.TdCs4 </span> <span id="Codehighlighter1_777_886_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"> <img src="http://pbc1984.cnblogs.com/Images/dot.gif" /> </span> <span id="Codehighlighter1_777_886_Open_Text"> <span style="COLOR: #000000">{border</span> <span style="COLOR: #000000">-</span> <span style="COLOR: #000000">top:none;  border</span> <span style="COLOR: #000000">-</span> <span style="COLOR: #000000">left:none;border</span> <span style="COLOR: #000000">-</span> <span style="COLOR: #000000">bottom:solid windowtext </span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000">.0pt;border</span> <span style="COLOR: #000000">-</span> <span style="COLOR: #000000">right:solid windowtext </span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000">.0pt;}</span> </span> <span style="COLOR: #000000"> <br /> <img src="http://pbc1984.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />.underline <br /><img id="Codehighlighter1_900_1031_Open_Image" onclick="this.style.display='none'; Codehighlighter1_900_1031_Open_Text.style.display='none'; Codehighlighter1_900_1031_Closed_Image.style.display='inline'; Codehighlighter1_900_1031_Closed_Text.style.display='inline';" src="http://pbc1984.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_900_1031_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_900_1031_Closed_Text.style.display='none'; Codehighlighter1_900_1031_Open_Image.style.display='inline'; Codehighlighter1_900_1031_Open_Text.style.display='inline';" src="http://pbc1984.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" /></span> <span id="Codehighlighter1_900_1031_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"> <img src="http://pbc1984.cnblogs.com/Images/dot.gif" /> </span> <span id="Codehighlighter1_900_1031_Open_Text"> <span style="COLOR: #000000">{border</span> <span style="COLOR: #000000">-</span> <span style="COLOR: #000000">top</span> <span style="COLOR: #000000">-</span> <span style="COLOR: #000000">style: none;border</span> <span style="COLOR: #000000">-</span> <span style="COLOR: #000000">right</span> <span style="COLOR: #000000">-</span> <span style="COLOR: #000000">style: none; border</span> <span style="COLOR: #000000">-</span> <span style="COLOR: #000000">bottom</span> <span style="COLOR: #000000">-</span> <span style="COLOR: #000000">style: solid; border</span> <span style="COLOR: #000000">-</span> <span style="COLOR: #000000">left</span> <span style="COLOR: #000000">-</span> <span style="COLOR: #000000">style: none;border</span> <span style="COLOR: #000000">-</span> <span style="COLOR: #000000">bottom</span> <span style="COLOR: #000000">-</span> <span style="COLOR: #000000">color: #</span> <span style="COLOR: #000000">000000</span> <span style="COLOR: #000000">;}</span> </span> <span style="COLOR: #000000"> <br /> <img src="http://pbc1984.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />        </span> <span style="COLOR: #000000"></</span> <span style="COLOR: #000000">style</span> <span style="COLOR: #000000">></span> <span style="COLOR: #000000"> <br /> <img src="http://pbc1984.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />    <br /><img src="http://pbc1984.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span> <span style="COLOR: #000000"><</span> <span style="COLOR: #000000">4</span> <span style="COLOR: #000000">></span> <span style="COLOR: #000000"> 其余的设|?br /><img src="http://pbc1984.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />   </span> <span style="COLOR: #000000"><</span> <span style="COLOR: #000000">input type</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">button</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000"> value</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">打印</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000"> onclick</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">document.all.WebBrowser.ExecWB(6,1)</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #0000ff">class</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">NOPRINT</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">></span> <span style="COLOR: #000000"> <br /> <img src="http://pbc1984.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /> </span> <span style="COLOR: #000000"><</span> <span style="COLOR: #000000">input type</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">button</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000"> value</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">直接打onclick=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">document.all.WebBrowser.ExecWB(</span> <span style="COLOR: #000000">6</span> <span style="COLOR: #000000">,</span> <span style="COLOR: #000000">6</span> <span style="COLOR: #000000">)</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000"> class=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">NOPRINT</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">></span> <span style="COLOR: #000000"> <br /> <img src="http://pbc1984.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /> </span> <span style="COLOR: #000000"><</span> <span style="COLOR: #000000">input type</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">button</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000"> value</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">面讄</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000"> onclick</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">document.all.WebBrowser.ExecWB(8,1)</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #0000ff">class</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">NOPRINT</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">></span> <span style="COLOR: #000000"> <br /> <img src="http://pbc1984.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /> </span> <span style="COLOR: #000000"><</span> <span style="COLOR: #000000">input type</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">button</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000"> value</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">打印预览</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000"> onclick</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">document.all.WebBrowser.ExecWB(7,1)</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #0000ff">class</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">NOPRINT</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">></span> </div> </div> <p> <br /><html> <br /><head> <br /><title>看看</title> <br /><meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <br /><!--media=print q个属性可以在打印时有?-> <br /><style media=print> <br />.Noprint{display:none;} <br />.PageNext{page-break-after: always;} <br /></style> <br /><style> <br />.tdp <br />{ <br />border-bottom: 1 solid #000000; <br />border-left: 1 solid #000000; <br />border-right: 0 solid #ffffff; <br />border-top: 0 solid #ffffff; <br />} <br />.tabp <br />{ <br />border-color: #000000 #000000 #000000 #000000; <br />border-style: solid; <br />border-top-width: 2px; <br />border-right-width: 2px; <br />border-bottom-width: 1px; <br />border-left-width: 1px; <br />} <br />.NOPRINT { <br />font-family: "宋体"; <br />font-size: 9pt; <br />} <br /></style> <br /></head> <br /><body > <br /><center class="Noprint" > <br /><p> <br /><OBJECT id=WebBrowser classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 width=0> <br /></OBJECT> <br /><input type=button value=打印 onclick=document.all.WebBrowser.ExecWB(6,1)> <br /><input type=button value=直接打印 onclick=document.all.WebBrowser.ExecWB(6,6)> <br /><input type=button value=面讄 onclick=document.all.WebBrowser.ExecWB(8,1)> <br /></p> <br /><p> <input type=button value=打印预览 onclick=document.all.WebBrowser.ExecWB(7,1)> <br /><br/> <br /></p> <br /><hr align="center" width="90%" size="1" noshade> <br /></center> <br /><table width="90%" border="0" align="center" cellpadding="2" cellspacing="0" class="tabp"> <br /><tr> <br /><td colspan="3" class="tdp">W??lt;/td> <br /></tr> <br /><tr> <br /><td width="29%" class="tdp"> </td> <br /><td width="28%" class="tdp"> </td> <br /><td width="43%" class="tdp"> </td> <br /></tr> <br /><tr> <br /><td colspan="3" class="tdp"> </td> <br /></tr> <br /><tr> <br /><td colspan="3" class="tdp"><table width="100%" border="0" cellspacing="0" cellpadding="0"> <br /><tr> <br /><td width="50%" class="tdp"><p>q样的报?lt;/p> <br /><p>对一般的要求够了?lt;/p></td> <br /><td> </td> <br /></tr> <br /></table></td> <br /></tr> <br /></table> <br /><hr align="center" width="90%" size="1" noshade class="NOPRINT" > <br /><!--分页--> <br /><div class="PageNext"></div> <br /><table width="90%" border="0" align="center" cellpadding="2" cellspacing="0" class="tabp"> <br /><tr> <br /><td class="tdp">W??lt;/td> <br /></tr> <br /><tr> <br /><td class="tdp">看到分页了吧</td> <br /></tr> <br /><tr> <br /><td class="tdp"> </td> <br /></tr> <br /><tr> <br /><td class="tdp"> </td> <br /></tr> <br /><tr> <br /><td class="tdp"><table width="100%" border="0" cellspacing="0" cellpadding="0"> <br /><tr> <br /><td width="50%" class="tdp"><p>q样的报?lt;/p> <br /><p>对一般的要求够了?lt;/p></td> <br /><td> </td> <br /></tr> <br /></table></td> <br /></tr> <br /></table> <br /></body> <br /></html></p> <p> </p> <img src ="http://www.aygfsteel.com/honolulu14/aggbug/76378.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/honolulu14/" target="_blank">一~青?/a> 2006-10-20 14:26 <a href="http://www.aygfsteel.com/honolulu14/archive/2006/10/20/76378.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank">ʡ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƺ</a>| <a href="http://" target="_blank">ԭ</a>| <a href="http://" target="_blank">ɳ</a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">غ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank">»</a>| <a href="http://" target="_blank">̨</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ˮ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ͺ</a>| <a href="http://" target="_blank">Ϫ</a>| <a href="http://" target="_blank">⴨</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">²</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʡ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʯ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>