﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-Java Blog From WeiChunHua</title><link>http://www.blogjava.net/sunwch/</link><description>Java </description><language>zh-cn</language><lastBuildDate>Tue, 12 May 2026 23:50:12 GMT</lastBuildDate><pubDate>Tue, 12 May 2026 23:50:12 GMT</pubDate><ttl>60</ttl><item><title>JDBC连接数据库大全</title><link>http://www.blogjava.net/sunwch/archive/2008/12/17/246903.html</link><dc:creator>sunny   spring</dc:creator><author>sunny   spring</author><pubDate>Wed, 17 Dec 2008 08:47:00 GMT</pubDate><guid>http://www.blogjava.net/sunwch/archive/2008/12/17/246903.html</guid><wfw:comment>http://www.blogjava.net/sunwch/comments/246903.html</wfw:comment><comments>http://www.blogjava.net/sunwch/archive/2008/12/17/246903.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sunwch/comments/commentRss/246903.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sunwch/services/trackbacks/246903.html</trackback:ping><description><![CDATA[<div><span style="font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;现在有好多初学</span><span style="font-size: 9pt">jsp</span><span style="font-size: 9pt">的网友经常会问数据库怎么连接啊，怎么老出错啊？所以我集中的在这写篇文章供大家参考，其实这种把数据库逻辑全部放在</span><span style="font-size: 9pt">jsp</span><span style="font-size: 9pt">里未必是好的做法，但是有利于初学者学习，所以我就这样做了，当大家学到一定程度的时候，可以考虑用</span><span style="font-size: 9pt">MVC</span><span style="font-size: 9pt">的模式开发。在练习这些代码的时候，你一定将</span><span style="font-size: 9pt">jdbc</span><span style="font-size: 9pt">的驱动程序放到服务器的类路径里，然后要在数据库里建一个表</span><span style="font-size: 9pt">test,</span><span style="font-size: 9pt">有两个字段比如为</span><span style="font-size: 9pt">test1</span><span style="font-size: 9pt">，</span><span style="font-size: 9pt">test2</span><span style="font-size: 9pt">，可以用下面</span><span style="font-size: 9pt">SQL</span><span style="font-size: 9pt">建</span><span style="font-size: 9pt"> <br />
create table test(test1 varchar(20),test2 varchar(20) <br />
</span><span style="font-size: 9pt">然后向这个表写入一条测试纪录</span><span style="font-size: 9pt"> <br />
</span><span style="font-size: 9pt">那么现在开始我们的</span><span style="font-size: 9pt">jsp</span><span style="font-size: 9pt">和数据库之旅吧。</span><span style="font-size: 9pt"> <br />
</span><span style="font-size: 9pt">一、</span><span style="font-size: 9pt">jsp</span><span style="font-size: 9pt">连接</span><span style="font-size: 9pt">Oracle8/8i/9i</span><span style="font-size: 9pt">数据库（用</span><span style="font-size: 9pt">thin</span><span style="font-size: 9pt">模式）</span><span style="font-size: 9pt"> <br />
testoracle.jsp</span><span style="font-size: 9pt">如下：</span><span style="font-size: 9pt"> <br />
&lt;%@ page contentType="text/html;charset=gb2312"%&gt; <br />
&lt;%@ page import="java.sql.*"%&gt; <br />
&lt;html&gt; <br />
&lt;body&gt; <br />
&lt;%Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); <br />
String url="jdbc:oracle:thin:@localhost:1521:orcl"; <br />
//orcl</span><span style="font-size: 9pt">为你的数据库的</span><span style="font-size: 9pt">SID <br />
String user="scott"; <br />
String password="tiger"; <br />
Connection conn= DriverManager.getConnection(url,user,password); <br />
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); <br />
String sql="select * from test"; <br />
ResultSet rs=stmt.executeQuery(sql); <br />
while(rs.next()) {%&gt; <br />
</span><span style="font-size: 9pt">您的第一个字段内容为：</span><span style="font-size: 9pt">&lt;%=rs.getString(1)%&gt; <br />
</span><span style="font-size: 9pt">您的第二个字段内容为：</span><span style="font-size: 9pt">&lt;%=rs.getString(2)%&gt; <br />
&lt;%}%&gt; <br />
&lt;%out.print("</span><span style="font-size: 9pt">数据库操作成功，恭喜你</span><span style="font-size: 9pt">");%&gt; <br />
&lt;%rs.close(); <br />
stmt.close(); <br />
conn.close(); <br />
%&gt; <br />
&lt;/body&gt; <br />
&lt;/html&gt; <br />
</span><span style="font-size: 9pt">二、</span><span style="font-size: 9pt">jsp</span><span style="font-size: 9pt">连接</span><span style="font-size: 9pt">Sql Server7.0/2000</span><span style="font-size: 9pt">数据库</span><span style="font-size: 9pt"> <br />
testsqlserver.jsp</span><span style="font-size: 9pt">如下：</span><span style="font-size: 9pt"> <br />
&lt;%@ page contentType="text/html;charset=gb2312"%&gt; <br />
&lt;%@ page import="java.sql.*"%&gt; <br />
&lt;html&gt; <br />
&lt;body&gt; <br />
&lt;%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); <br />
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs"; <br />
//pubs</span><span style="font-size: 9pt">为你的数据库的</span><span style="font-size: 9pt"> <br />
String user="sa"; <br />
String password=""; <br />
Connection conn= DriverManager.getConnection(url,user,password); <br />
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); <br />
String sql="select * from test"; <br />
ResultSet rs=stmt.executeQuery(sql); <br />
while(rs.next()) {%&gt; <br />
</span><span style="font-size: 9pt">您的第一个字段内容为：</span><span style="font-size: 9pt">&lt;%=rs.getString(1)%&gt; <br />
</span><span style="font-size: 9pt">您的第二个字段内容为：</span><span style="font-size: 9pt">&lt;%=rs.getString(2)%&gt; <br />
&lt;%}%&gt; <br />
&lt;%out.print("</span><span style="font-size: 9pt">数据库操作成功，恭喜你</span><span style="font-size: 9pt">");%&gt; <br />
&lt;%rs.close(); <br />
stmt.close(); <br />
conn.close(); <br />
%&gt; <br />
&lt;/body&gt; <br />
&lt;/html&gt; <br />
</span><span style="font-size: 9pt">三、</span><span style="font-size: 9pt">jsp</span><span style="font-size: 9pt">连接</span><span style="font-size: 9pt">DB2</span><span style="font-size: 9pt">数据库</span><span style="font-size: 9pt"> <br />
testdb2.jsp</span><span style="font-size: 9pt">如下：</span><span style="font-size: 9pt"> <br />
&lt;%@ page contentType="text/html;charset=gb2312"%&gt; <br />
&lt;%@ page import="java.sql.*"%&gt; <br />
&lt;html&gt; <br />
&lt;body&gt; <br />
&lt;%Class.forName("com.ibm.db2.jdbc.app.DB2Driver ").newInstance(); <br />
String url="jdbc:db2://localhost:5000/sample"; <br />
//sample</span><span style="font-size: 9pt">为你的数据库名</span><span style="font-size: 9pt"> <br />
String user="admin"; <br />
String password=""; <br />
Connection conn= DriverManager.getConnection(url,user,password); <br />
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); <br />
String sql="select * from test"; <br />
ResultSet rs=stmt.executeQuery(sql); <br />
while(rs.next()) {%&gt; <br />
</span><span style="font-size: 9pt">您的第一个字段内容为：</span><span style="font-size: 9pt">&lt;%=rs.getString(1)%&gt; <br />
</span><span style="font-size: 9pt">您的第二个字段内容为：</span><span style="font-size: 9pt">&lt;%=rs.getString(2)%&gt; <br />
&lt;%}%&gt; <br />
&lt;%out.print("</span><span style="font-size: 9pt">数据库操作成功，恭喜你</span><span style="font-size: 9pt">");%&gt; <br />
&lt;%rs.close(); <br />
stmt.close(); <br />
conn.close(); <br />
%&gt; <br />
&lt;/body&gt; <br />
&lt;/html&gt; <br />
</span><span style="font-size: 9pt">四、</span><span style="font-size: 9pt">jsp</span><span style="font-size: 9pt">连接</span><span style="font-size: 9pt">Informix</span><span style="font-size: 9pt">数据库</span><span style="font-size: 9pt"> <br />
testinformix.jsp</span><span style="font-size: 9pt">如下：</span><span style="font-size: 9pt"> <br />
&lt;%@ page contentType="text/html;charset=gb2312"%&gt; <br />
&lt;%@ page import="java.sql.*"%&gt; <br />
&lt;html&gt; <br />
&lt;body&gt; <br />
&lt;%Class.forName("com.informix.jdbc.IfxDriver").newInstance(); <br />
String url = <br />
"jdbc:informix-sqli://123.45.67.89:1533/testDB:INFORMIXSERVER=myserver; <br />
user=testuser;password=testpassword"; <br />
//testDB</span><span style="font-size: 9pt">为你的数据库名</span><span style="font-size: 9pt"> <br />
Connection conn= DriverManager.getConnection(url); <br />
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); <br />
String sql="select * from test"; <br />
ResultSet rs=stmt.executeQuery(sql); <br />
while(rs.next()) {%&gt; <br />
</span><span style="font-size: 9pt">您的第一个字段内容为：</span><span style="font-size: 9pt">&lt;%=rs.getString(1)%&gt; <br />
</span><span style="font-size: 9pt">您的第二个字段内容为：</span><span style="font-size: 9pt">&lt;%=rs.getString(2)%&gt; <br />
&lt;%}%&gt; <br />
&lt;%out.print("</span><span style="font-size: 9pt">数据库操作成功，恭喜你</span><span style="font-size: 9pt">");%&gt; <br />
&lt;%rs.close(); <br />
stmt.close(); <br />
conn.close(); <br />
%&gt; <br />
&lt;/body&gt; <br />
&lt;/html&gt; <br />
</span><span style="font-size: 9pt">五、</span><span style="font-size: 9pt">jsp</span><span style="font-size: 9pt">连接</span><span style="font-size: 9pt">Sybase</span><span style="font-size: 9pt">数据库</span><span style="font-size: 9pt"> <br />
testmysql.jsp</span><span style="font-size: 9pt">如下：</span><span style="font-size: 9pt"> <br />
&lt;%@ page contentType="text/html;charset=gb2312"%&gt; <br />
&lt;%@ page import="java.sql.*"%&gt; <br />
&lt;html&gt; <br />
&lt;body&gt; <br />
&lt;%Class.forName("com.sybase.jdbc.SybDriver").newInstance(); <br />
String url =" jdbc:sybase:Tds:localhost:5007/tsdata"; <br />
//tsdata</span><span style="font-size: 9pt">为你的数据库名</span><span style="font-size: 9pt"> <br />
Properties sysProps = System.getProperties(); <br />
SysProps.put("user","userid"); <br />
SysProps.put("password","user_password"); <br />
Connection conn= DriverManager.getConnection(url, SysProps); <br />
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); <br />
String sql="select * from test"; <br />
ResultSet rs=stmt.executeQuery(sql); <br />
while(rs.next()) {%&gt; <br />
</span><span style="font-size: 9pt">您的第一个字段内容为：</span><span style="font-size: 9pt">&lt;%=rs.getString(1)%&gt; <br />
</span><span style="font-size: 9pt">您的第二个字段内容为：</span><span style="font-size: 9pt">&lt;%=rs.getString(2)%&gt; <br />
&lt;%}%&gt; <br />
&lt;%out.print("</span><span style="font-size: 9pt">数据库操作成功，恭喜你</span><span style="font-size: 9pt">");%&gt; <br />
&lt;%rs.close(); <br />
stmt.close(); <br />
conn.close(); <br />
%&gt; <br />
&lt;/body&gt; <br />
&lt;/html&gt; <br />
</span><span style="font-size: 9pt">六、</span><span style="font-size: 9pt">jsp</span><span style="font-size: 9pt">连接</span><span style="font-size: 9pt">MySQL</span><span style="font-size: 9pt">数据库</span><span style="font-size: 9pt"> <br />
testmysql.jsp</span><span style="font-size: 9pt">如下：</span><span style="font-size: 9pt"> <br />
&lt;%@ page contentType="text/html;charset=gb2312"%&gt; <br />
&lt;%@ page import="java.sql.*"%&gt; <br />
&lt;html&gt; <br />
&lt;body&gt; <br />
&lt;%Class.forName("org.gjt.mm.mysql.Driver").newInstance(); <br />
String url ="jdbc:mysql://localhost/softforum?user=soft&amp;password=soft1234&amp;useUnicode=true&amp;characterEncoding=8859_1" <br />
//testDB</span><span style="font-size: 9pt">为你的数据库名</span><span style="font-size: 9pt"> <br />
Connection conn= DriverManager.getConnection(url); <br />
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); <br />
String sql="select * from test"; <br />
ResultSet rs=stmt.executeQuery(sql); <br />
while(rs.next()) {%&gt; <br />
</span><span style="font-size: 9pt">您的第一个字段内容为：</span><span style="font-size: 9pt">&lt;%=rs.getString(1)%&gt; <br />
</span><span style="font-size: 9pt">您的第二个字段内容为：</span><span style="font-size: 9pt">&lt;%=rs.getString(2)%&gt; <br />
&lt;%}%&gt; <br />
&lt;%out.print("</span><span style="font-size: 9pt">数据库操作成功，恭喜你</span><span style="font-size: 9pt">");%&gt; <br />
&lt;%rs.close(); <br />
stmt.close(); <br />
conn.close(); <br />
%&gt; <br />
&lt;/body&gt; <br />
&lt;/html&gt; <br />
</span><span style="font-size: 9pt">七、</span><span style="font-size: 9pt">jsp</span><span style="font-size: 9pt">连接</span><span style="font-size: 9pt">PostgreSQL</span><span style="font-size: 9pt">数据库</span><span style="font-size: 9pt"> <br />
testmysql.jsp</span><span style="font-size: 9pt">如下：</span><span style="font-size: 9pt"> <br />
&lt;%@ page contentType="text/html;charset=gb2312"%&gt; <br />
&lt;%@ page import="java.sql.*"%&gt; <br />
&lt;html&gt; <br />
&lt;body&gt; <br />
&lt;%Class.forName("org.postgresql.Driver").newInstance(); <br />
String url ="jdbc:postgresql://localhost/soft" <br />
//soft</span><span style="font-size: 9pt">为你的数据库名</span><span style="font-size: 9pt"> <br />
String user="myuser"; <br />
String password="mypassword"; <br />
Connection conn= DriverManager.getConnection(url,user,password); <br />
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); <br />
String sql="select * from test"; <br />
ResultSet rs=stmt.executeQuery(sql); <br />
while(rs.next()) {%&gt; <br />
</span><span style="font-size: 9pt">您的第一个字段内容为：</span><span style="font-size: 9pt">&lt;%=rs.getString(1)%&gt; <br />
</span><span style="font-size: 9pt">您的第二个字段内容为：</span><span style="font-size: 9pt">&lt;%=rs.getString(2)%&gt; <br />
&lt;%}%&gt; <br />
&lt;%out.print("</span><span style="font-size: 9pt">数据库操作成功，恭喜你</span><span style="font-size: 9pt">");%&gt; <br />
&lt;%rs.close(); <br />
stmt.close(); <br />
conn.close(); <br />
%&gt; <br />
&lt;/body&gt; <br />
&lt;/html&gt;</span></div>
<img src ="http://www.blogjava.net/sunwch/aggbug/246903.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunwch/" target="_blank">sunny   spring</a> 2008-12-17 16:47 <a href="http://www.blogjava.net/sunwch/archive/2008/12/17/246903.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate入门程序</title><link>http://www.blogjava.net/sunwch/archive/2008/12/02/Hibernate.html</link><dc:creator>sunny   spring</dc:creator><author>sunny   spring</author><pubDate>Tue, 02 Dec 2008 02:19:00 GMT</pubDate><guid>http://www.blogjava.net/sunwch/archive/2008/12/02/Hibernate.html</guid><wfw:comment>http://www.blogjava.net/sunwch/comments/243855.html</wfw:comment><comments>http://www.blogjava.net/sunwch/archive/2008/12/02/Hibernate.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sunwch/comments/commentRss/243855.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sunwch/services/trackbacks/243855.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-size: 10pt">以下程序是Hiberante入门程序:代码如下:首先说hibernate开发流程.A、准备一个POJO类&nbsp; B、创建类的映射和配置文件(hibernate.cfg.xml&nbsp; class.hbm.xml)class.hbm.xml此配置文件是必须与POJO类中的属性一一对应.<br />
现在我以我创建的程序为例来进行说明:数据库为demo,表的名字为admin<br />
1、POJO类<br />
<p>package com.wch.pojo;</p>
<p>public class Admin {<br />
&nbsp;private int id;<br />
&nbsp;private String username;<br />
&nbsp;private String password;<br />
&nbsp;public int getId() {<br />
&nbsp;&nbsp;return id;<br />
&nbsp;}<br />
&nbsp;public void setId(int id) {<br />
&nbsp;&nbsp;this.id = id;<br />
&nbsp;}<br />
&nbsp;public String getPassword() {<br />
&nbsp;&nbsp;return password;<br />
&nbsp;}<br />
&nbsp;public void setPassword(String password) {<br />
&nbsp;&nbsp;this.password = password;<br />
&nbsp;}<br />
&nbsp;public String getUsername() {<br />
&nbsp;&nbsp;return username;<br />
&nbsp;}<br />
&nbsp;public void setUsername(String username) {<br />
&nbsp;&nbsp;this.username = username;<br />
&nbsp;}<br />
}<br />
</p>
class.hbm.xml映射文件存放位置必须于POJO位置一致.也就是说必须放在同一个目录.hibernate.cfg.xml放在src根目录下.<br />
2、创建hibernate.cfg.xml和class.hbm.xml(class指的是POJO类的名字)<br />
class.hbm.xml:<br />
&lt;?xml version="1.0" encoding="utf-8"?&gt;<br />
&lt;!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"<br />
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"&gt;<br />
&lt;!-- <br />
&nbsp;&nbsp;&nbsp; Mapping file autogenerated by MyEclipse Persistence Tools<br />
--&gt;<br />
&lt;hibernate-mapping&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;class name="com.wch.pojo.Admin" table="admin"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;id name="id" type="integer"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;column name="id" /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;generator class="assigned"&gt;&lt;/generator&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/id&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="username" type="string"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;column name="username" length="32" not-null="false" /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="password" type="string"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;column name="password" length="20" not-null="false" /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/class&gt;<br />
&lt;/hibernate-mapping&gt;<br />
hibernate.cfg.xml:<br />
<p>&lt;?xml version='1.0' encoding='UTF-8'?&gt;<br />
&lt;!DOCTYPE hibernate-configuration PUBLIC<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "-//Hibernate/Hibernate Configuration DTD 3.0//EN"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"&gt;</p>
<p>&lt;!-- Generated by MyEclipse Hibernate Tools.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --&gt;<br />
&lt;hibernate-configuration&gt;</p>
<p>&lt;session-factory&gt;<br />
&nbsp;&lt;property name="dialect"&gt;<br />
&nbsp;&nbsp;org.hibernate.dialect.MySQLDialect<br />
&nbsp;&lt;/property&gt;<br />
&nbsp;&lt;property name="connection.url"&gt;<br />
&nbsp;&nbsp;jdbc:mysql://localhost:3306/demo<br />
&nbsp;&lt;/property&gt;<br />
&nbsp;&lt;property name="connection.username"&gt;root&lt;/property&gt;<br />
&nbsp;&lt;property name="connection.password"&gt;****&lt;/property&gt;<br />
&nbsp;&lt;property name="connection.driver_class"&gt;<br />
&nbsp;&nbsp;com.mysql.jdbc.Driver<br />
&nbsp;&lt;/property&gt;<br />
&nbsp;&lt;property name="myeclipse.connection.profile"&gt;mysql5.0&lt;/property&gt;<br />
&nbsp;&lt;property name="show_sql"&gt;true&lt;/property&gt;<br />
&nbsp;&lt;mapping resource="com/wch/pojo/Admin.hbm.xml" /&gt;</p>
<p>&lt;/session-factory&gt;</p>
<p>&lt;/hibernate-configuration&gt;</p>
<br />
3、创建应用程序并进行代码测试:<br />
<p>package com.wch.op;</p>
<p>import org.hibernate.Session;<br />
import org.hibernate.SessionFactory;<br />
import org.hibernate.Transaction;<br />
import org.hibernate.cfg.Configuration;</p>
<p>import com.wch.pojo.Admin;</p>
<p>public class UserOperation {<br />
&nbsp;public static void main(String[] args)throws Exception{<br />
&nbsp;&nbsp;Configuration config = new Configuration().configure();<br />
&nbsp;&nbsp;// 创建工厂<br />
&nbsp;&nbsp;SessionFactory factory = config.buildSessionFactory();<br />
&nbsp;&nbsp;// 打开session <br />
&nbsp;&nbsp;Session session = factory.openSession();<br />
&nbsp;&nbsp;// 事务提交<br />
&nbsp;&nbsp;try{<br />
&nbsp;&nbsp;&nbsp;Transaction tx = session.beginTransaction();<br />
&nbsp;&nbsp;&nbsp;// 创建对象<br />
&nbsp;&nbsp;&nbsp;Admin hb = new Admin();<br />
&nbsp;&nbsp;&nbsp;hb.setId(3);<br />
&nbsp;&nbsp;&nbsp;hb.setUsername("Hibernate3.2");<br />
&nbsp;&nbsp;&nbsp;hb.setPassword("20081202");<br />
&nbsp;&nbsp;&nbsp;//hb.setUsername("WCH");<br />
&nbsp;&nbsp;&nbsp;//hb.setPassword("Hibernate");<br />
&nbsp;&nbsp;&nbsp;// 执行插入语句,在hibernat中操作的是一个对象<br />
&nbsp;&nbsp;&nbsp;session.save(hb);<br />
&nbsp;&nbsp;&nbsp;// 提交事务<br />
&nbsp;&nbsp;&nbsp;tx.commit();<br />
&nbsp;&nbsp;}catch(Exception e)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;System.out.println("error Msg:"+e.getMessage());<br />
&nbsp;&nbsp;}finally{<br />
&nbsp;&nbsp;&nbsp;&nbsp;// close session<br />
&nbsp;&nbsp;&nbsp;&nbsp;session.close();<br />
&nbsp;&nbsp;}<br />
&nbsp;}<br />
}<br />
</p>
更为详细的解释请参照Hibernate官方网站:www.hibernate.org<br />
<br />
<br />
</span>
<img src ="http://www.blogjava.net/sunwch/aggbug/243855.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunwch/" target="_blank">sunny   spring</a> 2008-12-02 10:19 <a href="http://www.blogjava.net/sunwch/archive/2008/12/02/Hibernate.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>windows系统命令全集</title><link>http://www.blogjava.net/sunwch/archive/2008/12/01/243722.html</link><dc:creator>sunny   spring</dc:creator><author>sunny   spring</author><pubDate>Mon, 01 Dec 2008 07:58:00 GMT</pubDate><guid>http://www.blogjava.net/sunwch/archive/2008/12/01/243722.html</guid><wfw:comment>http://www.blogjava.net/sunwch/comments/243722.html</wfw:comment><comments>http://www.blogjava.net/sunwch/archive/2008/12/01/243722.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sunwch/comments/commentRss/243722.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sunwch/services/trackbacks/243722.html</trackback:ping><description><![CDATA[<span style="font-size: 10pt">ASSOC&nbsp;&nbsp;&nbsp; 显示或修改文件扩展名关联。<br />
AT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 计划在计算机上运行的命令和程序。<br />
ATTRIB&nbsp;&nbsp; 显示或更改文件属性。<br />
BREAK&nbsp;&nbsp;&nbsp; 设置或清除扩展式 CTRL+C 检查。<br />
CACLS&nbsp;&nbsp;&nbsp; 显示或修改文件的访问控制列表(ACLs)。<br />
CALL&nbsp;&nbsp;&nbsp;&nbsp; 从另一个批处理程序调用这一个。<br />
CD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 显示当前目录的名称或将其更改。<br />
CHCP&nbsp;&nbsp;&nbsp;&nbsp; 显示或设置活动代码页数。<br />
CHDIR&nbsp;&nbsp;&nbsp; 显示当前目录的名称或将其更改。<br />
CHKDSK&nbsp;&nbsp; 检查磁盘并显示状态报告。<br />
CHKNTFS&nbsp; 显示或修改启动时间磁盘检查。<br />
CLS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 清除屏幕。<br />
CMD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 打开另一个 Windows 命令解释程序窗口。<br />
COLOR&nbsp;&nbsp;&nbsp; 设置默认控制台前景和背景颜色。<br />
COMP&nbsp;&nbsp;&nbsp;&nbsp; 比较两个或两套文件的内容。<br />
COMPACT&nbsp; 显示或更改 NTFS 分区上文件的压缩。<br />
CONVERT&nbsp; 将 FAT 卷转换成 NTFS。您不能转换<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当前驱动器。<br />
COPY&nbsp;&nbsp;&nbsp;&nbsp; 将至少一个文件复制到另一个位置。<br />
DATE&nbsp;&nbsp;&nbsp;&nbsp; 显示或设置日期。<br />
DEL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 删除至少一个文件。<br />
DIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 显示一个目录中的文件和子目录。<br />
DISKCOMP 比较两个软盘的内容。<br />
DISKCOPY 将一个软盘的内容复制到另一个软盘。<br />
DOSKEY&nbsp;&nbsp; 编辑命令行、调用 Windows 命令并创建宏。<br />
ECHO&nbsp;&nbsp;&nbsp;&nbsp; 显示消息，或将命令回显打开或关上。<br />
ENDLOCAL 结束批文件中环境更改的本地化。<br />
ERASE&nbsp;&nbsp;&nbsp; 删除至少一个文件。<br />
EXIT&nbsp;&nbsp;&nbsp;&nbsp; 退出 CMD.EXE 程序(命令解释程序)。<br />
FC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 比较两个或两套文件，并显示<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 不同处。<br />
FIND&nbsp;&nbsp;&nbsp;&nbsp; 在文件中搜索文字字符串。<br />
FINDSTR&nbsp; 在文件中搜索字符串。<br />
FOR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 为一套文件中的每个文件运行一个指定的命令。<br />
FORMAT&nbsp;&nbsp; 格式化磁盘，以便跟 Windows 使用。<br />
FTYPE&nbsp;&nbsp;&nbsp; 显示或修改用于文件扩展名关联的文件类型。<br />
GOTO&nbsp;&nbsp;&nbsp;&nbsp; 将 Windows 命令解释程序指向批处理程序<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 中某个标明的行。<br />
GRAFTABL 启用 Windows 来以图像模式显示<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 扩展字符集。<br />
HELP&nbsp;&nbsp;&nbsp;&nbsp; 提供 Windows 命令的帮助信息。<br />
IF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 执行批处理程序中的条件性处理。<br />
LABEL&nbsp;&nbsp;&nbsp; 创建、更改或删除磁盘的卷标。<br />
MD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 创建目录。<br />
MKDIR&nbsp;&nbsp;&nbsp; 创建目录。<br />
MODE&nbsp;&nbsp;&nbsp;&nbsp; 配置系统设备。<br />
MORE&nbsp;&nbsp;&nbsp;&nbsp; 一次显示一个结果屏幕。<br />
MOVE&nbsp;&nbsp;&nbsp;&nbsp; 将文件从一个目录移到另一个目录。<br />
PATH&nbsp;&nbsp;&nbsp;&nbsp; 显示或设置可执行文件的搜索路径。<br />
PAUSE&nbsp;&nbsp;&nbsp; 暂停批文件的处理并显示消息。<br />
POPD&nbsp;&nbsp;&nbsp;&nbsp; 还原 PUSHD 保存的当前目录的上一个值。<br />
PRINT&nbsp;&nbsp;&nbsp; 打印文本文件。<br />
PROMPT&nbsp;&nbsp; 更改 Windows 命令提示符。<br />
PUSHD&nbsp;&nbsp;&nbsp; 保存当前目录，然后对其进行更改。<br />
RD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 删除目录。<br />
RECOVER&nbsp; 从有问题的磁盘恢复可读信息。<br />
REM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 记录批文件或 CONFIG.SYS 中的注释。<br />
REN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 重命名文件。<br />
RENAME&nbsp;&nbsp; 重命名文件。<br />
REPLACE&nbsp; 替换文件。<br />
RMDIR&nbsp;&nbsp;&nbsp; 删除目录。<br />
SET&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 显示、设置或删除 Windows 环境变量。<br />
SETLOCAL 开始批文件中环境更改的本地化。<br />
SHIFT&nbsp;&nbsp;&nbsp; 更换批文件中可替换参数的位置。<br />
SORT&nbsp;&nbsp;&nbsp;&nbsp; 对输入进行分类。<br />
START&nbsp;&nbsp;&nbsp; 启动另一个窗口来运行指定的程序或命令。<br />
SUBST&nbsp;&nbsp;&nbsp; 将路径跟一个驱动器号关联。<br />
TIME&nbsp;&nbsp;&nbsp;&nbsp; 显示或设置系统时间。<br />
TITLE&nbsp;&nbsp;&nbsp; 设置 CMD.EXE 会话的窗口标题。<br />
TREE&nbsp;&nbsp;&nbsp;&nbsp; 以图形模式显示驱动器或路径的目录结构。<br />
TYPE&nbsp;&nbsp;&nbsp;&nbsp; 显示文本文件的内容。<br />
VER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 显示 Windows 版本。<br />
VERIFY&nbsp;&nbsp; 告诉 Windows 是否验证文件是否已正确<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 写入磁盘。<br />
VOL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 显示磁盘卷标和序列号。<br />
XCOPY&nbsp;&nbsp;&nbsp; 复制文件和目录树。</span>
<img src ="http://www.blogjava.net/sunwch/aggbug/243722.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunwch/" target="_blank">sunny   spring</a> 2008-12-01 15:58 <a href="http://www.blogjava.net/sunwch/archive/2008/12/01/243722.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>quartz 详解</title><link>http://www.blogjava.net/sunwch/archive/2008/11/21/quartz.html</link><dc:creator>sunny   spring</dc:creator><author>sunny   spring</author><pubDate>Fri, 21 Nov 2008 06:38:00 GMT</pubDate><guid>http://www.blogjava.net/sunwch/archive/2008/11/21/quartz.html</guid><wfw:comment>http://www.blogjava.net/sunwch/comments/241853.html</wfw:comment><comments>http://www.blogjava.net/sunwch/archive/2008/11/21/quartz.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/sunwch/comments/commentRss/241853.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sunwch/services/trackbacks/241853.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-size: 10pt">最近在开发的过程中,经常要使用系统自动清零的操作,比如说:系统在给定的时间跟客户发送电子邮件,在指定的时间段内执行某些操作等等,如果我们只是人工去操作的话不但步骤非常的麻烦而且觉得这是一个工作量非常大的任务,有了quartz框架以后我们所有的任务多可以交给它去做,程序员唯一要做的只是编写代码并配置一下程序就OK了,这样大大提高了开发速度和工作效率.配置步骤如下:<br />
1、编写quartz.properties文件:代码如下:<br />
#============================================================================<br />
# Configure Main Scheduler Properties&nbsp; <br />
#============================================================================<br />
org.quartz.scheduler.instanceName = QuartzScheduler<br />
org.quartz.scheduler.instanceId = AUTO<br />
#org.quartz.scheduler.rmi.export = false<br />
#org.quartz.scheduler.rmi.proxy = false<br />
#============================================================================<br />
# Configure ThreadPool&nbsp; <br />
#============================================================================<br />
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool<br />
org.quartz.threadPool.threadCount = 4<br />
org.quartz.threadPool.threadPriority = 5<br />
#============================================================================<br />
# Configure Plugins <br />
#============================================================================<br />
#org.quartz.plugin.triggHistory.class = org.quartz.plugins.history.LoggingJobHistoryPlugin<br />
org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin<br />
org.quartz.plugin.jobInitializer.fileName = /scheduler/quartz_job.xml<br />
org.quartz.plugin.jobInitializer.overWriteExistingJobs = false<br />
org.quartz.plugin.jobInitializer.failOnFileNotFound = true<br />
org.quartz.plugin.jobInitializer.scanInterval = 10<br />
org.quartz.plugin.shutdownhook.class = org.quartz.plugins.management.ShutdownHookPlugin<br />
org.quartz.plugin.shutdownhook.cleanShutdown = true<br />
#org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore<br />
2、编写quartz_job.xml<br />
&lt;?xml version='1.0' encoding='utf-8'?&gt;<br />
&lt;quartz&gt;<br />
&lt;job&gt;<br />
　　 &lt;job-detail&gt;<br />
&nbsp;&nbsp; 　　&lt;name&gt;test&lt;/name&gt;<br />
&nbsp;&nbsp; 　　&lt;group&gt;DEFAULT&lt;/group&gt;<br />
&nbsp;&nbsp; 　　&lt;description&gt;testJobhere&lt;/description&gt;<br />
&nbsp;&nbsp; 　　&lt;job-class&gt;scheduler.TestJob&lt;/job-class&gt;<br />
&nbsp;&nbsp; 　　&lt;job-data-map allows-transient-data="true"&gt;<br />
&nbsp;&nbsp;&nbsp; 　　&lt;entry&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; 　　&lt;key&gt;name&lt;/key&gt;<br />
&nbsp;&nbsp;&nbsp; 　　 &lt;value&gt;test&lt;/value&gt;<br />
&nbsp;&nbsp;&nbsp; 　　&lt;/entry&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/job-data-map&gt;<br />
　　&lt;/job-detail&gt;<br />
　　 &lt;trigger&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;cron&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;testCron&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;group&gt;DEFAULT&lt;/group&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;job-name&gt;test&lt;/job-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;job-group&gt;DEFALUT&lt;/job-group&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--x/?&nbsp; x表示间断启动时间&nbsp; ?表示执行间隔时间&nbsp; 13启动时间--&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;cron-expression&gt;0 1/2 23 * * ?&lt;/cron-expression&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--每月1号0点执行<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;cron-expression&gt;0 1 0 1 1-12 ?&lt;/cron-expression&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/cron&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/trigger&gt;<br />
&lt;/job&gt;<br />
3、编写java代码进行测试:<br />
import org.quartz.Job;<br />
import org.quartz.JobExecutionContext;<br />
import org.quartz.JobExecutionException;<br />
public class ZeroCount implements Job{<br />
&nbsp;&nbsp;&nbsp;&nbsp;public void execute(JobExecutionContext context) throws JobExecutionException<br />
&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;String name = context.getJobDetail().getJobDataMap().getString("name");<br />
System.out.println(name);<br />
<br />
}<br />
}<br />
出下以下结果表示配置成功:<br />
test<br />
4、此步骤是最后一步也是最重要的一步,只要加入如下代码的到/WEB-INF/web.xml文件中在指定的时间内就会执行系统调度.<br />
&lt;servlet&gt; <br />
&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;QuartzInitializer&lt;/servlet-name&gt; <br />
&nbsp;&nbsp;&nbsp; &lt;servlet-class&gt;org.quartz.ee.servlet.QuartzInitializerServlet&lt;/servlet-class&gt; <br />
&nbsp;&nbsp;&nbsp; &lt;init-param&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-name&gt;config-file&lt;/param-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-value&gt;/quartz.properties&lt;/param-value&gt; <br />
&nbsp;&nbsp;&nbsp; &lt;/init-param&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;init-param&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&lt;param-name&gt;shutdown-on-unload&lt;/param-name&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&lt;param-value&gt;true&lt;/param-value&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/init-param&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;init-param&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&lt;param-name&gt;start-scheduler-on-load&lt;/param-name&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&lt;param-value&gt;true&lt;/param-value&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/init-param&gt;<br />
&lt;/servlet&gt;<br />
<br />
参考网站:http://www.iocblog.net/project/quartz.html<br />
</span>
<img src ="http://www.blogjava.net/sunwch/aggbug/241853.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunwch/" target="_blank">sunny   spring</a> 2008-11-21 14:38 <a href="http://www.blogjava.net/sunwch/archive/2008/11/21/quartz.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts1.0问题</title><link>http://www.blogjava.net/sunwch/archive/2008/11/19/241419.html</link><dc:creator>sunny   spring</dc:creator><author>sunny   spring</author><pubDate>Wed, 19 Nov 2008 08:28:00 GMT</pubDate><guid>http://www.blogjava.net/sunwch/archive/2008/11/19/241419.html</guid><wfw:comment>http://www.blogjava.net/sunwch/comments/241419.html</wfw:comment><comments>http://www.blogjava.net/sunwch/archive/2008/11/19/241419.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sunwch/comments/commentRss/241419.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sunwch/services/trackbacks/241419.html</trackback:ping><description><![CDATA[<span style="font-size: 10pt; font-family: 隶书">16:14:10.437] {http--8888-7} java.lang.IllegalArgumentException: Resources cannot be null.<br />
[16:14:10.437] {http--8888-7} &nbsp;at org.apache.commons.validator.Validator.&lt;init&gt;(Validator.java:188)<br />
[16:14:10.437] {http--8888-7} &nbsp;at org.apache.struts.validator.Resources.initValidator(Resources.java:475)<br />
[16:14:10.437] {http--8888-7} &nbsp;at org.apache.struts.validator.ValidatorForm.validate(ValidatorForm.java:104)<br />
[16:14:10.437] {http--8888-7} &nbsp;at org.apache.struts.action.RequestProcessor.processValidate(RequestProcessor.java:928)<br />
[16:14:10.437] {http--8888-7} &nbsp;at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:204)<br />
[16:14:10.437] {http--8888-7} &nbsp;at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)<br />
[16:14:10.437] {http--8888-7} &nbsp;at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)<br />
[16:14:10.437] {http--8888-7} &nbsp;at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)<br />
[16:14:10.437] {http--8888-7} &nbsp;at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)<br />
[16:14:10.437] {http--8888-7} &nbsp;at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:103)<br />
[16:14:10.437] {http--8888-7} &nbsp;at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:187)<br />
[16:14:10.437] {http--8888-7} &nbsp;at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:266)<br />
[16:14:10.437] {http--8888-7} &nbsp;at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:270)<br />
[16:14:10.437] {http--8888-7} &nbsp;at com.caucho.server.port.TcpConnection.run(TcpConnection.java:678)<br />
[16:14:10.437] {http--8888-7} &nbsp;at com.caucho.util.ThreadPool$Item.runTasks(ThreadPool.java:721)<br />
[16:14:10.437] {http--8888-7} &nbsp;at com.caucho.util.ThreadPool$Item.run(ThreadPool.java:643)<br />
[16:14:10.437] {http--8888-7} &nbsp;at java.lang.Thread.run(Thread.java:619)<span style="font-size: 10pt"><br />
以上错误是因为struts-config.xml文件中&lt;form-beans&gt;中form的路径不正确所致.</span></span>
<img src ="http://www.blogjava.net/sunwch/aggbug/241419.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunwch/" target="_blank">sunny   spring</a> 2008-11-19 16:28 <a href="http://www.blogjava.net/sunwch/archive/2008/11/19/241419.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CSS 全解</title><link>http://www.blogjava.net/sunwch/archive/2008/06/30/211621.html</link><dc:creator>sunny   spring</dc:creator><author>sunny   spring</author><pubDate>Mon, 30 Jun 2008 03:22:00 GMT</pubDate><guid>http://www.blogjava.net/sunwch/archive/2008/06/30/211621.html</guid><wfw:comment>http://www.blogjava.net/sunwch/comments/211621.html</wfw:comment><comments>http://www.blogjava.net/sunwch/archive/2008/06/30/211621.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sunwch/comments/commentRss/211621.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sunwch/services/trackbacks/211621.html</trackback:ping><description><![CDATA[<span style="font-size: 10pt"><span style="font-size: 12pt">CSS在英文中有如下几种常见的缩写：<br />
<br />
<strong>1，Cascading Style Sheets 层叠样式表</strong><br />
<br />
<strong>2，Content Scrambling System DVD电影的加密系统</strong><br />
<br />
<strong>3，Cast Semi-Steel 半铸钢, 钢性铸铁</strong><br />
<br />
<strong>4，College Scholarship Service 大学奖学金处</strong><br />
<br />
<br />
<br />
其中在网络上最常见的是Cascading Style Sheets（层叠样式表）<br />
<br />
</span></span>
<div class="titord_first"><span class="t1"><a name="1"><span style="font-size: 10pt"></span></a><strong><span style="font-size: 10pt"><span style="font-size: 12pt">感性体验CSS</span></span></strong></span></div>
<br />
<br />
<span style="font-size: 10pt"><span style="font-size: 12pt">什么是CSS呢？你可能急迫的想知道答案。但是空泛的文字描述意义不大，让我们先来一点感性体验吧。看看这个没有添加CSS的HTML文件：http://www.csszengarden.com/zengarden-sample.html<br />
是一个普普通通的网页。然而通过给这个文件添加的CSS规则，我们可以得到十分美观的网页：http://www.csszengarden.com/<br />
<br />
这还不是全部，不改动HTML，只是通过添加不同的CSS规则，我们就可以得到各种不同样式的网页：<br />
http://www.csszengarden.com/?cssfile=/208/208.css&amp;page=0<br />
好了，下面我们再来回答什么是CSS这个问题。<br />
<br />
什么是Cascading Style Sheets（层叠样式表）<br />
<br />
* CSS是Cascading Style Sheets(层叠样式表)的简称.<br />
* CSS语言是一种标记语言,它不需要编译,可以直接由浏览器执行(属于浏览器解释型语言).<br />
* 在标准网页设计中CSS负责网页内容(XHTML)的表现.<br />
* CSS文件也可以说是一个文本文件,它包含了一些CSS标记,CSS文件必须使用css为文件名后缀.<br />
* 可以通过简单的更改CSS文件,改变网页的整体表现形式,可以减少我们的工作量,所以她是每一个网页设计人员的必修课.<br />
* CSS是由W3C的CSS工作组产生和维护的.<br />
</span></span>
<div class="titord"><span class="arr"><a title="返回页首" href="http://baike.baidu.com/view/15916.htm#" name="STAT_ONCLICK_UNSUBMIT_CATALOG_RETURN"></a></span><span class="t1"><a name="2"><span style="font-size: 10pt"></span></a><strong><span style="font-size: 10pt"><span style="font-size: 12pt">如何将样式表加入到网页</span></span></strong></span></div>
<span style="font-size: 10pt"><span style="font-size: 12pt">可以用以下三种方式将样式表加入您的网页。而最接近目标的样式定义优先权越高。高优先权样式将继承低优先权样式的未重叠定义但覆盖重叠的定义。例外请参阅 !important 声明。 <br />
<br />
<strong>链入外部样式表文件 (Linking to a Style Sheet)</strong><br />
你可以先建立外部样式表文件（.css），然后使用HTML的link对象。示例如下：<br />
&lt;head&gt;<br />
&lt;title&gt;文档标题&lt;/title&gt;<br />
&lt;link rel=stylesheet href="http://www.dhtmlet.com/dhtmlet.css" type="text/css"&gt;<br />
&lt;/head&gt;<br />
而在XML中，你应该如下例所示在声明区中加入： <br />
&lt;? xml-stylesheet type="text/css" href="http://www.dhtmlet.com/dhtmlet.css" ?&gt;<br />
<br />
<strong>定义内部样式块对象 (Embedding a Style Block)</strong><br />
你可以在你的HTML文档的&lt;HTML&gt;和&lt;BODY&gt;标记之间插入一个&lt;STYLE&gt;...&lt;/STYLE&gt;块对象。 定义方式请参阅样式表语法。示例如下： <br />
&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;文档标题&lt;/title&gt;<br />
&lt;style type="text/css"&gt;<br />
&lt;!--<br />
body {font: 10pt "Arial"}<br />
h1 {font: 15pt/17pt "Arial"; font-weight: bold; color: maroon}<br />
h2 {font: 13pt/15pt "Arial"; font-weight: bold; color: blue}<br />
p {font: 10pt/12pt "Arial"; color: black}<br />
--&gt;<br />
&lt;/style&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt; <br />
请注意，这里将style对象的type属性设置为"text/css"，是允许不支持这类型的浏览器忽略样式表单。 <br />
<br />
<strong>内联定义 (Inline Styles)</strong><br />
内联定义即是在对象的标记内使用对象的style属性定义适用其的样式表属性。示例如下：<br />
这一行被增加了左右的外补丁 <br />
<br />
<br />
<strong>Cascading Style Sheets（层叠样式表）的历史</strong><br />
从1990年代初HTML被发明开始样式表就以各种形式出现了，不同的浏览器结合了它们各自的样式语言，读者可以使用这些样式语言来调节网页的显示方式。一开始样式表是给读者用的，最初的HTML版本只含有很少的显示属性，读者来决定网页应该怎样被显示。 <br />
但随着HTML的成长，为了满足设计师的要求，HTML获得了很多显示功能。随着这些功能的增加外来定义样式的语言越来越没有意义了。 <br />
1994年哈坤&#183;利提出了CSS的最初建议。伯特&#183;波斯（Bert Bos）当时正在设计一个叫做Argo的浏览器，他们决定一起合作设计CSS。 <br />
当时已经有过一些样式表语言的建议了，但CSS是第一个含有&#8220;层叠&#8221;的主意的。在CSS中，一个文件的样式可以从其它的样式表中继承下来。读者在有些地方可以使用他自己更喜欢的样式，在其他地方则继承，或&#8220;层叠&#8221;作者的样式。这种层叠的方式使作者和读者都可以灵活地加入自己的设计，混合各人的爱好。 <br />
哈坤于1994年在芝加哥的一次会议上第一次展示了CSS的建议，1995年他与波斯一起再次展示这个建议。当时W3C刚刚建立，W3C对CSS的发展很感兴趣，它为此组织了一次讨论会。哈坤、波斯和其他一些人（比如微软的托马斯&#183;雷尔登）是这个项目的主要技术负责人。1996年底，CSS已经完成。1996年12月CSS要求的第一版本被出版。 <br />
1997年初，W3C内组织了专门管CSS的工作组，其负责人是克里斯&#183;里雷。这个工作组开始讨论第一版中没有涉及到的问题，其结果是1998年5月出版的第二版要求。到2004年为止，第三版还未出版。<br />
<br />
* 1996年W3C正式推出了CSS1.<br />
* 1998年W3C正式推出了CSS2.<br />
* CSS2.1是W3C现在正在推荐使用的.<br />
* CSS3现在还处于开发中.<br />
<br />
<strong>网页设计中常用的CSS属性</strong><br />
<br />
文字或元素的颜色 color<br />
背景颜色 background-color<br />
背景图像 background-image<br />
字体 font-family<br />
文字大小 font-size<br />
列表样式 list<br />
鼠标样式 cursor<br />
边框样式 border<br />
内补白 padding<br />
外边距 margin<br />
等... <br />
<br />
<br />
</span></span>
<div class="titord"><span class="arr"><a title="返回页首" href="http://baike.baidu.com/view/15916.htm#" name="STAT_ONCLICK_UNSUBMIT_CATALOG_RETURN"></a></span><span class="t1"><a name="3"><span style="font-size: 10pt"></span></a><strong><span style="font-size: 10pt"><span style="font-size: 12pt">CSS的语法:</span></span></strong></span></div>
<span style="font-size: 10pt"><span style="font-size: 12pt">　　CSS的定义是由三个部分构成:<br />
　　选择符(selector)，属性(properties)和属性的取值(value)。<br />
　　语法: selector {property: value} (选择符 {属性:值})<br />
　　说明:<br />
　　&#183;选择符是可以是多种形式，一般是你要定义样式的HTML标记，例如BODY、P、TABLE&#8230;&#8230;，你可以通过此方法定义它的属性和值，属性和值要用冒号隔开:<br />
　　例子:body {color: black}，此例的效果是使页面中的文字为黑色。<br />
　　&#183;如果属性的值是多个单词组成，必须在值上加引号，比如字体的名称经常是几个单词的组合:<br />
　　例子:p {font-family: "sans serif"} (定义段落字体为sans serif)<br />
　　&#183; 如果需要对一个选择符指定多个属性时，我们使用分号将所有的属性和值分开:<br />
　　例子:p {text-align: center; color: red} (段落居中排列;并且段落中的文字为红色)<br />
　　2. 选择符组<br />
　　你可以把相同属性和值的选择符组合起来书写，用逗号将选择符分开，这样可以减少样式重复定义:<br />
　　h1, h2, h3, h4, h5, h6 { color: green } (这个组里包括所有的标题元素，每个标题元素的文字都为绿色)<br />
　　p, table{ font-size: 9pt } (段落和表格里的文字尺寸为9号字)<br />
　　效果完全等效于:<br />
　　p { font-size: 9pt }<br />
　　table { font-size: 9pt }<br />
　　3. 类选择符<br />
　　用类选择符你能够把相同的元素分类定义不同的样式，定义类选择符时，在自定类的名称前面加一个点号。假如你想要两个不同的段落，一个段落向右对齐，一个段落居中，你可以先定义两个类:<br />
　　p.right {text-align: right}<br />
　　p.center {text-align: center}<br />
　　然后用不在不同的段落里，只要在HTML标记里加入你定义的class参数:<br />
　　这个段落向右对齐的<br />
　　这个段落是居中排列的<br />
　　类选择符还有一种用法，在选择符中省略HTML标记名，这样可以把几个不同的元素定义成相同的样式:<br />
　　.center {text-align: center} (定义.center的类选择符为文字居中排列)<br />
　　这样的类可以被应用到任何元素上。下面我们使h1元素(标题1)和p元素(段落)都归为&#8220;center&#8221;类，这使两个元素的样式都跟随&#8220;.center&#8221;这个类选择符:<br />
　　&lt;h1 class="center"&gt;这个标题是居中排列的&lt;/h1&gt;<br />
　　这个段落也是居中排列的<br />
<br />
　　注意:这种省略HTML标记的类选择符是我们经后最常用的CSS方法，使用这种方法，我们可以很方便的在任意元素上套用预先定义好的类样式。<br />
　　4. ID选择符<br />
　　在HTML页面中ID参数指定了某个单一元素，ID选择符是用来对这个单一元素定义单独的样式。<br />
　　ID选择符的应用和类选择符类似，只要把CLASS换成ID即可。将上例中类用ID替代:<br />
　　这个段落向右对齐<br />
　　定义ID选择符要在ID名称前加上一个&#8220;#&#8221;号。和类选择符相同，定义ID选择符的属性也有两种方法。下面这个例子，ID属性将匹配所有id="intro"的元素:<br />
　　#intro<br />
　　{<br />
　　font-size:110%;<br />
　　font-weight:bold;<br />
　　color:#0000ff;<br />
　　background-color:transparent<br />
　　} (字体尺寸为默认尺寸的110%;粗体;蓝色;背景颜色透明)<br />
　　下面这个例子，ID属性只匹配id="intro"的段落元素:<br />
　　p#intro<br />
　　{<br />
　　font-size:110%;<br />
　　font-weight:bold;<br />
　　color:#0000ff;<br />
　　background-color:transparent<br />
　　}<br />
　　注意:ID选择符局限性很大，只能单独定义某个元素的样式，一般只在特殊情况下使用。<br />
　　5. 包含选择符<br />
　　可以单独对某种元素包含关系定义的样式表，元素1里包含元素2，这种方式只对在元素1里的元素2定义，对单独的元素1或元素2无定义，例如:<br />
　　table a<br />
　　{<br />
　　font-size: 12px<br />
　　}<br />
　　在表格内的链接改变了样式，文字大小为12象素，而表格外的链接的文字仍为默认大小。<br />
　　6. 样式表的层叠性<br />
　　层叠性就是继承性，样式表的继承规则是外部的元素样式会保留下来继承给这个元素所包含的其他元素。事实上，所有在元素中嵌套的元素都会继承外层元素指定的属性值，有时会把很多层嵌套的样式叠加在一起，除非另外更改。例如在DIV标记中嵌套P标记:<br />
　　div { color: red; font-size:9pt}<br />
　　&#8230;&#8230;<br />
　　这个段落的文字为红色9号字<br />
　　(P元素里的内容会继承DIV定义的属性)<br />
　　注意:有些情况下内部选择符不继承周围选择符的值，但理论上这些都是特殊的。例如，上边界属性值是不会继承的，直觉上，一个段落不会同文档BODY一样的上边界值。<br />
　　另外，当样式表继承遇到冲突时，总是以最后定义的样式为准。如果上例中定义了P的颜色:<br />
　　div { color: red; font-size:9pt}<br />
　　p {color: blue}<br />
　　&#8230;&#8230;<br />
　　这个段落的文字为蓝色9号字<br />
　　我们可以看到段落里的文字大小为9号字是继承div属性的，而color属性则依照最后定义的。<br />
　　不同的选择符定义相同的元素时，要考虑到不同的选择符之间的优先级。ID选择符，类选择符和HTML标记选择符，因为ID选择符是最后加上元素上的，所以优先级最高，其次是类选择符。如果想超越这三者之间的关系，可以用!important提升样式表的优先权，例如:<br />
　　p { color: #FF0000!important }<br />
　　.blue { color: #0000FF}<br />
　　#id1 { color: #FFFF00}<br />
　　我们同时对页面中的一个段落加上这三种样式，它最后会依照被!important申明的HTML标记选择符样式为红色文字。如果去掉!important，则依照优先权最高的ID选择符为黄色文字。<br />
　　<br />
7. 注释:/* ... */<br />
　　你可以在CSS中插入注释来说明你代码的意思，注释有利于你或别人以后编辑和更改代码时理解代码的含义。在浏览器中，注释是不显示的。CSS注释以"/*" 开头，以"*/" 结尾，如下:<br />
　　/* 定义段落样式表 */<br />
　　p<br />
　　{<br />
　　text-align: center; /* 文本居中排列 */<br />
　　color: black; /* 文字为黑色 */<br />
　　font-family: arial /* 字体为arial */<br />
　　}<br />
<br />
<br />
<br />
css可以用任何写文本的工具进行开发,如文本工具,dreamweaver开发<br />
css也是一种语言,这种语言要和html或者xhtml语言相结合才起作用,<br />
css简单来说就是用来美化网页用的,用css语言来控制网页的外观<br />
举个例子<br />
xhtml部分:<br />
&lt;ul&gt;<br />
&lt;li&gt;主页&lt;/li&gt;<br />
&lt;li&gt;留言&lt;/li&gt;<br />
&lt;li&gt;论坛&lt;/li&gt;<br />
&lt;/ul&gt;<br />
此时在页面上的表达形式是一个竖向列表,这样不够美观,<br />
可以css来改善这个列表为一个横向导航条和超链接<br />
css部分:<br />
ul{list-style:none;margin:0px;padding:0px}<br />
ul li{margin:0px;padding:0px;float:left;}<br />
ul li a{display:block;width:100px;height:30px;background:#efefef;color:#333;text-decoration:none;text-align:center}<br />
ul li a:hover{background:#333;color:#fff;}<br />
添加上css后,这个列表变成横向的导航条了,超级链接是淡色背景,灰色字体,没有下划线,高度是30像素,宽度是100像素<br />
当我们鼠标经过这个超级链接时候,变成灰色背景,白色字体<br />
<br />
<br />
在主页制作时采用CSS技术，可以有效地对页面的布局、字体、颜色、背景和其它效果实现更加精确的控制。 <br />
<br />
只要对相应的代码做一些简单的修改，就可以改变同一页面的不同部分，或者页数不同的网页的外观和格式。 <br />
<br />
它的作用可以达到： <br />
<br />
（1）在几乎所有的浏览器上都可以使用。 <br />
<br />
（2）以前一些非得通过图片转换实现的功能，现在只要用CSS就可以轻松实现，从而更快地下载页面。 <br />
<br />
（3）使页面的字体变得更漂亮，更容易编排，使页面真正赏心悦目。 <br />
<br />
（4）你可以轻松地控制页面的布局 。 <br />
<br />
（5）你可以将许多网页的风格格式同时更新，不用再一页一页地更新了。你可以将站点上所有的网页风格都使用一个CSS文件进行控制，只要修改这个CSS文件中相应的行，那么整个站点的所有页面都会随之发生变动。 <br />
<br />
想一想，没有使用CSS前我们是如何控制字体的颜色和大小以及所使用的字体的？我们一般使用HTML标签来实现，代码非常烦琐。<br />
<br />
很难想象，如果在一个页面里需要频繁地更替字体的颜色大小，最终生成的HTML代码的长度一定臃肿不堪。 <br />
<br />
说实话，CSS就是为了简化这样的工作诞生的，当然其功能决非这么简单。 <br />
<br />
CSS是通过对页面结构的风格控制的思想，控制整个页面的风格的。 <br />
<br />
式样单放在页面中，通过浏览器的解释执行，是完全的文本，任何懂得HTML的人都可以掌握，非常的容易。甚至对一些非常老的浏览器，也不会产生页面混乱的现象。<br />
<br />
CSS的一大优点是它的图片传输速度比较完全的HTML网页要快一点。<br />
<br />
CSS:<br />
Chinese,Surface-to-Surface<br />
中国面对面导弹 简称ＣＳＳ－Ｎ <br />
CSS具有两面性。就像它在格式化文本、导航栏、图片以及其他小小的网页方面很棒一样，当你准备好布局完整的网页时，它真正可怕的一面也展现出来了。<br />
CSS布局有两种风格——绝对定位和浮动。绝对定位让你把一个元素以像素级的精确性定位在网页的任何位置——或者理论上是这样。这种整体控制令人兴奋，就如你将在下一章中所看到的，但是实际上很难实现。这就是大量网页使用基于浮动的布局的原因，也是本章的主题。<br />
CSS布局如何进行<br />
How CSS Layout Works<br />
如在第1章中讨论过的，HTML的局限性迫使设计师们去开发更聪明的方式来使他们的网页更美观。过去最常用的工具是[table]标签，它本是用来创建电子数据表——比如由数据行和列组成的信息显示表。但是设计师们却用HTML的表格来创建一种用来组织网页内容的脚手架（见图11-1）。可是由于[table]标签本来不是要用于布局的，因此设计师们不得不经常以各种不寻常的方式来使用这个标签——比如把一个表格放在另一个表格的单元里面——仅仅为了得到他们想要的效果。这种方法的工作量很大，增加了大量额外的HTML代码，并使得后面要修改设计很难。但是在CSS出现之前，那就是网页设计师们所拥有的一切办法。<br />
如果你已经习惯于使用[table]标签，那么当你开始使用CSS进行布局时，必须发展一种新的思维。首先，忘掉行和列（运用表格时的一种重要的观念）。没有<br />
列跨度、行跨度和格子状的表格结构在CSS中是找不到的。然而，你可以把一个标签当成一个表格单元。有了表格单元，标签就是把你要的内容定位在网页区域的一个逻辑位置。此外，如你所见，CSS设计经常把一个div嵌套在另一个div里面，就像你把表格嵌套在表格里面来获得特定的效果一样——但是，幸运的是，CSS方法只用少得多的HTML代码。<br />
强大的标签<br />
The Mighty&nbsp;&nbsp; Tag<br />
无论使用表格还是CSS，网页布局都是把大块的内容放进网页的不同区域里面。有了CSS，最常用来组织内容的元素就是标签。如第18页所述，标签是没有固有格式化属性的一个HTML元素（除了浏览器把这个标签当成前后有换行的块之外）；反之，它被用来标识元素的一个逻辑组合或者网页中的一个分区。<br />
你将代表性地把一大块属于一起的HTML包围在一个里面。图11-1中包含logo和导航栏的元素占据了网页顶部，因此用一个标签把它们包围起来很有意义。至少，你要给网页的所有主要区域包含标签，例如横幅、主要内容区域、工具条、页脚，等等。但是它也可能把一个或者更多的div包在一个里面。一种最常用的方法就是把&lt;body&gt;标签里面的HTML包在一个里面。然后可以通过把CSS应用到包装，设置基础的页面属性。你可以给网页内容设定一个整体的宽度，设置左边距和右边距，或者把所有网页内容在屏幕的中间居中。（在第313页的教程中，你有机会用到一个包装。）<br />
一旦已经把标签放在了适当的位置上，再给每个标签添加一个类或者ID，变成你分别对每个定义样式的句柄。对于只出现一次和形成网页的基本构建块的网页部位，设计师们通常使用一个ID。一个网页横幅区域的标<br />
签看起来可能像这样：。你可以对一个ID每页只使用一次，因此当有一个多次显示的元素时，就用一个类代替。如果你有几个定位照片和照片说明的div时，可以创建一个样式像这样：。<br />
有了类似这些的样式，就可以定位各种各样的网页元素了。利用CSS的float属性，你可以定位不同的内容块给一张网页的左边或者右边（或者一个包含块比如另一个的左边或者右边）。<br />
至理名言<br />
更多并非更好<br />
虽然div对于CSS布局很重要，但也别对你的网页滥用div。一个常见的陷阱是相信你必须把一张网页中的一切都包围在一个标签里面。假设你的主导航栏是一个链接的无序列表<br />
（就像第218页中所述）。由于它是一个重要的元素，你可能会试探用一个来把它围起来：&lt;ul&gt;...&lt;/ul&gt;<br />
。但是当&lt;ul&gt;标签唾手可得时，就没有必要去添加一个了。只要&lt;ul&gt;包含主要的导航栏链接，就只需添加ID样式给这个标签：&lt;ul id= "mainNav"&gt;。多余的只是一些没有必要的代码。<br />
</span></span>
<img src ="http://www.blogjava.net/sunwch/aggbug/211621.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunwch/" target="_blank">sunny   spring</a> 2008-06-30 11:22 <a href="http://www.blogjava.net/sunwch/archive/2008/06/30/211621.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jspSmartUpload上传下载全攻略</title><link>http://www.blogjava.net/sunwch/archive/2008/06/30/211620.html</link><dc:creator>sunny   spring</dc:creator><author>sunny   spring</author><pubDate>Mon, 30 Jun 2008 03:21:00 GMT</pubDate><guid>http://www.blogjava.net/sunwch/archive/2008/06/30/211620.html</guid><wfw:comment>http://www.blogjava.net/sunwch/comments/211620.html</wfw:comment><comments>http://www.blogjava.net/sunwch/archive/2008/06/30/211620.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sunwch/comments/commentRss/211620.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sunwch/services/trackbacks/211620.html</trackback:ping><description><![CDATA[<span style="font-size: 10pt"><span style="color: #444444"><strong>一、安装篇</strong></span><span style="color: #444444"> </span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">　　<span>jspSmartUpload是由www.jspsmart.com网站开发的一个可免费使用的全功能的文件上传下载组件，适于嵌入执行上传下载操作的JSP文件中。该组件有以下几个特点： </span></span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">1、使用简单。在JSP文件中仅仅书写三五行JAVA代码就可以搞定文件的上传或下载，方便。 </span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">2、能全程控制上传。利用jspSmartUpload组件提供的对象及其操作方法，可以获得全部上传文件的信息（包括文件名，大小，类型，扩展名，文件数据等），方便存取。 </span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">3、能对上传的文件在大小、类型等方面做出限制。如此可以滤掉不符合要求的文件。 </span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">4、下载灵活。仅写两行代码，就能把Web服务器变成文件服务器。不管文件在Web服务器的目录下或在其它任何目录下，都可以利用jspSmartUpload进行下载。 </span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">5、能将文件上传到数据库中，也能将数据库中的数据下载下来。这种功能针对的是MYSQL数据库，因为不具有通用性，所以本文不准备举例介绍这种用法。 </span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">　　<span>jspSmartUpload组件可以从<a href="http://www.edufans.com/html/JSP/JSP_down/2006/200610054829.html">http://www.edufans.com/html/JSP/JSP_down/2006/200610054829.html</a>网站上自由下载，压缩包的名字是jspSmartUpload.zip。下载后，用WinZip或WinRAR将其解压到Tomcat的webapps目录下（本文以Tomcat服务器为例进行介绍）。解压后，将webapps/jspsmartupload目录下的子目录Web-inf名字改为全大写的WEB-INF，这样一改jspSmartUpload类才能使用。因为Tomcat对文件名大小写敏感，它要求Web应用程序相关的类所在目录为WEB-INF，且必须是大写。接着重新启动Tomcat，这样就可以在JSP文件中使用jspSmartUpload组件了。 </span></span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">　　注意，按上述方法安装后，只有<span>webapps/jspsmartupload目录下的程序可以使用jspSmartUpload组件，如果想让Tomcat服务器的所有Web应用程序都能用它，必须做如下工作： </span></span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">1．进入命令行状态，将目录切换到Tomcat的webapps/jspsmartupload/WEB-INF目录下。 </span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">2．运行JAR打包命令：jar cvf jspSmartUpload.jar com </span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">（也可以打开资源管理器，切换到当前目录，用<span>WinZip将com目录下的所有文件压缩成jspSmartUpload.zip，然后将jspSmartUpload.zip换名为jspSmartUpload.jar文件即可。） </span></span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">3．将jspSmartUpload.jar拷贝到Tomcat的shared/lib目录下。 </span></span><span style="color: #444444"><br />
<br />
</span><span style="font-size: 10pt"><strong><span style="color: #444444">二、相关类说明篇</span></strong><span style="color: #444444"> </span></span><span style="color: #444444"><br />
<br />
</span><span style="font-size: 10pt"><strong><span style="color: #444444">㈠<span> File类</span></span></strong><span style="color: #444444"> </span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">　　这个类包装了一个上传文件的所有信息。通过它，可以得到上传文件的文件名、文件大小、扩展名、文件数据等信息。 </span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">　　<span>File类主要提供以下方法： </span></span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">1、saveAs作用：将文件换名另存。 </span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">原型： </span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">public void saveAs(java.lang.String destFilePathName) </span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">或 </span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">public void saveAs(java.lang.String destFilePathName, int optionSaveAs) </span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">其中，<span>destFilePathName是另存的文件名，optionSaveAs是另存的选项，该选项有三个值，分别是SAVEAS_PHYSICAL,SAVEAS_VIRTUAL，SAVEAS_AUTO。SAVEAS_PHYSICAL表明以操作系统的根目录为文件根目录另存文件，SAVEAS_VIRTUAL表明以Web应用程序的根目录为文件根目录另存文件，SAVEAS_AUTO则表示让组件决定，当Web应用程序的根目录存在另存文件的目录时，它会选择SAVEAS_VIRTUAL，否则会选择SAVEAS_PHYSICAL。 </span></span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">例如，<span>saveAs("/upload/sample.zip",SAVEAS_PHYSICAL)执行后若Web服务器安装在C盘，则另存的文件名实际是c:uploadsample.zip。而saveAs("/upload/sample.zip",SAVEAS_VIRTUAL)执行后若Web应用程序的根目录是webapps/jspsmartupload，则另存的文件名实际是webapps/jspsmartupload/upload/sample.zip。saveAs("/upload/sample.zip",SAVEAS_AUTO)执行时若Web应用程序根目录下存在upload目录，则其效果同saveAs("/upload/sample.zip",SAVEAS_VIRTUAL)，否则同saveAs("/upload/sample.zip",SAVEAS_PHYSICAL)。 </span></span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">建议：对于<span>Web程序的开发来说，最好使用SAVEAS_VIRTUAL，以便移植。 </span></span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">2、isMissing </span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">作用：这个方法用于判断用户是否选择了文件，也即对应的表单项是否有值。选择了文件时，它返回<span>false。未选文件时，它返回true。 </span></span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">原型：<span>public boolean isMissing() </span></span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">3、getFieldName </span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">作用：取<span>HTML表单中对应于此上传文件的表单项的名字。 </span></span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">原型：<span>public String getFieldName() </span></span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">4、getFileName </span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">作用：取文件名（不含目录信息） </span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">原型：<span>public String getFileName() </span></span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">5、getFilePathName </span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">作用：取文件全名（带目录） </span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">原型：<span>public String getFilePathName </span></span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">6、getFileExt </span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">作用：取文件扩展名（后缀） </span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">原型：<span>public String getFileExt() </span></span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">7、getSize </span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">作用：取文件长度（以字节计） </span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">原型：<span>public int getSize() </span></span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">8、getBinaryData </span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">作用：取文件数据中指定位移处的一个字节，用于检测文件等处理。 </span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">原型：<span>public byte getBinaryData(int index)。其中，index表示位移，其值在0到getSize()-1之间。 </span></span></span><span style="color: #444444"><br />
<br />
</span><span style="font-size: 10pt"><strong><span style="color: #444444">㈡<span> Files类</span></span></strong><span style="color: #444444"> </span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">　　这个类表示所有上传文件的集合，通过它可以得到上传文件的数目、大小等信息。有以下方法： </span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">1、getCount </span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">作用：取得上传文件的数目。 </span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">原型：<span>public int getCount() </span></span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">2、getFile </span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">作用：取得指定位移处的文件对象<span>File（这是com.jspsmart.upload.File，不是java.io.File，注意区分）。 </span></span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">原型：<span>public File getFile(int index)。其中，index为指定位移，其值在0到getCount()-1之间。 </span></span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">3、getSize </span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">作用：取得上传文件的总长度，可用于限制一次性上传的数据量大小。 </span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">原型：<span>public long getSize() </span></span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">4、getCollection </span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">作用：将所有上传文件对象以<span>Collection的形式返回，以便其它应用程序引用，浏览上传文件信息。 </span></span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">原型：<span>public Collection getCollection() </span></span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">5、getEnumeration </span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">作用：将所有上传文件对象以<span>Enumeration（枚举）的形式返回，以便其它应用程序浏览上传文件信息。 </span></span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">原型：<span>public Enumeration getEnumeration() </span></span></span><span style="color: #444444"><br />
<br />
</span><span style="font-size: 10pt"><strong><span style="color: #444444">㈢<span> Request类</span></span></strong><span style="color: #444444"> </span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">　　这个类的功能等同于<span>JSP内置的对象request。只所以提供这个类，是因为对于文件上传表单，通过request对象无法获得表单项的值，必须通过jspSmartUpload组件提供的Request对象来获取。该类提供如下方法： </span></span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">1、getParameter </span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">作用：获取指定参数之值。当参数不存在时，返回值为<span>null。 </span></span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">原型：<span>public String getParameter(String name)。其中，name为参数的名字。 </span></span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">2、getParameterValues </span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">作用：当一个参数可以有多个值时，用此方法来取其值。它返回的是一个字符串数组。当参数不存在时，返回值为<span>null。 </span></span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">原型：<span>public String[] getParameterValues(String name)。其中，name为参数的名字。 </span></span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">3、getParameterNames </span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">作用：取得<span>Request对象中所有参数的名字，用于遍历所有参数。它返回的是一个枚举型的对象。 </span></span></span><span style="color: #444444"><br />
<br />
</span><span style="color: #444444"><span style="font-size: 10pt">原型：<span>public Enumeration getParameterNames() </span></span></span><span style="color: #444444"><br />
<font color="#000000"><span style="font-size: 10pt"><strong>㈣ SmartUpload类</strong>这个类完成上传下载工作。 <br />
<br />
<strong>A．上传与下载共用的方法：</strong> <br />
<br />
只有一个：initialize。 <br />
<br />
作用：执行上传下载的初始化工作，必须第一个执行。 <br />
<br />
原型：有多个，主要使用下面这个： <br />
<br />
public final void initialize(javax.servlet.jsp.PageContext pageContext) <br />
<br />
其中，pageContext为JSP页面内置对象（页面上下文）。 <br />
<br />
<strong>B．上传文件使用的方法：</strong> <br />
<br />
1、upload <br />
<br />
作用：上传文件数据。对于上传操作，第一步执行initialize方法，第二步就要执行这个方法。 <br />
<br />
原型：public void upload() <br />
<br />
2、save <br />
<br />
作用：将全部上传文件保存到指定目录下，并返回保存的文件个数。 <br />
<br />
原型：public int save(String destPathName) <br />
<br />
和public int save(String destPathName,int option) <br />
<br />
其中，destPathName为文件保存目录，option为保存选项，它有三个值，分别是SAVE_PHYSICAL,SAVE_VIRTUAL和SAVE_AUTO。（同File类的saveAs方法的选项之值类似）SAVE_PHYSICAL指示组件将文件保存到以操作系统根目录为文件根目录的目录下，SAVE_VIRTUAL指示组件将文件保存到以Web应用程序根目录为文件根目录的目录下，而SAVE_AUTO则表示由组件自动选择。 <br />
<br />
注：save(destPathName)作用等同于save(destPathName,SAVE_AUTO)。 <br />
<br />
3、getSize <br />
<br />
作用：取上传文件数据的总长度 <br />
<br />
原型：public int getSize() <br />
<br />
4、getFiles <br />
<br />
作用：取全部上传文件，以Files对象形式返回，可以利用Files类的操作方法来获得上传文件的数目等信息。 <br />
<br />
原型：public Files getFiles() <br />
<br />
5、getRequest <br />
<br />
作用：取得Request对象，以便由此对象获得上传表单参数之值。 <br />
<br />
原型：public Request getRequest() <br />
<br />
6、setAllowedFilesList <br />
<br />
作用：设定允许上传带有指定扩展名的文件，当上传过程中有文件名不允许时，组件将抛出异常。 <br />
<br />
原型：public void setAllowedFilesList(String allowedFilesList) <br />
<br />
其中，allowedFilesList为允许上传的文件扩展名列表，各个扩展名之间以逗号分隔。如果想允许上传那些没有扩展名的文件，可以用两个逗号表示。例如：setAllowedFilesList("doc,txt,,")将允许上传带doc和txt扩展名的文件以及没有扩展名的文件。 <br />
<br />
7、setDeniedFilesList <br />
<br />
作用：用于限制上传那些带有指定扩展名的文件。若有文件扩展名被限制，则上传时组件将抛出异常。 <br />
<br />
原型：public void setDeniedFilesList(String deniedFilesList) <br />
<br />
其中，deniedFilesList为禁止上传的文件扩展名列表，各个扩展名之间以逗号分隔。如果想禁止上传那些没有扩展名的文件，可以用两个逗号来表示。例如：setDeniedFilesList("exe,bat,,")将禁止上传带exe和bat扩展名的文件以及没有扩展名的文件。 <br />
<br />
8、setMaxFileSize <br />
<br />
作用：设定每个文件允许上传的最大长度。 <br />
<br />
原型：public void setMaxFileSize(long maxFileSize) <br />
<br />
其中，maxFileSize为为每个文件允许上传的最大长度，当文件超出此长度时，将不被上传。 <br />
<br />
9、setTotalMaxFileSize <br />
<br />
作用：设定允许上传的文件的总长度，用于限制一次性上传的数据量大小。 <br />
<br />
原型：public void setTotalMaxFileSize(long totalMaxFileSize) <br />
<br />
其中，totalMaxFileSize为允许上传的文件的总长度。 <br />
<br />
<strong>C．下载文件常用的方法</strong> <br />
<br />
1、setContentDisposition <br />
<br />
作用：将数据追加到MIME文件头的CONTENT-DISPOSITION域。jspSmartUpload组件会在返回下载的信息时自动填写MIME文件头的CONTENT-DISPOSITION域，如果用户需要添加额外信息，请用此方法。 <br />
<br />
原型：public void setContentDisposition(String contentDisposition) <br />
<br />
其中，contentDisposition为要添加的数据。如果contentDisposition为null，则组件将自动添加"attachment;"，以表明将下载的文件作为附件，结果是IE浏览器将会提示另存文件，而不是自动打开这个文件（IE浏览器一般根据下载的文件扩展名决定执行什么操作，扩展名为doc的将用word程序打开，扩展名为pdf的将用acrobat程序打开，等等）。 <br />
<br />
2、downloadFile <br />
<br />
作用：下载文件。 <br />
<br />
原型：共有以下三个原型可用，第一个最常用，后两个用于特殊情况下的文件下载（如更改内容类型，更改另存的文件名）。 <br />
<br />
① public void downloadFile(String sourceFilePathName) <br />
<br />
其中，sourceFilePathName为要下载的文件名（带目录的文件全名） <br />
<br />
② public void downloadFile(String sourceFilePathName,String contentType) <br />
<br />
其中，sourceFilePathName为要下载的文件名（带目录的文件全名）,contentType为内容类型（MIME格式的文件类型信息，可被浏览器识别）。 <br />
<br />
③ public void downloadFile(String sourceFilePathName,String contentType,String destFileName) <br />
<br />
其中，sourceFilePathName为要下载的文件名（带目录的文件全名）,contentType为内容类型（MIME格式的文件类型信息，可被浏览器识别）,destFileName为下载后默认的另存文件名。 <br />
<br />
<strong>三、文件上传篇</strong> <br />
<br />
<strong>㈠ 表单要求</strong> <br />
<br />
对于上传文件的FORM表单，有两个要求： <br />
<br />
1、METHOD应用POST，即METHOD="POST"。 <br />
<br />
2、增加属性：ENCTYPE="multipart/form-data" <br />
<br />
下面是一个用于上传文件的FORM表单的例子： <br />
<br />
<ccid_nobr></ccid_nobr></span></font>
<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="540" align="center" bordercolorlight="#000000" border="1">
    <tbody>
        <tr>
            <td class="code" bgcolor="#e6e6e6">
            <pre><ccid_code></ccid_code><span style="font-size: 10pt">&lt;FORM METHOD="POST" ENCTYPE="multipart/form-data"
            ACTION="/jspSmartUpload/upload.jsp"&gt;
            &lt;INPUT TYPE="FILE" NAME="MYFILE"&gt;
            &lt;INPUT TYPE="SUBMIT"&gt;
            &lt;/FORM&gt;</span></pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<br />
<span style="font-size: 10pt"><strong>㈡ 上传的例子</strong> <br />
<br />
<strong>1、上传页面upload.html</strong> <br />
<br />
本页面提供表单，让用户选择要上传的文件，点击"上传"按钮执行上传操作。 <br />
<br />
页面源码如下： <br />
<br />
<ccid_nobr></ccid_nobr></span>
<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="540" align="center" bordercolorlight="#000000" border="1">
    <tbody>
        <tr>
            <td class="code" bgcolor="#e6e6e6">
            <pre><ccid_code></ccid_code><span style="font-size: 10pt">&lt;!--
            文件名：upload.html
            作  者：纵横软件制作中心雨亦奇(zhsoft88@sohu.com)
            --&gt;
            &lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;
            &lt;html&gt;
            &lt;head&gt;
            &lt;title&gt;文件上传&lt;/title&gt;
            &lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt;
            &lt;/head&gt;
            &lt;body&gt;
            &lt;p&gt;&amp;nbsp;&lt;/p&gt;
            &lt;p align="center"&gt;上传文件选择&lt;/p&gt;
            &lt;FORM METHOD="POST" ACTION="jsp/do_upload.jsp"
            ENCTYPE="multipart/form-data"&gt;
            &lt;input type="hidden" name="TEST" value="good"&gt;
            &lt;table width="75%" border="1" align="center"&gt;
            &lt;tr&gt;
            &lt;td&gt;&lt;div align="center"&gt;1、
            &lt;input type="FILE" name="FILE1" size="30"&gt;
            &lt;/div&gt;&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
            &lt;td&gt;&lt;div align="center"&gt;2、
            &lt;input type="FILE" name="FILE2" size="30"&gt;
            &lt;/div&gt;&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
            &lt;td&gt;&lt;div align="center"&gt;3、
            &lt;input type="FILE" name="FILE3" size="30"&gt;
            &lt;/div&gt;&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
            &lt;td&gt;&lt;div align="center"&gt;4、
            &lt;input type="FILE" name="FILE4" size="30"&gt;
            &lt;/div&gt;&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
            &lt;td&gt;&lt;div align="center"&gt;
            &lt;input type="submit" name="Submit" value="上传它！"&gt;
            &lt;/div&gt;&lt;/td&gt;
            &lt;/tr&gt;
            &lt;/table&gt;
            &lt;/FORM&gt;
            &lt;/body&gt;
            &lt;/html&gt;</span></pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<br />
<span style="font-size: 10pt"><strong>2、上传处理页面do_upload.jsp</strong> <br />
<br />
本页面执行文件上传操作。页面源码中详细介绍了上传方法的用法，在此不赘述了。 <br />
<br />
页面源码如下： <br />
<br />
<ccid_nobr></ccid_nobr></span>
<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="540" align="center" bordercolorlight="#000000" border="1">
    <tbody>
        <tr>
            <td class="code" bgcolor="#e6e6e6">
            <pre><ccid_code></ccid_code><span style="font-size: 10pt">&lt;%--
            文件名：do_upload.jsp
            作  者：纵横软件制作中心雨亦奇(zhsoft88@sohu.com)
            --%&gt;
            &lt;%@ page contentType="text/html; charset=gb2312" language="java"
            import="java.util.*,com.jspsmart.upload.*" errorPage="" %&gt;
            &lt;html&gt;
            &lt;head&gt;
            &lt;title&gt;文件上传处理页面&lt;/title&gt;
            &lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt;
            &lt;/head&gt;
            &lt;body&gt;
            &lt;%
            // 新建一个SmartUpload对象
            SmartUpload su = new SmartUpload();
            // 上传初始化
            su.initialize(pageContext);
            // 设定上传限制
            // 1.限制每个上传文件的最大长度。
            // su.setMaxFileSize(10000);
            // 2.限制总上传数据的长度。
            // su.setTotalMaxFileSize(20000);
            // 3.设定允许上传的文件（通过扩展名限制）,仅允许doc,txt文件。
            // su.setAllowedFilesList("doc,txt");
            // 4.设定禁止上传的文件（通过扩展名限制）,禁止上传带有exe,bat,
            jsp,htm,html扩展名的文件和没有扩展名的文件。
            // su.setDeniedFilesList("exe,bat,jsp,htm,html,,");
            // 上传文件
            su.upload();
            // 将上传文件全部保存到指定目录
            int count = su.save("/upload");
            out.println(count+"个文件上传成功！&lt;br&gt;");
            // 利用Request对象获取参数之值
            out.println("TEST="+su.getRequest().getParameter("TEST")
            +"&lt;BR&gt;&lt;BR&gt;");
            // 逐一提取上传文件信息，同时可保存文件。
            for (int i=0;i&lt;su.getFiles().getCount();i++)
            {
            com.jspsmart.upload.File file = su.getFiles().getFile(i);
            // 若文件不存在则继续
            if (file.isMissing()) continue;
            // 显示当前文件信息
            out.println("&lt;TABLE BORDER=1&gt;");
            out.println("&lt;TR&gt;&lt;TD&gt;表单项名（FieldName）&lt;/TD&gt;&lt;TD&gt;"
            + file.getFieldName() + "&lt;/TD&gt;&lt;/TR&gt;");
            out.println("&lt;TR&gt;&lt;TD&gt;文件长度（Size）&lt;/TD&gt;&lt;TD&gt;" +
            file.getSize() + "&lt;/TD&gt;&lt;/TR&gt;");
            out.println("&lt;TR&gt;&lt;TD&gt;文件名（FileName）&lt;/TD&gt;&lt;TD&gt;"
            + file.getFileName() + "&lt;/TD&gt;&lt;/TR&gt;");
            out.println("&lt;TR&gt;&lt;TD&gt;文件扩展名（FileExt）&lt;/TD&gt;&lt;TD&gt;"
            + file.getFileExt() + "&lt;/TD&gt;&lt;/TR&gt;");
            out.println("&lt;TR&gt;&lt;TD&gt;文件全名（FilePathName）&lt;/TD&gt;&lt;TD&gt;"
            + file.getFilePathName() + "&lt;/TD&gt;&lt;/TR&gt;");
            out.println("&lt;/TABLE&gt;&lt;BR&gt;");
            // 将文件另存
            // file.saveAs("/upload/" + myFile.getFileName());
            // 另存到以WEB应用程序的根目录为文件根目录的目录下
            // file.saveAs("/upload/" + myFile.getFileName(),
            su.SAVE_VIRTUAL);
            // 另存到操作系统的根目录为文件根目录的目录下
            // file.saveAs("c:\\temp\\" + myFile.getFileName(),
            su.SAVE_PHYSICAL);
            }
            %&gt;
            &lt;/body&gt;
            &lt;/html&gt;</span></pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<br />
<span style="font-size: 10pt"><strong>四、文件下载篇</strong> <br />
<br />
<strong>1、下载链接页面download.html</strong> <br />
<br />
页面源码如下： <br />
<br />
<ccid_nobr></ccid_nobr></span>
<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="540" align="center" bordercolorlight="#000000" border="1">
    <tbody>
        <tr>
            <td class="code" bgcolor="#e6e6e6">
            <pre><ccid_code></ccid_code><span style="font-size: 10pt">&lt;!--
            文件名：download.html
            作  者：纵横软件制作中心雨亦奇(zhsoft88@sohu.com)
            --&gt;
            &lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;
            &lt;html&gt;
            &lt;head&gt;
            &lt;title&gt;下载&lt;/title&gt;
            &lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt;
            &lt;/head&gt;
            &lt;body&gt;
            &lt;a href="jsp/do_download.jsp"&gt;点击下载&lt;/a&gt;
            &lt;/body&gt;
            &lt;/html&gt;</span></pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<br />
<span style="font-size: 10pt"><strong>2、下载处理页面do_download.jsp</strong> do_download.jsp展示了如何利用jspSmartUpload组件来下载文件，从下面的源码中就可以看到，下载何其简单。 <br />
<br />
源码如下： <br />
<br />
<ccid_nobr></ccid_nobr></span>
<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="540" align="center" bordercolorlight="#000000" border="1">
    <tbody>
        <tr>
            <td class="code" bgcolor="#e6e6e6">
            <pre><ccid_code></ccid_code><span style="font-size: 10pt">&lt;%@ page contentType="text/html;charset=gb2312"
            import="com.jspsmart.upload.*" %&gt;&lt;%
            // 新建一个SmartUpload对象
            SmartUpload su = new SmartUpload();
            // 初始化
            su.initialize(pageContext);
            // 设定contentDisposition为null以禁止浏览器自动打开文件，
            //保证点击链接后是下载文件。若不设定，则下载的文件扩展名为
            //doc时，浏览器将自动用word打开它。扩展名为pdf时，
            //浏览器将用acrobat打开。
            su.setContentDisposition(null);
            // 下载文件
            su.downloadFile("/upload/如何赚取我的第一桶金.doc");
            %&gt;</span></pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<br />
<ccid_code></ccid_code><span style="font-size: 10pt">注意，执行下载的页面，在Java脚本范围外（即&lt;% ... %&gt;之外），不要包含HTML代码、空格、回车或换行等字符，有的话将不能正确下载。不信的话，可以在上述源码中%&gt;&lt;%之间加入一个换行符，再下载一下，保证出错。因为它影响了返回给浏览器的数据流，导致解析出错。 <br />
<br />
<strong>3、如何下载中文文件</strong> <br />
<br />
jspSmartUpload虽然能下载文件，但对中文支持不足。若下载的文件名中有汉字，则浏览器在提示另存的文件名时，显示的是一堆乱码，很扫人兴。上面的例子就是这样。（这个问题也是众多下载组件所存在的问题，很少有人解决，搜索不到相关资料，可叹！） <br />
<br />
为了给jspSmartUpload组件增加下载中文文件的支持，我对该组件进行了研究，发现对返回给浏览器的另存文件名进行UTF-8编码后，浏览器便能正确显示中文名字了。这是一个令人高兴的发现。于是我对jspSmartUpload组件的SmartUpload类做了升级处理，增加了toUtf8String这个方法，改动部分源码如下： <br />
<br />
<ccid_nobr></ccid_nobr></span>
<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="540" align="center" bordercolorlight="#000000" border="1">
    <tbody>
        <tr>
            <td class="code" bgcolor="#e6e6e6">
            <pre><ccid_code></ccid_code><span style="font-size: 10pt">public void downloadFile(String s, String s1, String s2, int i)
            throws ServletException, IOException, SmartUploadException
            {
            if(s == null)
            throw new IllegalArgumentException("File '" + s +
            "' not found (1040).");
            if(s.equals(""))
            throw new IllegalArgumentException("File '" + s +
            "' not found (1040).");
            if(!isVirtual(s) &amp;&amp; m_denyPhysicalPath)
            throw new SecurityException("Physical path is
            denied (1035).");
            if(isVirtual(s))
            s = m_application.getRealPath(s);
            java.io.File file = new java.io.File(s);
            FileInputStream fileinputstream = new FileInputStream(file);
            long l = file.length();
            boolean flag = false;
            int k = 0;
            byte abyte0[] = new byte[i];
            if(s1 == null)
            m_response.setContentType("application/x-msdownload");
            else
            if(s1.length() == 0)
            m_response.setContentType("application/x-msdownload");
            else
            m_response.setContentType(s1);
            m_response.setContentLength((int)l);
            m_contentDisposition = m_contentDisposition != null ?
            m_contentDisposition : "attachment;";
            if(s2 == null)
            m_response.setHeader("Content-Disposition",
            m_contentDisposition + " filename=" +
            toUtf8String(getFileName(s)));
            else
            if(s2.length() == 0)
            m_response.setHeader("Content-Disposition",
            m_contentDisposition);
            else
            m_response.setHeader("Content-Disposition",
            m_contentDisposition + " filename=" + toUtf8String(s2));
            while((long)k &lt; l)
            {
            int j = fileinputstream.read(abyte0, 0, i);
            k += j;
            m_response.getOutputStream().write(abyte0, 0, j);
            }
            fileinputstream.close();
            }
            /**
            * 将文件名中的汉字转为UTF8编码的串,以便下载时能正确显示另存的文件名.
            * 纵横软件制作中心雨亦奇2003.08.01
            * @param s 原文件名
            * @return 重新编码后的文件名
            */
            public static String toUtf8String(String s) {
            StringBuffer sb = new StringBuffer();
            for (int i=0;i&lt;s.length();i++) {
            char c = s.charAt(i);
            if (c &gt;= 0 &amp;&amp; c &lt;= 255) {
            sb.append(c);
            } else {
            byte[] b;
            try {
            b = Character.toString(c).getBytes("utf-8");
            } catch (Exception ex) {
            System.out.println(ex);
            b = new byte[0];
            }
            for (int j = 0; j &lt; b.length; j++) {
            int k = b[j];
            if (k &lt; 0) k += 256;
            sb.append("%" + Integer.toHexString(k).
            toUpperCase());
            }
            }
            }
            return sb.toString();
            }</span></pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<br />
<span style="font-size: 10pt">注意源码中粗体部分，原jspSmartUpload组件对返回的文件未作任何处理，现在做了编码的转换工作，将文件名转换为UTF-8形式的编码形式。UTF-8编码对英文未作任何处理，对中文则需要转换为%XX的形式。toUtf8String方法中，直接利用Java语言提供的编码转换方法获得汉字字符的UTF-8编码，之后将其转换为%XX的形式。 <br />
<br />
将源码编译后打包成jspSmartUpload.jar，拷贝到Tomcat的shared/lib目录下（可为所有WEB应用程序所共享），然后重启Tomcat服务器就可以正常下载含有中文名字的文件了。另，toUtf8String方法也可用于转换含有中文的超级链接，以保证链接的有效，因为有的WEB服务器不支持中文链接。 <br />
<br />
小结：jspSmartUpload组件是应用JSP进行B/S程序开发过程中经常使用的上传下载组件，它使用简单，方便。现在我又为其加上了下载中文名字的文件的支持，真个是如虎添翼，必将赢得更多开发者的青睐。 <br />
</span></span>
<img src ="http://www.blogjava.net/sunwch/aggbug/211620.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunwch/" target="_blank">sunny   spring</a> 2008-06-30 11:21 <a href="http://www.blogjava.net/sunwch/archive/2008/06/30/211620.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript</title><link>http://www.blogjava.net/sunwch/archive/2008/06/30/211619.html</link><dc:creator>sunny   spring</dc:creator><author>sunny   spring</author><pubDate>Mon, 30 Jun 2008 03:20:00 GMT</pubDate><guid>http://www.blogjava.net/sunwch/archive/2008/06/30/211619.html</guid><wfw:comment>http://www.blogjava.net/sunwch/comments/211619.html</wfw:comment><comments>http://www.blogjava.net/sunwch/archive/2008/06/30/211619.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sunwch/comments/commentRss/211619.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sunwch/services/trackbacks/211619.html</trackback:ping><description><![CDATA[<ol>
    <li><span style="font-size: 10pt">状态栏 (statusbar)显功能 </span>
    <li><span style="font-size: 10pt">日期物件 </span>
    <li><span style="font-size: 10pt">随数的产生 </span>
    <li><span style="font-size: 10pt">开启新窗囗 </span></li>
</ol>
<a name="status"></a>
<p><a name="status"><span style="font-size: 10pt">范 例 5：</span></a></p>
<p><span style="font-size: 10pt">在 这 一 部 分 首 先 要 为 你 展 示 的 JavaScript 特 性 是 将 你 的 滑 鼠 移 到 这 个 不 同 颜 色</span></p>
<p><span style="font-size: 10pt">的</span><a href="http://www.lib.tsinghua.edu.cn/chinese/INTERNET/%20/tpage.htm"><span style="font-size: 10pt">连 结</span></a><span style="font-size: 10pt">上 面， 此 时 看 看 浏 览 器 下 的 状 态 列 有 何 结 果。 然 後 这 样 的 功 能 我 们 可 以</span></p>
<p><span style="font-size: 10pt">与 JavaScript 的 功 能 相 结 合。 好， 现 在 再 将 你 的 滑 鼠 移 到 本 处 不 同 颜 色 的</span><a href="http://hi.baidu.com/fc/editor/"><span style="font-size: 10pt">连 结</span></a><span style="font-size: 10pt">上</span></p>
<p><span style="font-size: 10pt">面， 你 应 该 会 发 现 有 一 个 视 窗 出 现， 是 吧？！ 如 何！ 怎 麽 做 到 的 呢？ 以 下 就 是</span></p>
<p><span style="font-size: 10pt">这 一 个 连 结 的 作 法：</span></p>
<pre><span style="font-size: 10pt">&lt;a href="tpage.htm" onMouseOver="window.status='Just another stupid link...'; return true"&gt;</span></pre>
<span style="font-size: 10pt">在 这 儿 你 只 要 在 传 统 &lt;a&gt; 的 标 签 中 加 入 <em>onMouseOver</em> 的 method， 就 可 达 成 你 要 的 </span>
<p><span style="font-size: 10pt">效 果 了。 这 里 的<em> window.status</em> 是 用 来 让 你 可 以 在 WWW 浏 览 器 的 状 态 列 上 显 示</span></p>
<p><span style="font-size: 10pt">一 些 讯 息 用 的。 在 语 法 中， 你 可 以 看 到 讯 息 部 分 是 用 ' 括 起 来 的 部 分， 而 非 以 " 括</span></p>
<p><span style="font-size: 10pt">起 来， 在 讯 息 部 分 结 束 之 後， 必 须 加 上 <em>; return true</em>。</span></p>
<p><span style="font-size: 10pt">好 了， 利 用 以 上 的 特 性 可 以 很 简 单 的 完 成 第 二 个 连 结 的 例 子！ 相 当 简 单， 以</span></p>
<p><span style="font-size: 10pt"><em>onMouseOver</em> 的 method 然 後 配 合 事 件 发 生 时 去 呼 叫 函 数 <em>hello()</em> 就 行 了， 不 再</span></p>
<p><span style="font-size: 10pt">多 加 解 释 了， 作 法 如 下：</span></p>
<pre><span style="font-size: 10pt">&lt;html&gt;
&lt;head&gt;
&lt;script language="LiveScript"&gt;
&lt;!-- Hiding
function hello() {
alert("哈 罗!");
}
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;a href="" onMouseOver="hello()"&gt;link&lt;/a&gt;
&lt;/body&gt;
&lt;/html&gt;</span></pre>
<p></p>
<span style="font-size: 10pt">
<hr align="center" width="80%" size="2" />
</span>
<p><a name="date"><span style="font-size: 10pt">范 例 6：</span></a></p>
<p><span style="font-size: 10pt">接 下 来 我 们 要 告 诉 你 一 个 使 用 日 期 和 时 间 的 例 子。 在 第 一 部 分 中， 你 已 看 过 了</span></p>
<p><span style="font-size: 10pt"><em>lastModified</em> 的 用 法 和 作 法。 现 在 要 告 诉 你 的 并 非 是 印 出 网 路 上 伺 服 器 或 文 件</span></p>
<p><span style="font-size: 10pt">修 改 日 期， 而 是 你 个 人 客 户 端 机 器 的 日 期 和 时 间。 以 下 就 是 执 行 结 果： <br />
<br />
现 在 时 间 是： 14:4<br />
今 天 日 期 为： 6/3/2008</span></p>
<p><span style="font-size: 10pt">做 法 如 下：</span></p>
<pre><span style="font-size: 10pt">&lt;script language="LiveScript"&gt;
&lt;!-- Hiding
today = new Date()
document.write("现 在 时 间 是： ",today.getHours(),":",today.getMinutes())
document.write("&lt;br&gt;今 天 日 期 为： ", today.getMonth()+1,"/",today.getDate(),"/",today.getYear());
// end hiding contents --&gt;
&lt;/script&gt;</span></pre>
<span style="font-size: 10pt">在 本 例 中， 我 们 必 需 首 先 建 立 一 个 日 期 变 数， 这 可 以 由 <em>today= new Date()</em>来 完 成。 </span>
<p><span style="font-size: 10pt">如 果 没 有 特 别 指 定 时 间 与 日 期 的 话， 浏 览 器 将 会 采 用 本 地 客 户 端 机 器 的 时 间， 若 将</span></p>
<p><span style="font-size: 10pt">它 放 入 变 数 <em>today</em> 中。 这 儿 要 注 意 的 是： 我 们 并 没 有 宣 告 <em>today</em> 这 个 变 数 的 型 态，</span></p>
<p><span style="font-size: 10pt">这 和 Java 或 其 他 的 程 式 语 言 在 用 到 变 数 之 前 必 需 先 加 以 宣 告 的 方 式 有 相 当 大 的 不</span></p>
<p><span style="font-size: 10pt">同。 在 完 成<em> today</em> 的 日 期 变 数 後， 我 们 等 於 建 立 了 一 个 具 有 本 地 时 间 与 日 期 的 物 件</span></p>
<p><span style="font-size: 10pt">(object)。 接 着 就 可 以 使 用 <em>get... </em>的 method 以 取 得<em> today</em> 这 个 物 件 的 时 间 和 日 期。</span></p>
<p><span style="font-size: 10pt">请 注 意 <em>getMonth</em> 这 个 method 所 取 得 的 月 份 范 围 是 由 0~11， 所 以 必 须 加 1 以 代</span></p>
<p><span style="font-size: 10pt">表 真 正 的 1 月 至 12 月。 看 完 以 上 的 例 子 後， 想 想 你 可 以 使 你 的 文 件 变 得 有 点</span></p>
<p><span style="font-size: 10pt">智 慧， 例 如： 某 个 文 件 有 时 效 限 制 的 话， 你 可 以 利 用 我 们 在 上 一 部 份 的</span><a href="http://www.lib.tsinghua.edu.cn/chinese/INTERNET/%20/javascr.html#ex4"><span style="font-size: 10pt">范 例 4</span></a></p>
<p><span style="font-size: 10pt">中 所 提 到 的 功 能 和 这 一 个 范 例 中 所 学 习 到 的 功 能， 设 计 一 个 让 你 的 文 件 在 第10天</span></p>
<p><span style="font-size: 10pt">以 後 读 到 的 话 就 会 告 诉 读 者："喂！ 这 篇 已 过 时 了！"的 程 式， 试 试 看， 并 不 难！</span></p>
<p><br />
<span style="font-size: 10pt">除 以 上 功 能 外， 在 建 立 日 期 物 件 时 你 也 可 以 事 先 设 定 日 期 如 下：</span></p>
<p></p>
<center><em><span style="font-size: 10pt">docStarted= new Date(96,0,13)</span></em></center>
<p><span style="font-size: 10pt">首 先 是 年（西 元）， 接 着 是 月（但 记 得 减 1）， 再 接 着 是 日。 同 样 的 方 法 也 可 以</span></p>
<p><span style="font-size: 10pt">加 上 时 间 的 设 定， 如 下：</span></p>
<p></p>
<center><em><span style="font-size: 10pt">docStarted = new Date(96,0,13,10,50,0)</span></em></center>
<p><span style="font-size: 10pt">前 三 个 是 日 期 的 年、 月、 日， 接 着 是 时、 分、 秒。 最 後， 我 们 必 须 提 醒 你，</span></p>
<p><span style="font-size: 10pt">JavaScript 并 没 有 实 际 的 日 期 型 态， 但 是 它 却 能 毫 不 费 力 地 显 示 出 日 期 和 时 间，</span></p>
<p><span style="font-size: 10pt">原 因 是 它 是 从 1 / 1 / 1970 0：0h 开 始 以 ms(milli seconds) 来 计 算 目 前 的 时 间 的，</span></p>
<p><span style="font-size: 10pt">这 听 起 来 似 　 有 些 复 杂， 但 你 倒 不 用 担 心， 它 有 标 准 的 共 用 函 数 可 以 计 算，</span></p>
<p><span style="font-size: 10pt">你 只 要 知 道 如 何 用 就 可 以 了！</span></p>
<p></p>
<span style="font-size: 10pt">
<hr align="center" width="80%" size="2" />
</span>
<p><a name="random"><span style="font-size: 10pt">范 例 7：</span></a></p>
<p><span style="font-size: 10pt">接 下 来 我 们 要 为 你 介 绍 一 个 可 以 产 生 乱 数 的 函 数， 也 是 以 JavaScript 所 写 的。</span></p>
<p><span style="font-size: 10pt">这 个 函 数 只 是 利 用 了 一 点 小 技 巧 而 已， 而 这 种 技 巧 在 大 部 分 的 编 译 器(compiler)中，</span></p>
<p><span style="font-size: 10pt">大 都 是 如 此（或 类 似） 计 算 出 乱 数 来 的。 我 相 信 JavaScript 最 後 应 也 会 以 相 似 的 方</span></p>
<p><span style="font-size: 10pt">法 来 产 生 这 样 的 method ， 如 果 它 会 提 供 这 样 功 能 的 话。 以 下 是 此 函 数 的 结 果：</span></p>
<p><span style="font-size: 10pt">这 是 一 个 计 算 产 生 的 乱 数： 0.9836312285070992</span></p>
<p><span style="font-size: 10pt">以 下 是 这 个 作 法 的 写 法：</span></p>
<pre><span style="font-size: 10pt">&lt;html&gt;
&lt;head&gt;
&lt;script language="LiveScript"&gt;
function RandomNumber() {
today = new Date();
num = Math.abs(Math.sin(today.getTime()));
return num;
}
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;script language="LiveScript"&gt;
&lt;!--
document.write("This is a random number:", RandomNumber());
// --&gt;
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</span></pre>
<p><span style="font-size: 10pt">我 们 的 做 法 是 以 上 一 个 范 例 中 的 时 间 函 数； 它 会 出 现 一 个 很 大 的 数，</span></p>
<p><span style="font-size: 10pt">利 用 这 个 数 再 加 以 运 算 即 可！ 例 如： 将 它 拿 来 做 正 弦 函 数（sin） 的 运</span></p>
<p><span style="font-size: 10pt">算， 得 到 的 数 再 做 绝 对 值 的 运 算， 结 果 可 以 得 到 一 个 介 於 0 与 1 间 的</span></p>
<p><span style="font-size: 10pt">实 数。 因 为 时 间 的 改 变 是 ms 为 单 位， 而 且 你 绝 不 会 获 得 相 同 的 数 字。</span></p>
<p><span style="font-size: 10pt">不 过 这 个 做 法 并 不 适 合 拿 来 快 速 的 连 续 产 生 一 系 列 的 乱 数， 但 如 果 你</span></p>
<p><span style="font-size: 10pt">是 不 定 时， 久 久 的 用 一 次， 那 效 果 就 不 错 了！</span></p>
<p></p>
<span style="font-size: 10pt">
<hr align="center" width="80%" size="2" />
</span>
<p><a name="win"><span style="font-size: 10pt">范 例 8：</span></a></p>
<p><span style="font-size: 10pt">JavaScript 的 一 个 重 要 特 点 是 它 可 以 制 作 视 窗。 你 可 以 产 生 一 个 的 视 窗， 并 且</span></p>
<p><span style="font-size: 10pt">在 此 视 窗 中 载 入 HTML 文 件， 完 全 以 JavaScript 来 航 游 网 际 网 路（Internet ）。</span></p>
<p><span style="font-size: 10pt">接 下 来 的 范 例 就 是 告 诉 你 如 何 开 启 一 个 视 窗 并 且 写 点 东 西 进 去， 你 可 先 试 试</span></p>
<p><span style="font-size: 10pt">按 一 下 范 中 之 接 钮 看 看！</span></p>
<p></p>
<p><span style="font-size: 10pt">原 始 程 式 如 下：</span></p>
<pre><span style="font-size: 10pt">&lt;html&gt;
&lt;head&gt;
&lt;script language="LiveScript"&gt;
function WinOpen() {
msg=open("","DisplayWindow","toolbar=no,directories=no,menubar=no");
msg.document.write("&lt;HEAD&gt;&lt;TITLE&gt;哈 罗!&lt;/TITLE&gt;&lt;/HEAD&gt;");
msg.document.write("&lt;CENTER&gt;&lt;H1&gt;酷 毙 了!&lt;/H1&gt;&lt;h2&gt;这 是&lt;B&gt;JavaScript&lt;/B&gt;所 开 的 视 窗!&lt;/h2&gt;&lt;/CENTER&gt;");
}
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;form&gt;
&lt;input type="button" name="Button1" value="Push me" onclick="WinOpen()"&gt;
&lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;</span></pre>
<span style="font-size: 10pt">这 儿 你 又 看 到 用 按 钮 来 启 动 函 数。 这 次 的 函 数 <em>WinOpen()</em>是 藉 着 一 个 <em>open</em> </span>
<p><span style="font-size: 10pt">的 method 来 产 生 一 个 新 的 视 窗。 第 一 对 双 引 号("")是 用 来 描 述 欲 载 入 至 视 窗</span></p>
<p><span style="font-size: 10pt">中 的 文 件 URL 位 置。 如 果 留 者 空 白 的 话， 那 就 会 呈 现 一 个 空 白 视 窗， 并 可 以</span></p>
<p><span style="font-size: 10pt">透 过 JavaScript 写 入 东 西！ 下 一 对 双 引 号 内 的 内 容 是 这 个 新 开 启 视 窗 的 名 字，</span></p>
<p><span style="font-size: 10pt">你 可 以 喜 欢 给 它 任 意 一 个 名 字， 但 不 可 加 入 空 白， 如 用<em> Display Window </em>的 话 便</span></p>
<p><span style="font-size: 10pt">会 出 现 错 误 讯 息， 请 注 意。 接 下 来 的 一 连 串 双 引 号 内 所 指 定 的 是 该 视 窗</span></p>
<p><span style="font-size: 10pt">的 相 关 性 质(properties)， 这 些 蛮 有 趣 的， 你 可 以 指 定 要 不 要 有 工 具 棒(toolbar) 、</span></p>
<p><span style="font-size: 10pt">卷 轴(scrollbar)， 等 等， 例 如： 如 果 你 写 <em>toolbar = yes</em>， 那 就 会 在 你 所 产 生 出</span></p>
<p><span style="font-size: 10pt">来 的 视 窗 中 出 现 一 排 工 具 列。 以 下 有 许 多 你 可 以 改 变 的 视 窗 特 性， 请 注 意 它 们</span></p>
<p><span style="font-size: 10pt">字 中 间 不 可 以 有 空 白：</span></p>
<p><span style="font-size: 10pt">toolbar<br />
location<br />
directories<br />
status<br />
menubar<br />
scrollbars<br />
resizable<br />
copyhistory<br />
width=<em>pixels</em><br />
height=<em>pixels</em></span></p>
<p><span style="font-size: 10pt">以 上 的<em> pixels</em> 部 分， 你 可 以 填 入 点 数 的 数 值， 这 数 值 是 告 诉 浏 览 器 这 个 视 窗 的</span></p>
<p><span style="font-size: 10pt">大 小。 在 开 启 视 窗， 并 且 将 它 称 为 <em>msg</em> 以 後， 就 可 以 开 始 写 些 东 西 到 视 窗 中 了。</span></p>
<p><span style="font-size: 10pt">你 可 以 写 入 一 般 正 规 的 HTML 语 法 文 字。 哇！ 这 可 不 得 了 了， 也 就 是 说， 你 可 以</span></p>
<p><span style="font-size: 10pt">利 用 先 前 使 用 者 在 form 表 格 中 输 入 给 你 的 文 章 直 接 将 它 回 应 至 浏 览 器 上 来 了！ 这 些</span></p>
<p><span style="font-size: 10pt">功 能 在 几 个 月 前 大 概 还 只 能 用 CGI 才 能 达 到 喔！ 现 在 你 不 用 CGI 也 可 以 做 了！<br />
<br />
<br />
</span></p>
<ol>
    <li><span style="font-size: 10pt">什麽是JavaScript? </span>
    <li><span style="font-size: 10pt">执行 JavaScript scripts </span>
    <li><span style="font-size: 10pt">将scripts 语法嵌入HTML文件之中 </span>
    <li><span style="font-size: 10pt">第一个函数 </span>
    <li><span style="font-size: 10pt">输入型元件 </span>
    <li><span style="font-size: 10pt">日期功能 -- 最後修改期 </span></li>
</ol>
<p><span style="font-size: 10pt">JavaScript 是一种新的描述语言，此一语言可以被箝入 HTML 的文件之中。</span></p>
<p><span style="font-size: 10pt">透过 JavaScript 可以做到回应使用者的需求事件 (如： form 的输入) 而不用任何的网路</span></p>
<p><span style="font-size: 10pt">来回传输资料，所以当一位使用者输入一项资料时，它不用经过传给伺服端 (server)</span></p>
<p><span style="font-size: 10pt">处理，再传回来的过程，而直接可以被客户端 (client) 的应用程式所处理。你也可</span></p>
<p><span style="font-size: 10pt">以想像成有一个可执行程式在你的客端上执行一样！目前已有一些写好的程式在</span></p>
<p><span style="font-size: 10pt">Internet 上你可以连过去看看，以下有一些计算器的例子，在 Nescape 上。</span></p>
<p><br />
<span style="font-size: 10pt">JavaScript 和 Java 很类似，但到底并不一样！ Java 是一种比 JavaScript 更复杂</span></p>
<p><span style="font-size: 10pt">许多的程式语言，而 JavaScript 则是相当容易了解的语言。JavaScript 创作者</span></p>
<p><span style="font-size: 10pt">可以不那麽注重程式技巧，所以许多 Java 的特性在 Java Script 中并不支援。</span></p>
<p></p>
<p><span style="font-size: 10pt">如需相关的更多资讯，可以去读读 </span><a href="http://www.netscape.com/"><span style="font-size: 10pt">Netscape</span></a><span style="font-size: 10pt"> 的有关</span><a href="http://www.netscape.com/comprod/products/navigator/version_2.0/script/index.html"><span style="font-size: 10pt"> Netscape JavaScript </span></a><span style="font-size: 10pt">之介绍。</span></p>
<p></p>
<span style="font-size: 10pt">
<hr align="center" width="80%" size="2" />
</span>
<p>&nbsp;</p>
<p></p>
<h2><a name="run"><span style="font-size: 10pt">如何执行 JaveScript？ </span></a><a name="ex1"><span style="font-size: 10pt">范例 1：</span></a></h2>
<p><span style="font-size: 10pt">JavaScript 如何执行呢？</span></p>
<p><span style="font-size: 10pt"><strong>Netscape 2.0 beta 3</strong> 版以上，就可以执行 JavaScript 的功能了，我们测试过至少</span></p>
<p><span style="font-size: 10pt"><strong>beta 3</strong> 版以上可以，其他种类的 WWW 浏览器如:Internet Expore 3.0也有此一功能。</span></p>
<p></p>
<p></p>
<span style="font-size: 10pt">
<hr align="center" width="80%" size="2" />
</span>
<p>&nbsp;</p>
<p></p>
<p><span style="font-size: 10pt">以下我们就以一些例子来告诉你如何将 JavaScript 写在 HTML 文件中，并且体会</span></p>
<p><span style="font-size: 10pt">一下新语言的特性，我们从第一个例子开始：如何用 JavaScript 印出一串文字至</span></p>
<p><span style="font-size: 10pt">HTML 文件中：</span></p>
<pre><span style="font-size: 10pt">&lt;html&gt;
&lt;head&gt;
My first JavaScript!
&lt;/head&gt;
&lt;body&gt;
&lt;br&gt;
This is a normal HTML document.
&lt;br&gt;
&lt;script language="LiveScript"&gt;
document.write("这是以 JavaScript 印出的!")
&lt;/script&gt;
&lt;br&gt;
Back in HTML again.
&lt;/body&gt;
&lt;/html&gt;</span></pre>
<p><span style="font-size: 10pt">如果你使用的 WWW 浏览器是<strong> Netscape 2.0 beta 3</strong> 以上版本的话，那你就可以</span></p>
<p><span style="font-size: 10pt">看到相关的结果，而如果你的浏览器并非是可以支援 JavaScript 的话，那看起</span></p>
<p><span style="font-size: 10pt">来就会有一些怪怪的了，以上范例的结果如下：</span></p>
<p><span style="font-size: 10pt"><em>This is a normal HTML document. <br />
这是以 JavaScript 印出的! <br />
Back in HTML again. </em>此一范例并没有太大的用处，它只是要告诉你如何使用&lt;script&gt;的标签，并</span></p>
<p></p>
<p><span style="font-size: 10pt">如何将它置於 HTML 的文件之中而已，这个新的标签你可以特它放在文件</span></p>
<p><span style="font-size: 10pt">中的任何地方。</span></p>
<p></p>
<span style="font-size: 10pt">
<hr align="center" width="80%" size="2" />
</span>
<p>&nbsp;</p>
<p><br />
<br />
<a name="ex2"><span style="font-size: 10pt">范例 2：</span></a></p>
<p><span style="font-size: 10pt">接下来下一个例子所要介绍的是有关函数 (function) 的使用。请放心，函数并</span></p>
<p><span style="font-size: 10pt">非很难懂的东西，但它却相当有用。函数通常是在 HTML 文件中 &lt;body ＞的</span></p>
<p><span style="font-size: 10pt">部份被呼叫，而理所当然地，它最好事先被宣告并放在 HTML 文件中 &lt;body＞</span></p>
<p><span style="font-size: 10pt">的部份。好让在 &lt;body＞ 部分中使用到函数时，它已确定被读取住来。另外，</span></p>
<p><span style="font-size: 10pt">&lt;script＞ 标签的有关描述语法剖份，你可以用注解的符号将它括起来，以免旧</span></p>
<p><span style="font-size: 10pt">版或无法读取 JavaScript 的浏览器读到，而误会了意思！</span></p>
<pre><span style="font-size: 10pt">&lt;html&gt;
&lt;head&gt;
&lt;script language="LiveScript"&gt;
function pushbutton() {
alert("嗨! 你好");
}
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;form&gt;
&lt;input type="button" name="Button1" value="Push me" onclick="pushbutton()"&gt;
&lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;
</span>
<p><span style="font-size: 10pt"> </span></p>
</pre>
<p><span style="font-size: 10pt">如果你是使用<strong> Netscape 2.0 beta 3</strong> 以上的浏览器，那以上 JavaScript 语法部份 </span></p>
<p><span style="font-size: 10pt">的结果如下，你可以试着按按钮看看有何结果产生！</span></p>
<p><span style="font-size: 10pt">在范例 2 中，将会产生一个按钮，当你用滑鼠去按它的时候，应该会出现</span></p>
<p><span style="font-size: 10pt">一个视窗上面有&#8220;嗨! 你好&#8221;的字串，如何？不错吧！这个结果是如何产生</span></p>
<p><span style="font-size: 10pt">的呢？首先，在 &lt;head＞内的函数会被载入并存於内存中，接着一个新</span></p>
<p><span style="font-size: 10pt">的 &lt;form＞标签 &lt;<em>input type ="button"</em>.....＞将产生一个接钮。然後，你可以</span></p>
<p><span style="font-size: 10pt">在後面看到 '<em>onClick</em>' 的指令，这就是告诉浏览器，当该按钮被按时，应会执行</span></p>
<p><span style="font-size: 10pt"><em>onClick</em> 後的函数 '<em>pushbutton()</em>'，而这个函数在刚刚程式被载入时就已安放在</span></p>
<p><span style="font-size: 10pt">记忆体中了！请注意，在这个函数中我们用到了个新东西－ <em>alert</em> 的 method，</span></p>
<p><span style="font-size: 10pt">是 JavaScript 事先定义好的，它会以对话视窗产生内涵的讯息，并有一"确定"</span></p>
<p><span style="font-size: 10pt">(OK)的按钮。 JavaScript 定义了许多的 method，你可以连至 Netscape 公司去</span></p>
<p><span style="font-size: 10pt">获取较完整的讯息。我想这些 method 在不久的将来会有长长的一串可以够你</span></p>
<p><span style="font-size: 10pt">学的，不过目前的 method 也已经可以做出相当多东西了！</span></p>
<p><span style="font-size: 10pt">接着下个例子将告诉你如何由一个输入型表格中读入使用者的输入资料，</span></p>
<p><span style="font-size: 10pt">事实上，这也是加入个函数就可以达成的。</span></p>
<p></p>
<span style="font-size: 10pt">
<hr align="center" width="80%" size="2" />
</span>
<p>&nbsp;</p>
<p><br />
<br />
<a name="ex3"><span style="font-size: 10pt">范例 3：</span></a></p>
<p></p>
<pre><span style="font-size: 10pt">&lt;html&gt;
&lt;head&gt;
&lt;script language="LiveScript"&gt;
&lt;!--  hide script from old browsers
function getname(str) {
alert("哈罗! "+ str+"!");
}
// end hiding contents --&gt;
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
Please enter your name:
&lt;form&gt;
&lt;input type="text" name="name" onBlur="getname(this.value)" value=""&gt;
&lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;
</span>
<p><span style="font-size: 10pt"> </span></p>
</pre>
<p><span style="font-size: 10pt">现在你可以试试结果如何： </span><em><br />
<br />
<span style="font-size: 10pt">请输入你的名字： </span></p>
<p></p>
<p><span style="font-size: 10pt">(&lt;!- ... -＞) 此部分即我们之前所提到的它可以避免旧版本或是不支援 JavaScript</span></p>
<p><span style="font-size: 10pt">的 WWW 浏览器因为不认识这些函数而产生错误。它的顺序应 该为 &lt;script＞</span></p>
<p><span style="font-size: 10pt">先，接着为注解的开头 &lt;!-，然後是内容，注解尾 -＞， 最後是 &lt;/script＞。</span></p>
<p><span style="font-size: 10pt">另外要注意的一点是，语解尾那一行的开头双斜线 "//" ，不可以省略，它代表了</span></p>
<p><span style="font-size: 10pt">JavaScript 的注解，若省略了的话， -＞之前的字会被误认为是 JavaScript 的指令。</span></p>
<p><br />
<span style="font-size: 10pt">这个例子可以让使用者输入一段文字，然後再输入完毕後经由 &lt;input＞标签中的</span></p>
<p><span style="font-size: 10pt">"<em>onBlur</em>" 事件函数侦知，於是呼叫<em> Getname(Str)</em>这个函数来加以取得输入字串，</span></p>
<p><span style="font-size: 10pt">并将它显示在对话视窗上！函数 <em>Getname(this.value)</em> 中的 "<em>this.value</em>" 是你在文</span></p>
<p><span style="font-size: 10pt">字输入格式中所输入的值。</span></p>
<p></p>
<span style="font-size: 10pt">
<hr align="center" width="80%" size="2" />
</span>
<p>&nbsp;</p>
<p><br />
<br />
<a name="ex4"><span style="font-size: 10pt"><font color="#008000" size="+2">范例 4：</font>：</span></a></p>
<p><span style="font-size: 10pt">这个范例更是帅了！我们在 HTML 文件档完成了以後，常会加上一行文件</span></p>
<p><span style="font-size: 10pt">最後修改的日期，现在你可不用担心每次都要去改或是忘了改了。你可以</span></p>
<p><span style="font-size: 10pt">很简单的写一个如下的描述语法程式，就可以自动的为你每次产生最後修</span></p>
<p><span style="font-size: 10pt">改的日期了：</span></p>
<pre><span style="font-size: 10pt">&lt;html&gt;
&lt;body&gt;
This is a simple HTML- page.
&lt;br&gt;
Last changes:
&lt;script language="LiveScript"&gt;
&lt;!--  hide script from old browsers
document.write(document.lastModified)
// end hiding contents --&gt;
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</span></pre>
<p><span style="font-size: 10pt">以上的 <em>document.lastModified</em> 叁数在 <strong>Netscape 2.0 beta 2</strong> 版时是被写成 </span></p>
<p><span style="font-size: 10pt"><em>documeut.lastmodified</em> 的，然而，之後的版本就改为 <em>document.lastModified</em>，</span></p>
<p><span style="font-size: 10pt">所以注意一下 ；JavaScript 本身是会区分大小写的，<em> lastmodified</em> 与 <em>lastModified</em></span></p>
<p><span style="font-size: 10pt">在它看来是不同的结果。</span></p>
<p><span style="font-size: 10pt">最後，在这一部分结束之前，要提醒你一点，像范例 4 ，的用法并非每一部</span></p>
<p><span style="font-size: 10pt">机器都是一样的，例如：PC 上跑得很正确的，在工作站上不一定会有相同的</span></p>
<p><span style="font-size: 10pt">结果，所以，或许你仍得测一测不同机器的结果才会有所定论。当然，这一切</span></p>
<p><span style="font-size: 10pt">是因为 JavaScript 还正在发展的原因，最新的讯息还是得去拜访一下</span><a href="http://www.netscape.com/"><span style="font-size: 10pt">Netscape</span></a></p>
<p><span style="font-size: 10pt">公司才知道。也许你也不用奇怪，当你隔周再来访时，JavaScript 可能又作了</span></p>
<p><span style="font-size: 10pt">相当大的改变了呢</span></p>
<p></em><span style="font-size: 10pt">在这个例子中又有新的东西了。首先，让我们注意一下，在语法中的注解部分</span></p>
<img src ="http://www.blogjava.net/sunwch/aggbug/211619.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunwch/" target="_blank">sunny   spring</a> 2008-06-30 11:20 <a href="http://www.blogjava.net/sunwch/archive/2008/06/30/211619.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HTML标签详解</title><link>http://www.blogjava.net/sunwch/archive/2008/06/30/211618.html</link><dc:creator>sunny   spring</dc:creator><author>sunny   spring</author><pubDate>Mon, 30 Jun 2008 03:16:00 GMT</pubDate><guid>http://www.blogjava.net/sunwch/archive/2008/06/30/211618.html</guid><wfw:comment>http://www.blogjava.net/sunwch/comments/211618.html</wfw:comment><comments>http://www.blogjava.net/sunwch/archive/2008/06/30/211618.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sunwch/comments/commentRss/211618.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sunwch/services/trackbacks/211618.html</trackback:ping><description><![CDATA[<span style="font-family: 楷体_GB2312">HTML指令详解 <br style="font-family: " />
结构 <br style="font-family: " />
＜html＞ <br style="font-family: " />
＜head＞ <br style="font-family: " />
＜title＞标题＜title＞ <br style="font-family: " />
＜/head＞ <br style="font-family: " />
＜body＞..........文件内容.......... <br style="font-family: " />
＜/body＞ <br style="font-family: " />
＜/html＞ <br style="font-family: " />
1.文件标题 <br style="font-family: " />
＜title＞..........＜/title＞ <br style="font-family: " />
2.文件更新--＜meta＞ <br style="font-family: " />
【1】10秒后自动更新一次 <br style="font-family: " />
＜meta http-equiv="refresh" content=10＞ <br style="font-family: " />
【2】10秒后自动连结到另一文件 <br style="font-family: " />
＜meta http-equiv="refresh" content="10；URL=欲连结文件之URL"＞ <br style="font-family: " />
3.查询用表单--＜isindex&gt; <br style="font-family: " />
若欲设定查询栏位前的提示文字： <br style="font-family: " />
＜isindex prompt="提示文字"＞ <br style="font-family: " />
4.预设的基准路径--＜base&gt; <br style="font-family: " />
＜base href="放置文件的主机之URL"＞ <br style="font-family: " />
版面 <br style="font-family: " />
1.标题文字 ＜h#＞..........＜/h#＞ #=1~6；h1为最大字，h6为最小字 <br style="font-family: " />
2.字体变化 ＜font＞..........＜/font＞ <br style="font-family: " />
【1】字体大小 ＜font size=#＞..........＜/font＞ #=1~7；数字愈大字也愈大 <br style="font-family: " />
【2】指定字型 ＜font face="字型名称"＞..........＜/font＞ <br style="font-family: " />
【3】文字颜色 ＜font color=#rrggbb＞..........＜/font＞ rr：表红色（red）色码 gg：表绿色（green）色码 bb：表蓝色（blue）色码 <br style="font-family: " />
3.显示小字体 ＜small＞..........＜/small＞ <br style="font-family: " />
4.显示大字体 ＜big＞..........＜/big＞ <br style="font-family: " />
5.粗体字 ＜b＞..........＜/b＞ <br style="font-family: " />
6.斜体字 ＜i＞..........＜/i＞ <br style="font-family: " />
7.打字机字体 ＜tt＞..........＜/tt＞ <br style="font-family: " />
8.底线 ＜u＞..........＜/u＞ <br style="font-family: " />
9.删除线 ＜strike＞..........＜/strike＞ <br style="font-family: " />
10.下标字 ＜sub＞..........＜/sub＞ <br style="font-family: " />
11.上标字 ＜sup&gt;..........＜/sup＞ <br style="font-family: " />
12.文字闪烁效果 ＜blink＞..........＜/blink＞ <br style="font-family: " />
13.换行 ＜br＞ <br style="font-family: " />
14.分段 ＜p＞ <br style="font-family: " />
15.文字的对齐方向 ＜p align="#"＞ #号可为 left：表向左对齐（预设值） center：表向中对齐 right：表向右对齐 P.S.＜p align="#"＞之后的文字都会以所设的对齐方式显示， 直到出现另一个＜p align="#"＞改变其对齐方向，或遇到 ＜hr＞ⅱ＜h#＞标签时会自动设回预设的向左对齐。 <br style="font-family: " />
16.分隔线 ＜hr＞ <br style="font-family: " />
【1】分隔线的粗细 ＜hr size=点数＞ <br style="font-family: " />
【2】分隔线的宽度 ＜hr size=点数或百分比＞ <br style="font-family: " />
【3】分隔线对齐方向 ＜hr align="#"＞ #号可为 left：表向左对齐（预设值） center：表向中对齐 right：表向右对齐 <br style="font-family: " />
【4】分隔线的颜色 ＜hr color=#rrggbb＞ <br style="font-family: " />
【5】实心分隔线 ＜hr noshade＞ <br style="font-family: " />
17.向中对齐 ＜center＞..........＜/center＞ <br style="font-family: " />
18.依原始样式显示 ＜pre＞..........＜/pre＞ <br style="font-family: " />
19.＜body＞指令的属性 <br style="font-family: " />
【1】背景颜色 -- bgcolor ＜body bgcolor=#rrggbb＞ <br style="font-family: " />
【2】背景图案 -- background ＜body background="图形文件名"＞ <br style="font-family: " />
【3】设定背景图案不会卷动 -- bgproperties ＜body bgproperties=fixed＞ <br style="font-family: " />
【4】文件内容文字的颜色 -- text ＜body text=#rrggbb＞ <br style="font-family: " />
【5】超连结文字颜色 -- link ＜body link=#rrggbb＞ <br style="font-family: " />
【6】正被选取的超连结文字颜色 -- vlink ＜body vlink=#rrggbb＞ <br style="font-family: " />
【7】已连结过的超连结文字颜色 -- alink ＜body alink=#rrggbb＞ <br style="font-family: " />
20.注解 ＜!--..........--＞21.特殊字元表示法 <br style="font-family: " />
符 号 语 法 <br style="font-family: " />
＜ ＆lt <br style="font-family: " />
＞ ＆gt <br style="font-family: " />
&amp; ＆amp <br style="font-family: " />
" ＆quot <br style="font-family: " />
空白 ＆nbsp <br style="font-family: " />
<br style="font-family: " />
图片 <br style="font-family: " />
1.插入图片 ＜img src="图形文件名"＞ <br style="font-family: " />
2.设定图框 -- border ＜img src="图形文件名" border=点数＞ <br style="font-family: " />
3.设定图形大小 -- widthⅱheight ＜img src="图形文件名" width=宽度点数 height=高度点数＞ <br style="font-family: " />
4.设定图形上下左右留空 -- vspaceⅱhspace ＜img src="图形文件名" vspace=上下留空点数 hspace=左右留空点数＞ <br style="font-family: " />
5.图形附注 ＜img src="图形文件名" alt="说明文字"＞ <br style="font-family: " />
6.预载图片 <br style="font-family: " />
＜img src="高解析度图形文件名" lowsrc="低解析度图形文件名"＞ P.S.两个图的图形大小最好一致 <br style="font-family: " />
7.影像地图（Image Map） ＜img src="图形文件名" usemap="#图的名称"＞ ＜map name="图的名称" <br style="font-family: " />
<br style="font-family: " />
＜area shape=形状 coords=区域座标列表 href="连结点之URL"＞ <br style="font-family: " />
＜area shape=形状 coords=区域座标列表 href="连结点之URL"＞ <br style="font-family: " />
＜area shape=形状 coords=区域座标列表 href="连结点之URL"＞ <br style="font-family: " />
＜area shape=形状 coords=区域座标列表 href="连结点之URL"＞ ＜/map＞ <br style="font-family: " />
【1】定义形状 -- shape <br style="font-family: " />
shape=rect：矩形 shape=circle：圆形 shape=poly：多边形 <br style="font-family: " />
【2】定义区域 -- coords <br style="font-family: " />
a.矩形：必须使用四个数字，前两个数字为左上角座标，后两个数字为右下角座标 <br style="font-family: " />
例：＜area shape=rect coords=100,50,200,75 href="URL"＞ <br style="font-family: " />
b.圆形：必须使用三个数字，前两个数字为圆心的座标，最后一个数字为半径长度 <br style="font-family: " />
例：＜area shape=circle coords=85,155,30 href="URL"＞ <br style="font-family: " />
c.任意图形（多边形）：将图形之每一转折点座标依序填入 <br style="font-family: " />
例：＜area shape=poly coords=232,70,285,70,300,90,250,90,200,78 href="URL"＞ <br style="font-family: " />
表格 <br style="font-family: " />
1.定义表格 ＜table＞..........＜/table＞ <br style="font-family: " />
【1】设定边框的厚度 -- border <br style="font-family: " />
＜table border=点数＞ <br style="font-family: " />
【2】设定格线的宽度 -- cellspacing <br style="font-family: " />
＜table cellspacing=点数＞ <br style="font-family: " />
【3】设定资料与格线的距离 -- cellpadding <br style="font-family: " />
＜table cellpadding=点数＞ <br style="font-family: " />
【4】调整表格宽度 -- width <br style="font-family: " />
＜table width=点数或百分比＞ <br style="font-family: " />
【5】调整表格高度 -- height <br style="font-family: " />
＜table height=点数或百分比＞ <br style="font-family: " />
【6】设定表格背景色彩 -- bgcolor <br style="font-family: " />
＜table bgcolor=#rrggbb＞ <br style="font-family: " />
【7】设定表格边框色彩 -- bordercolor <br style="font-family: " />
＜table bordercolor=#rrggbb <br style="font-family: " />
<br style="font-family: " />
2.显示格线 ＜table border＞ <br style="font-family: " />
3.表格标题 <br style="font-family: " />
＜caption＞..........＜/caption＞ <br style="font-family: " />
表格标题位置 -- align <br style="font-family: " />
＜caption align="#"＞ #号可为 top：表标题置于表格上方（预设值） <br style="font-family: " />
bottom：表标题置于表格下方 <br style="font-family: " />
4.定义列 ＜tr＞ <br style="font-family: " />
5.定义栏位 《1》＜td＞：靠左对齐 <br style="font-family: " />
《2》＜th＞：靠中对齐ⅱ粗体 <br style="font-family: " />
【1】水平位置 -- align ＜th align="#"＞ <br style="font-family: " />
#号可为 left：向左对齐 <br style="font-family: " />
center：向中对齐 right：向右对齐 <br style="font-family: " />
【2】垂直位置 -- align ＜th align="#"＞ #号可为 <br style="font-family: " />
top：向上对齐 middle：向中对齐 <br style="font-family: " />
bottom：向下对齐 <br style="font-family: " />
【3】栏位宽度 -- width <br style="font-family: " />
＜th width=点数或百分比＞ <br style="font-family: " />
【4】栏位垂直合并 -- rowspan <br style="font-family: " />
＜th rowspan=欲合并栏位数＞ <br style="font-family: " />
【5】栏位横向合并 -- colspan <br style="font-family: " />
＜th colspan=欲合并栏位数＞ <br style="font-family: " />
清单 <br style="font-family: " />
一、目录式清单 <br style="font-family: " />
＜dir＞ ＜li＞项目1 ＜li＞项目2 ＜li＞项目3 ＜/dir＞ P.S.目录式清单每一个项目不能超过20个字元（即10个中文字） <br style="font-family: " />
二、选项式清单 ＜menu＞ ＜li＞项目1 ＜li＞项目2 ＜li＞项目3 ＜/menu＞ <br style="font-family: " />
三、有序号的清单 ＜ol＞ ＜li＞项目1 ＜li＞项目2 ＜li＞项目3 ＜/ol＞ <br style="font-family: " />
【1】序号形式 -- type ＜ol type=#＞或＜li type=#＞ #号可为 A：表以大写英文字母AⅱBⅱCⅱD...做为项目编号 a：表以小写英文字母aⅱbⅱcⅱd...做为项目编号 I：表以大写罗马数字做为项目编号 i：表以小写罗马数字做为项目编号 1：表以阿拉伯数字做为项目编号（预设值） <br style="font-family: " />
【2】起始数字 -- start ＜ol start=欲开始计数的序数＞ <br style="font-family: " />
【3】指定编号 -- value ＜li value=欲指定的序数＞ <br style="font-family: " />
四、无序号的清单 ＜ul＞ ＜li＞项目1 ＜li＞项目2 ＜li＞项目3 ＜/ul＞ <br style="font-family: " />
<br style="font-family: " />
【1】项目符号形式 -- type ＜ul type=#＞或＜li type=#＞ #号可为 disc：实心圆点（预设值） circle：空心圆点 square：实心方块 <br style="font-family: " />
【2】原始清单 -- plain ＜ul plain＞ <br style="font-family: " />
【3】清单排列方式 -- warp 《1》清单垂直排列 ＜ul warp = vert＞ 《2》清单水平排列 ＜ul warp = horiz＞ <br style="font-family: " />
五、定义式清单 ＜dl＞ ＜dt＞项目1 ＜dd＞项目1说明 ＜dt＞项目2 ＜dd＞项目2说明 ＜dt＞项目3 ＜dd＞项目3说明 ＜/dl＞ <br style="font-family: " />
紧密排列 -- compact ＜dl compact＞ P.S.如此可使＜dt＞的内容与＜dd＞的内容在同一行，仅 以数格空白相隔而不换行，但若＜dt＞的文字超过一 定的长度后，compact的作用就消失了！ <br style="font-family: " />
表单 <br style="font-family: " />
一、基本架构 ＜form action="处理资料用的CGI程式之URL"或"mailt电子信箱的URL" method="get或post"＞ .......... .......... .......... ＜/form＞ <br style="font-family: " />
二、输入文件型表单 ＜form action="URL" method="post"＞ ＜input＞ ＜input＞ .......... .......... ＜/form＞ <br style="font-family: " />
【1】栏位类型 -- type ＜input type=#＞ #号可为 text：文字输入 password：密码 checkbox：多选钮 radio：单选钮 submit：接受按钮 reset：重设按钮 image：图形钮 hidden：隐藏栏位 <br style="font-family: " />
【2】栏位名称 -- name ＜input name="资料栏名"＞ P.S.若type为submitⅱreset则name不必设定 <br style="font-family: " />
【3】文件上的预设值 -- value ＜input value="预设之字串"＞ <br style="font-family: " />
【4】设定栏位的宽度 -- size ＜input size=字元数＞ <br style="font-family: " />
【5】限制最大输入字串的长度 -- maxlength ＜input maxlength=字元数＞ <br style="font-family: " />
【6】预设checkbox或radio的初值 -- checked ＜input type=checkbox checked＞ ＜input type=radio checked＞ <br style="font-family: " />
<br style="font-family: " />
【7】指定图形的URL -- src ＜input type=image src="图档名"＞ <br style="font-family: " />
【8】图文对齐 -- align ＜input type=image align="#"＞ #号可为 top：文字对齐图片之顶端 middle：文字对齐图片之中间 buttom：文字对齐图片之底部 <br style="font-family: " />
三、选择式表单 ＜form action="URL" method="post"＞ ＜select＞ ＜option＞ ＜option＞ .......... .......... ＜/select＞ ＜/form＞ <br style="font-family: " />
A、＜select＞的属性 <br style="font-family: " />
【1】栏位名称 -- name ＜select name="资料栏位名"＞ <br style="font-family: " />
【2】设定显示的选项数 -- size ＜select size=个数＞ <br style="font-family: " />
【3】多重选项 -- multiple ＜select multiple＞ <br style="font-family: " />
B、＜option＞的属性 <br style="font-family: " />
【1】定义选项的传回值 -- value ＜option value="传回值"＞ <br style="font-family: " />
【2】预先选取的选项 -- selected ＜option selected＞ <br style="font-family: " />
四、多列输入文字区表单 ＜form action="URL" method="post"＞ ＜textarea＞ .......... .......... ＜/textarea＞ ＜/form＞ <br style="font-family: " />
【1】文字区的变数名称 -- name ＜textarea name=变数名称＞ <br style="font-family: " />
【2】设定文字输入区宽度 -- cols ＜textarea cols=字元数＞ <br style="font-family: " />
【3】设定文字输入区高度 -- rows ＜textarea rows=列数＞ <br style="font-family: " />
【4】输入区设定预设字串 ＜textarea＞ 预设文字 ＜/textarea＞ <br style="font-family: " />
【5】自动换行与否 -- wrap ＜textarea wrap=#＞ #号可为 off：表输入的文字超过栏宽时，不会自动换行（预设值） virtual：表输入的文字在超过栏宽时会自动换行 <br style="font-family: " />
链接 <br style="font-family: " />
一、连结至其他文件 ＜a href="URL"＞说明文字或图片＜/a＞ <br style="font-family: " />
<br style="font-family: " />
二、连结至文件内之某一处（外部连结） <br style="font-family: " />
《1》起点 <br style="font-family: " />
＜a href="档名#名称"＞..........＜/a＞ <br style="font-family: " />
《2》终点 ＜a name="名称"＞ <br style="font-family: " />
三、frame的超连结 <br style="font-family: " />
【1】开启新的浏览器来显示连结文件 -- _blank ＜a href="URL" target=_blank＞ <br style="font-family: " />
【2】显示连结文件於目前的frame -- _self ＜a href="URL" target=_self＞ <br style="font-family: " />
【3】以上一层的分割视窗显示连结文件 -- _parent ＜a href="URL" target=_parent＞ <br style="font-family: " />
【4】以全视窗显示连结文件 -- _top ＜a href="URL" target=_top＞ <br style="font-family: " />
【5】以特定视窗显示连结文件 --＜a href="URL" target="特定视窗名称"＞ <br style="font-family: " />
FRAME <br style="font-family: " />
一、分割视窗指令 ＜frameset＞..........＜/frameset＞ <br style="font-family: " />
【1】垂直（上下）分割 -- rows <br style="font-family: " />
＜frameset rows=#＞ #号可为点数：如欲分割为100,200,300三个视窗，则 <br style="font-family: " />
＜frameset rows=100,200,300＞；亦可以*号代表，如＜frameset rows=*,500,*＞ <br style="font-family: " />
百分比：如＜frameset rows=30%,70%＞，各 项总和最好为100% <br style="font-family: " />
【2】水平（左右）分割 -- cols ＜frameset cols=点数或百分比＞ <br style="font-family: " />
二ⅱ指定视窗内容 -- ＜frame＞ <br style="font-family: " />
＜frameset cols=30%,70%＞ ＜frame＞ ＜frame＞ ＜/frameset＞ <br style="font-family: " />
【1】指定视窗的文件名称 -- src ＜frame src=HTML档名＞ <br style="font-family: " />
【2】定义视窗的名称 -- name <br style="font-family: " />
＜frame name=视窗名称＞ <br style="font-family: " />
【3】设定文件与上下边框的距离 -- marginheight <br style="font-family: " />
＜frame marginheight=点数＞ <br style="font-family: " />
【4】设定文件与左右边框的距离 -- marginwidth <br style="font-family: " />
＜frame marginwidth=点数＞ <br style="font-family: " />
【5】设定分割视窗卷轴 -- scrollin <br style="font-family: " />
<br style="font-family: " />
＜frame scrolling=#＞ #号可为 yes：固定出现卷轴 <br style="font-family: " />
no：不出现卷轴 auto：自动判断文件大小需不需要卷轴（预设值） <br style="font-family: " />
【6】锁住分割视窗的大小 -- noresize ＜frame noresize＞ <br style="font-family: " />
</span>
<img src ="http://www.blogjava.net/sunwch/aggbug/211618.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunwch/" target="_blank">sunny   spring</a> 2008-06-30 11:16 <a href="http://www.blogjava.net/sunwch/archive/2008/06/30/211618.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java文件上传代码</title><link>http://www.blogjava.net/sunwch/archive/2008/06/30/211612.html</link><dc:creator>sunny   spring</dc:creator><author>sunny   spring</author><pubDate>Mon, 30 Jun 2008 03:10:00 GMT</pubDate><guid>http://www.blogjava.net/sunwch/archive/2008/06/30/211612.html</guid><wfw:comment>http://www.blogjava.net/sunwch/comments/211612.html</wfw:comment><comments>http://www.blogjava.net/sunwch/archive/2008/06/30/211612.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/sunwch/comments/commentRss/211612.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sunwch/services/trackbacks/211612.html</trackback:ping><description><![CDATA[<p style="font-size: 10pt; color: #333333">1 package com.khan.web;<br />
&nbsp;&nbsp; 2 <br />
&nbsp;&nbsp; 3 import java.io.DataInputStream;<br />
&nbsp;&nbsp; 4 import java.io.File;<br />
&nbsp;&nbsp; 5 import java.io.FileNotFoundException;<br />
&nbsp;&nbsp; 6 import java.io.FileOutputStream;<br />
&nbsp;&nbsp; 7 import java.io.IOException;<br />
&nbsp;&nbsp; 8 import javax.servlet.http.HttpServletRequest;<br />
&nbsp;&nbsp; 9 import java.io.*;<br />
10 import java.util.HashMap;<br />
11 <br />
12 <br />
13 public class uploadFile&nbsp;&nbsp; {<br />
14&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static final int MAX_SIZE = 1024 * 1024*100;<br />
15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static final String FILE_DIR = "d:/temp/";<br />
16 <br />
17&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private int file_Size=0;<br />
18&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private String file_Path = "";<br />
19&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private HashMap hm = new HashMap();<br />
20 <br />
21&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public String upLoad(HttpServletRequest req) {<br />
22&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String tmpString ="";<br />
23&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String result = "";<br />
24&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataInputStream dis = null;<br />
25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String split_Str = "";<br />
26 <br />
27&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br />
28&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dis = new DataInputStream(req.getInputStream());<br />
29&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String content = req.getContentType();<br />
30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (content != null &amp;&amp; content.indexOf("multipart/form-data") != -1) {<br />
31 <br />
32&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int reqSize = req.getContentLength();<br />
33&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; byte[] data = new byte[reqSize];<br />
34&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int bytesRead = 0;<br />
35&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int totalBytesRead = 0;<br />
36&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int sizeCheck = 0;<br />
37&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (totalBytesRead &lt; reqSize) {<br />
38&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // check for maximum file size violation<br />
39&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sizeCheck = totalBytesRead + dis.available();<br />
40&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (sizeCheck &gt; MAX_SIZE)<br />
41&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result = "文件太大不能上传<img src="http://www.cppblog.com/Images/dot.gif"  alt="" />";<br />
42 <br />
43&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bytesRead = dis.read(data, totalBytesRead, reqSize);<br />
44&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; totalBytesRead += bytesRead;<br />
45&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
46&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String dataString = null;<br />
47&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //dataString = new String(data, "ISO-8859-1");<br />
48&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dataString = new String(data);<br />
49&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tmpString = new String(data);<br />
50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hm = parseAnotherParam(tmpString);<br />
51&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
52&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //取出字段分割符<br />
53&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; split_Str = dataString.substring(0, dataString.indexOf("\r\n"));<br />
54&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 分离filepath 并赋值<br />
55&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dataString = dataString.substring(dataString.indexOf("filename=\""));<br />
56&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String filePath = dataString.substring(0, dataString.indexOf("Content-Type:"));<br />
57&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (filePath==null &amp;&amp; filePath.equals("")) return "";<br />
58&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //System.out.println(filePath);<br />
59&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dataString = new String(dataString.getBytes(),"ISO-8859-1");<br />
60&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 分离contentType 并赋值<br />
61&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dataString = dataString.substring(dataString.indexOf("Content-Type:") + 1);<br />
62&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dataString = dataString.substring(dataString.indexOf("\n") + 1);<br />
63&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 分离文件信息 获得最终想要的字节<br />
64 //System.out.print("|"+dataString+"|");<br />
65&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dataString = dataString.substring(2, dataString.indexOf(split_Str));<br />
66 //System.out.println("|"+dataString+"|");<br />
67&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dataString = dataString.substring(0, dataString.lastIndexOf("\n") - 1);<br />
68 //System.out.print("|"+dataString+"|");<br />
69&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (writeFile(dataString.getBytes("ISO-8859-1"), FILE_DIR + getFileName(filePath))) {<br />
70&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.file_Size = dataString.getBytes("ISO-8859-1").length;<br />
71&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.file_Path = FILE_DIR + getFileName(filePath);<br />
72&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result = "文件上传完毕";<br />
73&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {<br />
74&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result = "文件上传失败";<br />
75&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
76&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {<br />
77&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result = "content 必须为 multipart/form-data";<br />
78&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
79&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (UnsupportedEncodingException ex4) {<br />
80&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result = "getBytes 失败 UnsupportedEncodingException错误";<br />
81&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (NullPointerException e) {<br />
82&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result = "getBytes 失败 NullPointerException错误";<br />
83&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (IOException ex1) {<br />
84&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result = "IOException 错误 ";<br />
85&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
86 <br />
87&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return result;<br />
88&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
89 <br />
90&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public String getFilePath(){<br />
91&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return this.file_Path;<br />
92&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
93 <br />
94&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public int getFileSize(){<br />
95&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return this.file_Size;<br />
96&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
97 <br />
98&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public boolean writeFile(byte[] data, String path) {<br />
99&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; File f = null;<br />
100&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FileOutputStream fos = null;<br />
101&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br />
102&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f = new File(path);<br />
103&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f.createNewFile();<br />
104&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fos = new FileOutputStream(f);<br />
105&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fos.write(data, 0, data.length);<br />
106&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (FileNotFoundException e) {<br />
107&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false;<br />
108&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (IOException e) {<br />
109&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false;<br />
110&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } finally {<br />
111&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br />
112&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fos.close();<br />
113&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (IOException e) {<br />
114&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false;<br />
115&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
116&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
117&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true;<br />
118&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
119 <br />
120&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public String getFileName(String arg) {<br />
121&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String path = "";<br />
122&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (arg.indexOf("\"") &gt; -1)<br />
123&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; path = arg.substring(arg.indexOf("\"") + 1, arg.lastIndexOf("\""));<br />
124&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br />
125&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; path = arg;<br />
126&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //System.out.println("file_path:"+arg);<br />
127&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; path = path.substring(path.lastIndexOf("\\") + 1);<br />
128&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return path;<br />
129&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
130 <br />
131 <br />
132&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public HashMap parseAnotherParam(String str){<br />
133&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HashMap hm= new HashMap();<br />
134&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String key="";<br />
135&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String value="";<br />
136&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int startindex = 0;<br />
137&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int endindex = 0;<br />
138 <br />
139&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; startindex = str.indexOf("Content-Disposition: form-data; name=\"") + "Content-Disposition: form-data; name=\"".length();<br />
140&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; endindex = str.indexOf("\"\r\n\r\n");<br />
141 <br />
142&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while ( startindex &gt;-1 &amp;&amp; endindex &gt; -1 ){<br />
143&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; key = str.substring(startindex, endindex);<br />
144 <br />
145&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!str.substring(endindex , endindex + 5).equals("\"\r\n\r\n")&nbsp;&nbsp; ){//去掉没有value的元素<br />
146&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str = str.substring(endindex);<br />
147&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; startindex = str.indexOf("Content-Disposition: form-data; name=\"") + "Content-Disposition: form-data; name=\"".length();<br />
148&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; endindex = str.indexOf("\"\r\n\r\n");<br />
149&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; continue;<br />
150&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
151&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( key.indexOf("\";") &gt; -1){//去掉上传文件的参数以及编码<br />
152&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str = str.substring(str.indexOf("\";") + 2);<br />
153&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; startindex = str.indexOf("Content-Disposition: form-data; name=\"") + "Content-Disposition: form-data; name=\"".length();<br />
154&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; endindex = str.indexOf("\"\r\n\r\n");<br />
155 <br />
156&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; continue;<br />
157&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else<br />
158&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str = str.substring(endindex + 5);<br />
159 <br />
160&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; value = str.substring(0, str.indexOf("\r\n"));<br />
161&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str = str.substring(str.indexOf("\r\n") + 2);<br />
162&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //System.out.println("key:"+key+" value:"+value);<br />
163&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hm.put(key,value);<br />
164 <br />
165&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; startindex = str.indexOf("Content-Disposition: form-data; name=\"") + "Content-Disposition: form-data; name=\"".length();<br />
166&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; endindex = str.indexOf("\"\r\n\r\n");<br />
167 <br />
168&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
169&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return hm;<br />
170&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
171 <br />
172&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public String getParameter(String param){<br />
173&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //System.out.println(hm.toString());<br />
174&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return (String)hm.get(param);<br />
175&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
176 <br />
177 <br />
178 }</p>
<img src ="http://www.blogjava.net/sunwch/aggbug/211612.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunwch/" target="_blank">sunny   spring</a> 2008-06-30 11:10 <a href="http://www.blogjava.net/sunwch/archive/2008/06/30/211612.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>