??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲无线码在线一区观看,av在线亚洲欧洲日产一区二区,亚洲国产综合AV在线观看http://www.tkk7.com/sunwch/Java zh-cnMon, 12 May 2025 00:42:53 GMTMon, 12 May 2025 00:42:53 GMT60JDBCq接数据库大?/title><link>http://www.tkk7.com/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.tkk7.com/sunwch/archive/2008/12/17/246903.html</guid><wfw:comment>http://www.tkk7.com/sunwch/comments/246903.html</wfw:comment><comments>http://www.tkk7.com/sunwch/archive/2008/12/17/246903.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/sunwch/comments/commentRss/246903.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/sunwch/services/trackbacks/246903.html</trackback:ping><description><![CDATA[<div><span style="font-size: 9pt">          现在有好多初?/span><span style="font-size: 9pt">jsp</span><span style="font-size: 9pt">的网友经怼(x)问数据库怎么q接啊,怎么老出错啊Q所以我集中的在q写文章供大家参考,其实q种把数据库逻辑全部攑֜</span><span style="font-size: 9pt">jsp</span><span style="font-size: 9pt">里未必是好的做法Q但是有利于初学者学?fn),所以我p样做?jin),当大家学C定程度的时候,可以考虑?/span><span style="font-size: 9pt">MVC</span><span style="font-size: 9pt">的模式开发。在l习(fn)q些代码的时候,你一定将</span><span style="font-size: 9pt">jdbc</span><span style="font-size: 9pt">的驱动程序放到服务器的类路径里,然后要在数据库里Z个表</span><span style="font-size: 9pt">test,</span><span style="font-size: 9pt">有两个字D|如ؓ(f)</span><span style="font-size: 9pt">test1</span><span style="font-size: 9pt">Q?/span><span style="font-size: 9pt">test2</span><span style="font-size: 9pt">Q可以用下面</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">q接</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">模式Q?/span><span style="font-size: 9pt"> <br /> testoracle.jsp</span><span style="font-size: 9pt">如下Q?/span><span style="font-size: 9pt"> <br /> <%@ page contentType="text/html;charset=gb2312"%> <br /> <%@ page import="java.sql.*"%> <br /> <html> <br /> <body> <br /> <%Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); <br /> String url="jdbc:oracle:thin:@localhost:1521:orcl"; <br /> //orcl</span><span style="font-size: 9pt">Z的数据库?/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()) {%> <br /> </span><span style="font-size: 9pt">(zhn)的W一个字D内容ؓ(f)Q?/span><span style="font-size: 9pt"><%=rs.getString(1)%> <br /> </span><span style="font-size: 9pt">(zhn)的W二个字D内容ؓ(f)Q?/span><span style="font-size: 9pt"><%=rs.getString(2)%> <br /> <%}%> <br /> <%out.print("</span><span style="font-size: 9pt">数据库操作成功,恭喜?/span><span style="font-size: 9pt">");%> <br /> <%rs.close(); <br /> stmt.close(); <br /> conn.close(); <br /> %> <br /> </body> <br /> </html> <br /> </span><span style="font-size: 9pt">二?/span><span style="font-size: 9pt">jsp</span><span style="font-size: 9pt">q接</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">如下Q?/span><span style="font-size: 9pt"> <br /> <%@ page contentType="text/html;charset=gb2312"%> <br /> <%@ page import="java.sql.*"%> <br /> <html> <br /> <body> <br /> <%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">Z的数据库?/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()) {%> <br /> </span><span style="font-size: 9pt">(zhn)的W一个字D内容ؓ(f)Q?/span><span style="font-size: 9pt"><%=rs.getString(1)%> <br /> </span><span style="font-size: 9pt">(zhn)的W二个字D内容ؓ(f)Q?/span><span style="font-size: 9pt"><%=rs.getString(2)%> <br /> <%}%> <br /> <%out.print("</span><span style="font-size: 9pt">数据库操作成功,恭喜?/span><span style="font-size: 9pt">");%> <br /> <%rs.close(); <br /> stmt.close(); <br /> conn.close(); <br /> %> <br /> </body> <br /> </html> <br /> </span><span style="font-size: 9pt">三?/span><span style="font-size: 9pt">jsp</span><span style="font-size: 9pt">q接</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">如下Q?/span><span style="font-size: 9pt"> <br /> <%@ page contentType="text/html;charset=gb2312"%> <br /> <%@ page import="java.sql.*"%> <br /> <html> <br /> <body> <br /> <%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">Z的数据库?/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()) {%> <br /> </span><span style="font-size: 9pt">(zhn)的W一个字D内容ؓ(f)Q?/span><span style="font-size: 9pt"><%=rs.getString(1)%> <br /> </span><span style="font-size: 9pt">(zhn)的W二个字D内容ؓ(f)Q?/span><span style="font-size: 9pt"><%=rs.getString(2)%> <br /> <%}%> <br /> <%out.print("</span><span style="font-size: 9pt">数据库操作成功,恭喜?/span><span style="font-size: 9pt">");%> <br /> <%rs.close(); <br /> stmt.close(); <br /> conn.close(); <br /> %> <br /> </body> <br /> </html> <br /> </span><span style="font-size: 9pt">四?/span><span style="font-size: 9pt">jsp</span><span style="font-size: 9pt">q接</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">如下Q?/span><span style="font-size: 9pt"> <br /> <%@ page contentType="text/html;charset=gb2312"%> <br /> <%@ page import="java.sql.*"%> <br /> <html> <br /> <body> <br /> <%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">Z的数据库?/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()) {%> <br /> </span><span style="font-size: 9pt">(zhn)的W一个字D内容ؓ(f)Q?/span><span style="font-size: 9pt"><%=rs.getString(1)%> <br /> </span><span style="font-size: 9pt">(zhn)的W二个字D内容ؓ(f)Q?/span><span style="font-size: 9pt"><%=rs.getString(2)%> <br /> <%}%> <br /> <%out.print("</span><span style="font-size: 9pt">数据库操作成功,恭喜?/span><span style="font-size: 9pt">");%> <br /> <%rs.close(); <br /> stmt.close(); <br /> conn.close(); <br /> %> <br /> </body> <br /> </html> <br /> </span><span style="font-size: 9pt">五?/span><span style="font-size: 9pt">jsp</span><span style="font-size: 9pt">q接</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">如下Q?/span><span style="font-size: 9pt"> <br /> <%@ page contentType="text/html;charset=gb2312"%> <br /> <%@ page import="java.sql.*"%> <br /> <html> <br /> <body> <br /> <%Class.forName("com.sybase.jdbc.SybDriver").newInstance(); <br /> String url =" jdbc:sybase:Tds:localhost:5007/tsdata"; <br /> //tsdata</span><span style="font-size: 9pt">Z的数据库?/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()) {%> <br /> </span><span style="font-size: 9pt">(zhn)的W一个字D内容ؓ(f)Q?/span><span style="font-size: 9pt"><%=rs.getString(1)%> <br /> </span><span style="font-size: 9pt">(zhn)的W二个字D内容ؓ(f)Q?/span><span style="font-size: 9pt"><%=rs.getString(2)%> <br /> <%}%> <br /> <%out.print("</span><span style="font-size: 9pt">数据库操作成功,恭喜?/span><span style="font-size: 9pt">");%> <br /> <%rs.close(); <br /> stmt.close(); <br /> conn.close(); <br /> %> <br /> </body> <br /> </html> <br /> </span><span style="font-size: 9pt">六?/span><span style="font-size: 9pt">jsp</span><span style="font-size: 9pt">q接</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">如下Q?/span><span style="font-size: 9pt"> <br /> <%@ page contentType="text/html;charset=gb2312"%> <br /> <%@ page import="java.sql.*"%> <br /> <html> <br /> <body> <br /> <%Class.forName("org.gjt.mm.mysql.Driver").newInstance(); <br /> String url ="jdbc:mysql://localhost/softforum?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1" <br /> //testDB</span><span style="font-size: 9pt">Z的数据库?/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()) {%> <br /> </span><span style="font-size: 9pt">(zhn)的W一个字D内容ؓ(f)Q?/span><span style="font-size: 9pt"><%=rs.getString(1)%> <br /> </span><span style="font-size: 9pt">(zhn)的W二个字D内容ؓ(f)Q?/span><span style="font-size: 9pt"><%=rs.getString(2)%> <br /> <%}%> <br /> <%out.print("</span><span style="font-size: 9pt">数据库操作成功,恭喜?/span><span style="font-size: 9pt">");%> <br /> <%rs.close(); <br /> stmt.close(); <br /> conn.close(); <br /> %> <br /> </body> <br /> </html> <br /> </span><span style="font-size: 9pt">七?/span><span style="font-size: 9pt">jsp</span><span style="font-size: 9pt">q接</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">如下Q?/span><span style="font-size: 9pt"> <br /> <%@ page contentType="text/html;charset=gb2312"%> <br /> <%@ page import="java.sql.*"%> <br /> <html> <br /> <body> <br /> <%Class.forName("org.postgresql.Driver").newInstance(); <br /> String url ="jdbc:postgresql://localhost/soft" <br /> //soft</span><span style="font-size: 9pt">Z的数据库?/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()) {%> <br /> </span><span style="font-size: 9pt">(zhn)的W一个字D内容ؓ(f)Q?/span><span style="font-size: 9pt"><%=rs.getString(1)%> <br /> </span><span style="font-size: 9pt">(zhn)的W二个字D内容ؓ(f)Q?/span><span style="font-size: 9pt"><%=rs.getString(2)%> <br /> <%}%> <br /> <%out.print("</span><span style="font-size: 9pt">数据库操作成功,恭喜?/span><span style="font-size: 9pt">");%> <br /> <%rs.close(); <br /> stmt.close(); <br /> conn.close(); <br /> %> <br /> </body> <br /> </html></span></div> <img src ="http://www.tkk7.com/sunwch/aggbug/246903.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/sunwch/" target="_blank">sunny spring</a> 2008-12-17 16:47 <a href="http://www.tkk7.com/sunwch/archive/2008/12/17/246903.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate入门E序http://www.tkk7.com/sunwch/archive/2008/12/02/Hibernate.htmlsunny springsunny springTue, 02 Dec 2008 02:19:00 GMThttp://www.tkk7.com/sunwch/archive/2008/12/02/Hibernate.htmlhttp://www.tkk7.com/sunwch/comments/243855.htmlhttp://www.tkk7.com/sunwch/archive/2008/12/02/Hibernate.html#Feedback0http://www.tkk7.com/sunwch/comments/commentRss/243855.htmlhttp://www.tkk7.com/sunwch/services/trackbacks/243855.html以下E序是Hiberante入门E序:代码如下:首先说hibernate开发流E?A、准备一个POJOc?nbsp; B、创建类的映和配置文g(hibernate.cfg.xml  class.hbm.xml)class.hbm.xml此配|文件是必须与POJOcM的属性一一对应.
现在我以我创建的E序Z来进行说?数据库ؓ(f)demo,表的名字为admin
1、POJOc?br />

package com.wch.pojo;

public class Admin {
 private int id;
 private String username;
 private String password;
 public int getId() {
  return id;
 }
 public void setId(int id) {
  this.id = id;
 }
 public String getPassword() {
  return password;
 }
 public void setPassword(String password) {
  this.password = password;
 }
 public String getUsername() {
  return username;
 }
 public void setUsername(String username) {
  this.username = username;
 }
}

class.hbm.xml映射文g存放位置必须于POJO位置一?也就是说必须攑֜同一个目?hibernate.cfg.xml攑֜src根目录下.
2、创建hibernate.cfg.xml和class.hbm.xml(class指的是POJOcȝ名字)
class.hbm.xml:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
    <class name="com.wch.pojo.Admin" table="admin">
        <id name="id" type="integer">
            <column name="id" />
            <generator class="assigned"></generator>
        </id>
        <property name="username" type="string">
            <column name="username" length="32" not-null="false" />
        </property>
        <property name="password" type="string">
            <column name="password" length="20" not-null="false" />
        </property>
    </class>
</hibernate-mapping>
hibernate.cfg.xml:

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<!-- Generated by MyEclipse Hibernate Tools.                   -->
<hibernate-configuration>

<session-factory>
 <property name="dialect">
  org.hibernate.dialect.MySQLDialect
 </property>
 <property name="connection.url">
  jdbc:mysql://localhost:3306/demo
 </property>
 <property name="connection.username">root</property>
 <property name="connection.password">****</property>
 <property name="connection.driver_class">
  com.mysql.jdbc.Driver
 </property>
 <property name="myeclipse.connection.profile">mysql5.0</property>
 <property name="show_sql">true</property>
 <mapping resource="com/wch/pojo/Admin.hbm.xml" />

</session-factory>

</hibernate-configuration>


3、创建应用程序ƈq行代码试:

package com.wch.op;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

import com.wch.pojo.Admin;

public class UserOperation {
 public static void main(String[] args)throws Exception{
  Configuration config = new Configuration().configure();
  // 创徏工厂
  SessionFactory factory = config.buildSessionFactory();
  // 打开session
  Session session = factory.openSession();
  // 事务提交
  try{
   Transaction tx = session.beginTransaction();
   // 创徏对象
   Admin hb = new Admin();
   hb.setId(3);
   hb.setUsername("Hibernate3.2");
   hb.setPassword("20081202");
   //hb.setUsername("WCH");
   //hb.setPassword("Hibernate");
   // 执行插入语句,在hibernat中操作的是一个对?br />    session.save(hb);
   // 提交事务
   tx.commit();
  }catch(Exception e)
  {
   System.out.println("error Msg:"+e.getMessage());
  }finally{
    // close session
    session.close();
  }
 }
}

更ؓ(f)详细的解释请参照Hibernate官方|站:www.hibernate.org




sunny spring 2008-12-02 10:19 发表评论
]]>
windowspȝ命o(h)全集http://www.tkk7.com/sunwch/archive/2008/12/01/243722.htmlsunny springsunny springMon, 01 Dec 2008 07:58:00 GMThttp://www.tkk7.com/sunwch/archive/2008/12/01/243722.htmlhttp://www.tkk7.com/sunwch/comments/243722.htmlhttp://www.tkk7.com/sunwch/archive/2008/12/01/243722.html#Feedback0http://www.tkk7.com/sunwch/comments/commentRss/243722.htmlhttp://www.tkk7.com/sunwch/services/trackbacks/243722.htmlASSOC    昄或修Ҏ(gu)件扩展名兌?br /> AT       计划在计机上运行的命o(h)和程序?br /> ATTRIB   昄或更Ҏ(gu)件属性?br /> BREAK    讄或清除扩展式 CTRL+C (g)查?br /> CACLS    昄或修Ҏ(gu)件的讉K控制列表(ACLs)?br /> CALL     从另一个批处理E序调用q一个?br /> CD       昄当前目录的名U或其更改?br /> CHCP     昄或设|活动代码页数?br /> CHDIR    昄当前目录的名U或其更改?br /> CHKDSK   (g)查磁盘ƈ昄状态报告?br /> CHKNTFS  昄或修改启动时间磁盘检查?br /> CLS      清除屏幕?br /> CMD      打开另一?Windows 命o(h)解释E序H口?br /> COLOR    讄默认控制台前景和背景颜色?br /> COMP     比较两个或两套文件的内容?br /> COMPACT  昄或更?NTFS 分区上文件的压羃?br /> CONVERT  ?FAT 卯{换成 NTFS。?zhn)不能转?br />          当前驱动器?br /> COPY     至一个文件复制到另一个位|?br /> DATE     昄或设|日期?br /> DEL      删除臛_一个文件?br /> DIR      昄一个目录中的文件和子目录?br /> DISKCOMP 比较两个软盘的内宏V?br /> DISKCOPY 一个Y盘的内容复制到另一个Y盘?br /> DOSKEY   ~辑命o(h)行、调?Windows 命o(h)q创建宏?br /> ECHO     昄消息Q或命令回显打开或关上?br /> ENDLOCAL l束Ҏ(gu)件中环境更改的本地化?br /> ERASE    删除臛_一个文件?br /> EXIT     退?CMD.EXE E序(命o(h)解释E序)?br /> FC       比较两个或两套文Ӟq显C?br />          不同处?br /> FIND     在文件中搜烦(ch)文字字符丌Ӏ?br /> FINDSTR  在文件中搜烦(ch)字符丌Ӏ?br /> FOR      Z套文件中的每个文件运行一个指定的命o(h)?br /> FORMAT   格式化磁盘,以便?Windows 使用?br /> FTYPE    昄或修改用于文件扩展名兌的文件类型?br /> GOTO     ?Windows 命o(h)解释E序指向批处理程?br />          中某个标明的行?br /> GRAFTABL 启用 Windows 来以囑փ模式昄
         扩展字符集?br /> HELP     提供 Windows 命o(h)的帮助信息?br /> IF       执行批处理程序中的条件性处理?br /> LABEL    创徏、更Ҏ(gu)删除盘的卷标?br /> MD       创徏目录?br /> MKDIR    创徏目录?br /> MODE     配置pȝ讑֤?br /> MORE     一ơ显CZ个结果屏q?br /> MOVE     文件从一个目录移到另一个目录?br /> PATH     昄或设|可执行文g的搜索\径?br /> PAUSE    暂停Ҏ(gu)件的处理q显C消息?br /> POPD     q原 PUSHD 保存的当前目录的上一个倹{?br /> PRINT    打印文本文g?br /> PROMPT   更改 Windows 命o(h)提示W?br /> PUSHD    保存当前目录Q然后对其进行更攏V?br /> RD       删除目录?br /> RECOVER  从有问题的磁盘恢复可M息?br /> REM      记录Ҏ(gu)件或 CONFIG.SYS 中的注释?br /> REN      重命名文件?br /> RENAME   重命名文件?br /> REPLACE  替换文g?br /> RMDIR    删除目录?br /> SET      昄、设|或删除 Windows 环境变量?br /> SETLOCAL 开始批文g中环境更改的本地化?br /> SHIFT    更换Ҏ(gu)件中可替换参数的位置?br /> SORT     对输入进行分cR?br /> START    启动另一个窗口来q行指定的程序或命o(h)?br /> SUBST    \径跟一个驱动器号关联?br /> TIME     昄或设|系l时间?br /> TITLE    讄 CMD.EXE ?x)话的窗口标题?br /> TREE     以图形模式显C驱动器或\径的目录l构?br /> TYPE     昄文本文g的内宏V?br /> VER      昄 Windows 版本?br /> VERIFY   告诉 Windows 是否验证文g是否已正?br />          写入盘?br /> VOL      昄盘h和序列号?br /> XCOPY    复制文g和目录树(wi)?/span>

sunny spring 2008-12-01 15:58 发表评论
]]>
quartz 详解http://www.tkk7.com/sunwch/archive/2008/11/21/quartz.htmlsunny springsunny springFri, 21 Nov 2008 06:38:00 GMThttp://www.tkk7.com/sunwch/archive/2008/11/21/quartz.htmlhttp://www.tkk7.com/sunwch/comments/241853.htmlhttp://www.tkk7.com/sunwch/archive/2008/11/21/quartz.html#Feedback2http://www.tkk7.com/sunwch/comments/commentRss/241853.htmlhttp://www.tkk7.com/sunwch/services/trackbacks/241853.html最q在开发的q程?l常要用系l自动清零的操作,比如?pȝ在给定的旉跟客户发送电(sh)子邮?在指定的旉D内执行某些操作{等,如果我们只是人工L作的话不但步骤非常的ȝ(ch)而且觉得q是一个工作量非常大的d,有了(jin)quartz框架以后我们所有的d多可以交l它d,E序员唯一要做的只是编写代码ƈ配置一下程序就O(jin)K?q样大大提高?jin)开发速度和工作效?配置步骤如下:
1、编写quartz.properties文g:代码如下:
#============================================================================
# Configure Main Scheduler Properties 
#============================================================================
org.quartz.scheduler.instanceName = QuartzScheduler
org.quartz.scheduler.instanceId = AUTO
#org.quartz.scheduler.rmi.export = false
#org.quartz.scheduler.rmi.proxy = false
#============================================================================
# Configure ThreadPool 
#============================================================================
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 4
org.quartz.threadPool.threadPriority = 5
#============================================================================
# Configure Plugins
#============================================================================
#org.quartz.plugin.triggHistory.class = org.quartz.plugins.history.LoggingJobHistoryPlugin
org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin
org.quartz.plugin.jobInitializer.fileName = /scheduler/quartz_job.xml
org.quartz.plugin.jobInitializer.overWriteExistingJobs = false
org.quartz.plugin.jobInitializer.failOnFileNotFound = true
org.quartz.plugin.jobInitializer.scanInterval = 10
org.quartz.plugin.shutdownhook.class = org.quartz.plugins.management.ShutdownHookPlugin
org.quartz.plugin.shutdownhook.cleanShutdown = true
#org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
2、编写quartz_job.xml
<?xml version='1.0' encoding='utf-8'?>
<quartz>
<job>
   <job-detail>
     <name>test</name>
     <group>DEFAULT</group>
     <description>testJobhere</description>
     <job-class>scheduler.TestJob</job-class>
     <job-data-map allows-transient-data="true">
      <entry>
       <key>name</key>
       <value>test</value>
      </entry>
    </job-data-map>
  </job-detail>
   <trigger>
              <cron>
                   <name>testCron</name>
                   <group>DEFAULT</group>
                   <job-name>test</job-name>
                  <job-group>DEFALUT</job-group>
                  <!--x/?  x表示间断启动旉  ?表示执行间隔旉  13启动旉-->
                  <cron-expression>0 1/2 23 * * ?</cron-expression>
                  <!--每月1?Ҏ(gu)?br />                    <cron-expression>0 1 0 1 1-12 ?</cron-expression>
                   -->
              </cron>
        </trigger>
</job>
3、编写java代码q行试:
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class ZeroCount implements Job{
    public void execute(JobExecutionContext context) throws JobExecutionException
 {
    String name = context.getJobDetail().getJobDataMap().getString("name");
System.out.println(name);

}
}
Z以下l果表示配置成功:
test
4、此步骤是最后一步也是最重要的一?只要加入如下代码的到/WEB-INF/web.xml文g中在指定的时间内׃(x)执行pȝ调度.
<servlet>
    <servlet-name>QuartzInitializer</servlet-name>
    <servlet-class>org.quartz.ee.servlet.QuartzInitializerServlet</servlet-class>
    <init-param>
     <param-name>config-file</param-name>
     <param-value>/quartz.properties</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    <init-param>
     <param-name>shutdown-on-unload</param-name>
     <param-value>true</param-value>
    </init-param>
    <init-param>
     <param-name>start-scheduler-on-load</param-name>
     <param-value>true</param-value>
    </init-param>
</servlet>

参考网?http://www.iocblog.net/project/quartz.html


sunny spring 2008-11-21 14:38 发表评论
]]>
struts1.0问题http://www.tkk7.com/sunwch/archive/2008/11/19/241419.htmlsunny springsunny springWed, 19 Nov 2008 08:28:00 GMThttp://www.tkk7.com/sunwch/archive/2008/11/19/241419.htmlhttp://www.tkk7.com/sunwch/comments/241419.htmlhttp://www.tkk7.com/sunwch/archive/2008/11/19/241419.html#Feedback0http://www.tkk7.com/sunwch/comments/commentRss/241419.htmlhttp://www.tkk7.com/sunwch/services/trackbacks/241419.html16:14:10.437] {http--8888-7} java.lang.IllegalArgumentException: Resources cannot be null.
[16:14:10.437] {http--8888-7}  at org.apache.commons.validator.Validator.<init>(Validator.java:188)
[16:14:10.437] {http--8888-7}  at org.apache.struts.validator.Resources.initValidator(Resources.java:475)
[16:14:10.437] {http--8888-7}  at org.apache.struts.validator.ValidatorForm.validate(ValidatorForm.java:104)
[16:14:10.437] {http--8888-7}  at org.apache.struts.action.RequestProcessor.processValidate(RequestProcessor.java:928)
[16:14:10.437] {http--8888-7}  at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:204)
[16:14:10.437] {http--8888-7}  at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
[16:14:10.437] {http--8888-7}  at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
[16:14:10.437] {http--8888-7}  at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
[16:14:10.437] {http--8888-7}  at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
[16:14:10.437] {http--8888-7}  at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:103)
[16:14:10.437] {http--8888-7}  at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:187)
[16:14:10.437] {http--8888-7}  at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:266)
[16:14:10.437] {http--8888-7}  at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:270)
[16:14:10.437] {http--8888-7}  at com.caucho.server.port.TcpConnection.run(TcpConnection.java:678)
[16:14:10.437] {http--8888-7}  at com.caucho.util.ThreadPool$Item.runTasks(ThreadPool.java:721)
[16:14:10.437] {http--8888-7}  at com.caucho.util.ThreadPool$Item.run(ThreadPool.java:643)
[16:14:10.437] {http--8888-7}  at java.lang.Thread.run(Thread.java:619)
以上错误是因为struts-config.xml文g?lt;form-beans>中form的\径不正确所?


sunny spring 2008-11-19 16:28 发表评论
]]>
CSS 全解http://www.tkk7.com/sunwch/archive/2008/06/30/211621.htmlsunny springsunny springMon, 30 Jun 2008 03:22:00 GMThttp://www.tkk7.com/sunwch/archive/2008/06/30/211621.htmlhttp://www.tkk7.com/sunwch/comments/211621.htmlhttp://www.tkk7.com/sunwch/archive/2008/06/30/211621.html#Feedback0http://www.tkk7.com/sunwch/comments/commentRss/211621.htmlhttp://www.tkk7.com/sunwch/services/trackbacks/211621.htmlCSS在英文中有如下几U常见的~写Q?br />
1QCascading Style Sheets 层叠样式?/strong>

2QContent Scrambling System DVD?sh)?jing)的加密系l?/strong>

3QCast Semi-Steel 半铸? 钢性铸?/strong>

4QCollege Scholarship Service 大学奖学金处



其中在网l上最常见的是Cascading Style SheetsQ层叠样式表Q?br />
感性体验CSS


什么是CSS呢?你可能急迫的想知道{案。但是空泛的文字描述意义不大Q让我们先来一Ҏ(gu)性体验吧。看看这个没有添加CSS的HTML文gQhttp://www.csszengarden.com/zengarden-sample.html
是一个普普通通的|页。然而通过l这个文件添加的CSS规则Q我们可以得到十分美观的|页Qhttp://www.csszengarden.com/

q还不是全部Q不改动HTMLQ只是通过d不同的CSS规则Q我们就可以得到各种不同样式的网:(x)
http://www.csszengarden.com/?cssfile=/208/208.css&page=0
好了(jin)Q下面我们再来回{什么是CSSq个问题?br />
什么是Cascading Style SheetsQ层叠样式表Q?br />
* CSS是Cascading Style Sheets(层叠样式?的简U?
* CSS语言是一U标记语a,它不需要编?可以直接由浏览器执行(属于览器解释型语言).
* 在标准网设计中CSS负责|页内容(XHTML)的表?
* CSS文g也可以说是一个文本文?它包含了(jin)一些CSS标记,CSS文g必须使用css为文件名后缀.
* 可以通过单的更改CSS文g,改变|页的整体表现Ş?可以减少我们的工作量,所以她是每一个网设计h员的必修?
* CSS是由W3C的CSS工作l生和l护?
如何样式表加入到网?/span>
可以用以下三U方式将样式表加入?zhn)的网c(din)而最接近目标的样式定义优先权高。高优先权样式将l承低优先权样式的未重叠定义但覆盖重叠的定义。例外请参阅 !important 声明?

铑օ外部样式表文?(Linking to a Style Sheet)
你可以先建立外部样式表文Ӟ.cssQ,然后使用HTML的link对象。示例如下:(x)
<head>
<title>文标题</title>
<link rel=stylesheet type="text/css">
</head>
而在XML中,你应该如下例所C在声明Z加入Q?
<? xml-stylesheet type="text/css" ?>

定义内部样式块对?(Embedding a Style Block)
你可以在你的HTML文档?lt;HTML>?lt;BODY>标记之间插入一?lt;STYLE>...</STYLE>块对象?定义方式请参阅样式表语法。示例如下:(x)
<html>
<head>
<title>文标题</title>
<style type="text/css">
<!--
body {font: 10pt "Arial"}
h1 {font: 15pt/17pt "Arial"; font-weight: bold; color: maroon}
h2 {font: 13pt/15pt "Arial"; font-weight: bold; color: blue}
p {font: 10pt/12pt "Arial"; color: black}
-->
</style>
</head>
<body>
h意,q里style对象的type属性设|ؓ(f)"text/css"Q是允许不支持这cd的浏览器忽略样式表单?

内联定义 (Inline Styles)
内联定义x在对象的标记内用对象的style属性定义适用其的样式表属性。示例如下:(x)
q一行被增加?jin)左右的外补?


Cascading Style SheetsQ层叠样式表Q的历史
?990q代初HTML被发明开始样式表׃各种形式出现?jin),不同的浏览器l合?jin)它们各自的样式语言Q读者可以用这些样式语a来调节网늚昄方式。一开始样式表是给读者用的,最初的HTML版本只含有很的昄属性,读者来军_|页应该怎样被显C?
但随着HTML的成长,Z(jin)满设计师的要求QHTML获得?jin)很多显C功能。随着q些功能的增加外来定义样式的语言来没有意义了(jin)?
1994q哈?#183;利提Z(jin)CSS的最初徏议。伯?#183;波斯QBert BosQ当时正在设计一个叫做Argo的浏览器Q他们决定一起合作设计CSS?
当时已经有过一些样式表语言的徏议了(jin)Q但CSS是第一个含?#8220;层叠”的主意的。在CSS中,一个文件的样式可以从其它的样式表中l承下来。读者在有些地方可以使用他自己更喜欢的样式,在其他地方则l承Q或“层叠”作者的样式。这U层叠的方式使作者和读者都可以灉|地加入自q设计Q؜合各人的爱好?
哈坤?994q在芝加哥的一ơ会(x)议上W一ơ展CZ(jin)CSS的徏议,1995q他与L斯一起再ơ展C个徏议。当时W3C刚刚建立QW(xu)3C对CSS的发展很感兴,它ؓ(f)此组l了(jin)一ơ讨Z(x)。哈坤、L斯和其他一些hQ比如微软的托马?#183;雷尔登)(j)是这个项目的主要技术负责h?996q底QCSS已经完成?996q?2月CSS要求的第一版本被出版?
1997q初QW(xu)3C内组l了(jin)专门CSS的工作组Q其负责人是克里?#183;里雷。这个工作组开始讨论第一版中没有涉及(qing)到的问题Q其l果?998q?月出版的W二版要求。到2004qؓ(f)止,W三版还未出版?br />
* 1996qW3C正式推出?jin)CSS1.
* 1998qW3C正式推出?jin)CSS2.
* CSS2.1是W3C现在正在推荐使用?
* CSS3现在q处于开发中.

|页设计中常用的CSS属?/strong>

文字或元素的颜色 color
背景颜色 background-color
背景囑փ background-image
字体 font-family
文字大小 font-size
列表样式 list
鼠标样式 cursor
Ҏ(gu)样式 border
内补?padding
外边?margin
{?..


CSS的语?
  CSS的定义是׃个部分构?
  选择W?selector)Q属?properties)和属性的取?value)?br />   语法: selector {property: value} (选择W?{属?值})
  说明:
  ·选择W是可以是多UŞ式,一般是你要定义样式的HTML标记Q例如BODY、P、TABLE……Q你可以通过此方法定义它的属性和|属性和D用冒号隔开:
  例子:body {color: black}Q此例的效果是ə面中的文字为黑艌Ӏ?br />   ·如果属性的值是多个单词l成Q必dg加引P比如字体的名U经常是几个单词的组?
  例子:p {font-family: "sans serif"} (定义D落字体为sans serif)
  · 如果需要对一个选择W指定多个属性时Q我们用分号将所有的属性和值分开:
  例子:p {text-align: center; color: red} (D落居中排列;q且D落中的文字为红?
  2. 选择W组
  你可以把相同属性和值的选择W组合v来书写,用逗号选择W分开Q这样可以减样式重复定?
  h1, h2, h3, h4, h5, h6 { color: green } (q个l里包括所有的标题元素Q每个标题元素的文字都ؓ(f)l色)
  p, table{ font-size: 9pt } (D落和表格里的文字尺ؓ(f)9号字)
  效果完全{效?
  p { font-size: 9pt }
  table { font-size: 9pt }
  3. c选择W?br />   用类选择W你能够把相同的元素分类定义不同的样式,定义c选择W时Q在自定cȝ名称前面加一个点受假如你惌两个不同的段落,一个段落向叛_齐,一个段落居中,你可以先定义两个c?
  p.right {text-align: right}
  p.center {text-align: center}
  然后用不在不同的D落里,只要在HTML标记里加入你定义的class参数:
  q个D落向右寚w?br />   q个D落是居中排列的
  c选择W还有一U用法,在选择W中省略HTML标记名,q样可以把几个不同的元素定义成相同的样式:
  .center {text-align: center} (定义.center的类选择Wؓ(f)文字居中排列)
  q样的类可以被应用到M元素上。下面我们h1元素(标题1)和p元素(D落)都归?#8220;center”c,q两个元素的样式都跟随“.center”q个c选择W?
  <h1 class="center">q个标题是居中排列的</h1>
  q个D落也是居中排列?br />
  注意:q种省略HTML标记的类选择W是我们l后最常用的CSSҎ(gu)Q用这U方法,我们可以很方便的在Q意元素上套用预先定义好的cL式?br />   4. ID选择W?br />   在HTML面中ID参数指定?jin)某个单一元素QID选择W是用来对这个单一元素定义单独的样式?br />   ID选择W的应用和类选择W类|只要把CLASS换成ID卛_。将上例中类用ID替代:
  q个D落向右寚w
  定义ID选择W要在ID名称前加上一?#8220;#”受和c选择W相同,定义ID选择W的属性也有两U方法。下面这个例子,ID属性将匚w所有id="intro"的元?
  #intro
  {
  font-size:110%;
  font-weight:bold;
  color:#0000ff;
  background-color:transparent
  } (字体寸为默认尺寸的110%;_体;蓝色;背景颜色透明)
  下面q个例子QID属性只匚wid="intro"的段落元?
  p#intro
  {
  font-size:110%;
  font-weight:bold;
  color:#0000ff;
  background-color:transparent
  }
  注意:ID选择W局限性很大,只能单独定义某个元素的样式,一般只在特D情况下使用?br />   5. 包含选择W?br />   可以单独Ҏ(gu)U元素包含关pd义的样式表,元素1里包含元?Q这U方式只对在元素1里的元素2定义Q对单独的元?或元?无定义,例如:
  table a
  {
  font-size: 12px
  }
  在表格内的链接改变了(jin)样式Q文字大ؓ(f)12象素Q而表格外的链接的文字仍ؓ(f)默认大小?br />   6. 样式表的层叠?br />   层叠性就是承性,样式表的l承规则是外部的元素样式?x)保留下来承给q个元素所包含的其他元素。事实上Q所有在元素中嵌套的元素都会(x)l承外层元素指定的属性|有时?x)把很多层嵌套的样式叠加在一P除非另外更改。例如在DIV标记中嵌套P标记:
  div { color: red; font-size:9pt}
  ……
  q个D落的文字ؓ(f)U色9号字
  (P元素里的内容?x)承DIV定义的属?
  注意:有些情况下内部选择W不l承周围选择W的|但理Zq些都是Ҏ(gu)的。例如,上边界属性值是不会(x)l承的,直觉上,一个段落不?x)同文BODY一L(fng)上边界倹{?br />   另外Q当样式表扉K到冲H时QL以最后定义的样式为准。如果上例中定义?jin)P的颜?
  div { color: red; font-size:9pt}
  p {color: blue}
  ……
  q个D落的文字ؓ(f)蓝色9号字
  我们可以看到D落里的文字大小?号字是承div属性的Q而color属性则依照最后定义的?br />   不同的选择W定义相同的元素Ӟ要考虑C同的选择W之间的优先U。ID选择W,c选择W和HTML标记选择W,因ؓ(f)ID选择W是最后加上元素上的,所以优先最高,其次是类选择W。如果想越q三者之间的关系Q可以用!important提升样式表的优先权,例如:
  p { color: #FF0000!important }
  .blue { color: #0000FF}
  #id1 { color: #FFFF00}
  我们同时寚w面中的一个段落加上这三种样式Q它最后会(x)依照?importantx的HTML标记选择W样式ؓ(f)U色文字。如果去?importantQ则依照优先权最高的ID选择Wؓ(f)黄色文字?br />   
7. 注释:/* ... */
  你可以在CSS中插入注释来说明你代码的意思,注释有利于你或别Z后编辑和更改代码时理解代码的含义。在览器中Q注释是不显C的。CSS注释?/*" 开_(d)?*/" l尾Q如?
  /* 定义D落样式?*/
  p
  {
  text-align: center; /* 文本居中排列 */
  color: black; /* 文字为黑?*/
  font-family: arial /* 字体为arial */
  }



css可以用Q何写文本的工兯行开?如文本工?dreamweaver开?br /> css也是一U语a,q种语言要和html或者xhtml语言相结合才起作?
css单来说就是用来美化网는?用css语言来控制网늚外观
举个例子
xhtml部分:
<ul>
<li>主页</li>
<li>留言</li>
<li>论坛</li>
</ul>
此时在页面上的表辑Ş式是一个竖向列?q样不够观,
可以css来改善这个列表ؓ(f)一个横向导航条和超链接
css部分:
ul{list-style:none;margin:0px;padding:0px}
ul li{margin:0px;padding:0px;float:left;}
ul li a{display:block;width:100px;height:30px;background:#efefef;color:#333;text-decoration:none;text-align:center}
ul li a:hover{background:#333;color:#fff;}
d上css?q个列表变成横向的导航条?链接是E色背?灰色字体,没有下划U?高度?0像素,宽度?00像素
当我们鼠标经q这个超U链接时?变成灰色背景,白色字体


在主制作时采用CSS技术,可以有效地对面的布局、字体、颜艌Ӏ背景和其它效果实现更加_的控制?

只要对相应的代码做一些简单的修改Q就可以改变同一面的不同部分,或者页C同的|页的外观和格式?

它的作用可以辑ֈQ?

Q?Q在几乎所有的览器上都可以用?

Q?Q以前一些非得通过囄转换实现的功能,现在只要用CSS可以轻村֮玎ͼ从而更快地下蝲面?

Q?Qə面的字体变得更漂亮Q更Ҏ(gu)~排Qə面真正赏心(j)(zhn)目?

Q?Q你可以L地控刉面的布局 ?

Q?Q你可以许多网늚风格格式同时更新Q不用再一一地更新?jin)。你可以站点上所有的|页风格都用一个CSS文gq行控制Q只要修改这个CSS文g中相应的行,那么整个站点的所有页面都?x)随之发生变动?

想一惻I没有使用CSS前我们是如何控制字体的颜色和大小以及(qing)所使用的字体的Q我们一般用HTML标签来实玎ͼ代码非常?ch)琐?br />
很难惌Q如果在一个页面里需要频J地更替字体的颜色大,最l生成的HTML代码的长度一定臃肿不堪?

说实话,CSS是Z(jin)化这L(fng)工作诞生的,当然其功能决非这么简单?

CSS是通过寚w面结构的风格控制的思想Q控制整个页面的风格的?

式样单放在页面中Q通过览器的解释执行Q是完全的文本,M懂得HTML的h都可以掌握,非常的容易。甚臛_一些非常老的览器,也不?x)生页面؜q现象?br />
CSS的一大优Ҏ(gu)它的囄传输速度比较完全的HTML|页要快一炏V?br />
CSS:
Chinese,Surface-to-Surface
中国面对面导?UEQIQN
CSSh两面性。就像它在格式化文本、导航栏、图片以?qing)其他小的|页斚w很棒一P当你准备好布局完整的网|Q它真正可怕的一面也展现出来?jin)?br /> CSS布局有两U风格——绝对定位和动。绝对定位让你把一个元素以像素U的_性定位在|页的Q何位|——或者理Z是这栗这U整体控制o(h)人兴奋,如你将在下一章中所看到的,但是实际上很隑֮现。这是大量|页使用Z动的布局的原因,也是本章的主题?br /> CSS布局如何q行
How CSS Layout Works
如在W?章中讨论q的QHTML的局限性迫使设计师们去开发更聪明的方式来使他们的|页更美观。过L常用的工h[table]标签Q它本是用来创徏?sh)子数据表——比如由数据行和列组成的信息昄表。但是设计师们却用HTML的表格来创徏一U用来组l网内容的脚手Ӟ见图11-1Q。可是由于[table]标签本来不是要用于布局的,因此设计师们不得不经总各种不寻常的方式来用这个标{䏀—比如把一个表格放在另一个表格的单元里面——仅仅ؓ(f)?jin)得C们想要的效果。这U方法的工作量很大,增加?jin)大量额外的HTML代码Qƈ使得后面要修改设计很难。但是在CSS出现之前Q那是|页设计师们所拥有的一切办法?br /> 如果你已l习(fn)惯于使用[table]标签Q那么当你开始用CSSq行布局Ӟ必须发展一U新的思维。首先,忘掉行和列(q用表格时的一U重要的观念Q。没?br /> 列跨度、行跨度和格子状的表格结构在CSS中是找不到的。然而,你可以把一个标{ֽ成一个表格单元。有?jin)表格单元,标签是把你要的内容定位在网区域的一个逻辑位置。此外,如你所见,CSS设计l常把一个div嵌套在另一个div里面Q就像你把表格嵌套在表格里面来获得特定的效果一样——但是,q运的是QCSSҎ(gu)只用得多的HTML代码?br /> 强大的标{?br /> The Mighty   Tag
无论使用表格q是CSSQ网布局都是把大块的内容放进|页的不同区域里面。有?jin)CSSQ最常用来组l内容的元素是标签。如W?8|qͼ标签是没有固有格式化属性的一个HTML元素Q除?jin)浏览器把这个标{ֽ成前后有换行的块之外Q;反之Q它被用来标识元素的一个逻辑l合或者网中的一个分区?br /> 你将代表性地把一大块属于一L(fng)HTML包围在一个里面。图11-1中包含logo和导航栏的元素占据了(jin)|页剙Q因此用一个标{把它们包围h很有意义。至,你要l网늚所有主要区域包含标{,例如横幅、主要内容区域、工h、页脚,{等。但是它也可能把一个或者更多的div包在一个里面。一U最常用的方法就是把<body>标签里面的HTML包在一个里面。然后可以通过把CSS应用到包装,讄基础的页面属性。你可以l网内容设定一个整体的宽度Q设|左边距和右边距Q或者把所有网内容在屏幕的中间居中。(在第313늚教程中,你有Z(x)用到一个包装。)(j)
一旦已l把标签攑֜?jin)适当的位|上Q再l每个标{添加一个类或者IDQ变成你分别Ҏ(gu)个定义样式的句柄。对于只出现一ơ和形成|页的基本构建块的网部位,设计师们通常使用一个ID。一个网|q区域的?br /> {h可能像这P(x)。你可以对一个ID每页只用一ơ,因此当有一个多ơ显C的元素Ӟq一个类代替。如果你有几个定位照片和照片说明的divӞ可以创徏一个样式像q样Q?br /> 有了(jin)cMq些的样式,可以定位各U各L(fng)|页元素?jin)。利用CSS的float属性,你可以定位不同的内容块给一张网늚左边或者右边(或者一个包含块比如另一个的左边或者右边)(j)?br /> 至理名言
更多q更好
虽然div对于CSS布局很重要,但也别对你的|页滥用div。一个常见的陷阱是相信你必须把一张网中的一切都包围在一个标{N面。假设你的主D栏是一个链接的无序列表
Q就像第218中所qͼ(j)。由于它是一个重要的元素Q你可能?x)试探用一个来把它围v来:(x)<ul>...</ul>
。但是当<ul>标签唾手可得Ӟ没有必要去d一个了(jin)。只?lt;ul>包含主要的导航栏链接Q就只需dI(yng)D样式l这个标{:(x)<ul id= "mainNav">。多余的只是一些没有必要的代码?br />


sunny spring 2008-06-30 11:22 发表评论
]]>
jspSmartUpload上传下蝲全攻?/title><link>http://www.tkk7.com/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.tkk7.com/sunwch/archive/2008/06/30/211620.html</guid><wfw:comment>http://www.tkk7.com/sunwch/comments/211620.html</wfw:comment><comments>http://www.tkk7.com/sunwch/archive/2008/06/30/211620.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/sunwch/comments/commentRss/211620.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/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文g中。该lg有以下几个特点:(x) </span></span></span><span style="color: #444444"><br /> <br /> </span><span style="color: #444444"><span style="font-size: 10pt">1、用简单。在JSP文g中仅仅书写三五行JAVA代码可以搞定文件的上传或下载,方便?</span></span><span style="color: #444444"><br /> <br /> </span><span style="color: #444444"><span style="font-size: 10pt">2、能全程控制上传。利用jspSmartUploadlg提供的对象及(qing)其操作方法,可以获得全部上传文g的信息(包括文g名,大小Q类型,扩展名,文g数据{)(j)Q方便存取?</span></span><span style="color: #444444"><br /> <br /> </span><span style="color: #444444"><span style="font-size: 10pt">3、能对上传的文g在大、类型等斚w做出限制。如此可以o(h)掉不W合要求的文件?</span></span><span style="color: #444444"><br /> <br /> </span><span style="color: #444444"><span style="font-size: 10pt">4、下载灵zR仅写两行代码,p把Web服务器变成文件服务器。不文件在Web服务器的目录下或在其它Q何目录下Q都可以利用jspSmartUploadq行下蝲?</span></span><span style="color: #444444"><br /> <br /> </span><span style="color: #444444"><span style="font-size: 10pt">5、能文件上传到数据库中Q也能将数据库中的数据下载下来。这U功能针对的是MYSQL数据库,因ؓ(f)不具有通用性,所以本文不准备举例介绍q种用法?</span></span><span style="color: #444444"><br /> <br /> </span><span style="color: #444444"><span style="font-size: 10pt">  <span>jspSmartUploadlg可以?a >http://www.edufans.com/html/JSP/JSP_down/2006/200610054829.html</a>|站上自׃载,压羃包的名字是jspSmartUpload.zip。下载后Q用WinZip或WinRAR其解压到Tomcat的webapps目录下(本文以Tomcat服务器ؓ(f)例进行介l)(j)。解压后Q将webapps/jspsmartupload目录下的子目录Web-inf名字改ؓ(f)全大写的WEB-INFQ这样一改jspSmartUploadcL能用。因为TomcatҎ(gu)件名大小写敏感,它要求Web应用E序相关的类所在目录ؓ(f)WEB-INFQ且必须是大写。接着重新启动TomcatQ这样就可以在JSP文g中用jspSmartUploadlg?jin)?</span></span></span><span style="color: #444444"><br /> <br /> </span><span style="color: #444444"><span style="font-size: 10pt">  注意Q按上述Ҏ(gu)安装后,只有<span>webapps/jspsmartupload目录下的E序可以使用jspSmartUploadlgQ如果想让Tomcat服务器的所有Web应用E序都能用它Q必d如下工作Q?</span></span></span><span style="color: #444444"><br /> <br /> </span><span style="color: #444444"><span style="font-size: 10pt">1Q进入命令行状态,目录切换到Tomcat的webapps/jspsmartupload/WEB-INF目录下?</span></span><span style="color: #444444"><br /> <br /> </span><span style="color: #444444"><span style="font-size: 10pt">2Q运行JAR打包命o(h)Qjar cvf jspSmartUpload.jar com </span></span><span style="color: #444444"><br /> <br /> </span><span style="color: #444444"><span style="font-size: 10pt">Q也可以打开资源理器,切换到当前目录,?span>WinZipcom目录下的所有文件压~成jspSmartUpload.zipQ然后将jspSmartUpload.zip换名为jspSmartUpload.jar文g卛_。)(j) </span></span></span><span style="color: #444444"><br /> <br /> </span><span style="color: #444444"><span style="font-size: 10pt">3Q将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> Filec?/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">  q个cd装了(jin)一个上传文件的所有信息。通过它,可以得到上传文g的文件名、文件大、扩展名、文件数据等信息?</span></span><span style="color: #444444"><br /> <br /> </span><span style="color: #444444"><span style="font-size: 10pt">  <span>FilecM要提供以下方法:(x) </span></span></span><span style="color: #444444"><br /> <br /> </span><span style="color: #444444"><span style="font-size: 10pt">1、saveAs作用Q将文g换名另存?</span></span><span style="color: #444444"><br /> <br /> </span><span style="color: #444444"><span style="font-size: 10pt">原型Q?</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">其中Q?span>destFilePathName是另存的文g名,optionSaveAs是另存的选项Q该选项有三个|分别是SAVEAS_PHYSICAL,SAVEAS_VIRTUALQSAVEAS_AUTO。SAVEAS_PHYSICAL表明以操作系l的根目录ؓ(f)文g根目录另存文ӞSAVEAS_VIRTUAL表明以Web应用E序的根目录为文件根目录另存文gQSAVEAS_AUTO则表Clg军_Q当Web应用E序的根目录存在另存文g的目录时Q它?x)选择SAVEAS_VIRTUALQ否则会(x)选择SAVEAS_PHYSICAL?</span></span></span><span style="color: #444444"><br /> <br /> </span><span style="color: #444444"><span style="font-size: 10pt">例如Q?span>saveAs("/upload/sample.zip",SAVEAS_PHYSICAL)执行后若Web服务器安装在C盘,则另存的文g名实际是c:uploadsample.zip。而saveAs("/upload/sample.zip",SAVEAS_VIRTUAL)执行后若Web应用E序的根目录是webapps/jspsmartuploadQ则另存的文件名实际是webapps/jspsmartupload/upload/sample.zip。saveAs("/upload/sample.zip",SAVEAS_AUTO)执行时若Web应用E序根目录下存在upload目录Q则其效果同saveAs("/upload/sample.zip",SAVEAS_VIRTUAL)Q否则同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">Q对?span>WebE序的开发来_(d)最好用SAVEAS_VIRTUALQ以便移植?</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">作用Q这个方法用于判断用h否选择?jin)文Ӟ也即对应的表单项是否有倹{选择?jin)文件时Q它q回<span>false。未选文件时Q它q回true?</span></span></span><span style="color: #444444"><br /> <br /> </span><span style="color: #444444"><span style="font-size: 10pt">原型Q?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">作用Q取<span>HTML表单中对应于此上传文件的表单的名字?</span></span></span><span style="color: #444444"><br /> <br /> </span><span style="color: #444444"><span style="font-size: 10pt">原型Q?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">作用Q取文g名(不含目录信息Q?</span></span><span style="color: #444444"><br /> <br /> </span><span style="color: #444444"><span style="font-size: 10pt">原型Q?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">作用Q取文g全名Q带目录Q?</span></span><span style="color: #444444"><br /> <br /> </span><span style="color: #444444"><span style="font-size: 10pt">原型Q?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">作用Q取文g扩展名(后缀Q?</span></span><span style="color: #444444"><br /> <br /> </span><span style="color: #444444"><span style="font-size: 10pt">原型Q?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">作用Q取文g长度Q以字节计)(j) </span></span><span style="color: #444444"><br /> <br /> </span><span style="color: #444444"><span style="font-size: 10pt">原型Q?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">作用Q取文g数据中指定位Ud的一个字节,用于(g)文件等处理?</span></span><span style="color: #444444"><br /> <br /> </span><span style="color: #444444"><span style="font-size: 10pt">原型Q?span>public byte getBinaryData(int index)。其中,index表示位移Q其值在0到getSize()-1之间?</span></span></span><span style="color: #444444"><br /> <br /> </span><span style="font-size: 10pt"><strong><span style="color: #444444">?span> Filesc?/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">  q个c表C所有上传文件的集合Q通过它可以得C传文件的数目、大等信息。有以下Ҏ(gu)Q?</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">作用Q取得上传文件的数目?</span></span><span style="color: #444444"><br /> <br /> </span><span style="color: #444444"><span style="font-size: 10pt">原型Q?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">作用Q取得指定位Ud的文件对?span>FileQ这是com.jspsmart.upload.FileQ不是java.io.FileQ注意区分)(j)?</span></span></span><span style="color: #444444"><br /> <br /> </span><span style="color: #444444"><span style="font-size: 10pt">原型Q?span>public File getFile(int index)。其中,index为指定位U,其值在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">作用Q取得上传文件的总长度,可用于限制一ơ性上传的数据量大?</span></span><span style="color: #444444"><br /> <br /> </span><span style="color: #444444"><span style="font-size: 10pt">原型Q?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">作用Q将所有上传文件对象以<span>Collection的Ş式返回,以便其它应用E序引用Q浏览上传文件信息?</span></span></span><span style="color: #444444"><br /> <br /> </span><span style="color: #444444"><span style="font-size: 10pt">原型Q?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">作用Q将所有上传文件对象以<span>EnumerationQ枚举)(j)的Ş式返回,以便其它应用E序览上传文g信息?</span></span></span><span style="color: #444444"><br /> <br /> </span><span style="color: #444444"><span style="font-size: 10pt">原型Q?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> Requestc?/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">  q个cȝ功能{同?span>JSP内置的对象request。只所以提供这个类Q是因ؓ(f)对于文g上传表单Q通过request对象无法获得表单的|必须通过jspSmartUploadlg提供的Request对象来获取。该cL供如下方法:(x) </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">作用Q获取指定参C倹{当参数不存在时Q返回gؓ(f)<span>null?</span></span></span><span style="color: #444444"><br /> <br /> </span><span style="color: #444444"><span style="font-size: 10pt">原型Q?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">作用Q当一个参数可以有多个值时Q用此方法来取其倹{它q回的是一个字W串数组。当参数不存在时Q返回gؓ(f)<span>null?</span></span></span><span style="color: #444444"><br /> <br /> </span><span style="color: #444444"><span style="font-size: 10pt">原型Q?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">作用Q取?span>Request对象中所有参数的名字Q用于遍历所有参数。它q回的是一个枚丑֞的对象?</span></span></span><span style="color: #444444"><br /> <br /> </span><span style="color: #444444"><span style="font-size: 10pt">原型Q?span>public Enumeration getParameterNames() </span></span></span><span style="color: #444444"><br /> <font color="#000000"><span style="font-size: 10pt"><strong>?SmartUploadc?/strong>q个cd成上传下载工作?<br /> <br /> <strong>AQ上传与下蝲q的方法:(x)</strong> <br /> <br /> 只有一个:(x)initialize?<br /> <br /> 作用Q执行上传下载的初始化工作,必须W一个执行?<br /> <br /> 原型Q有多个Q主要用下面这个:(x) <br /> <br /> public final void initialize(javax.servlet.jsp.PageContext pageContext) <br /> <br /> 其中QpageContext为JSP面内置对象Q页面上下文Q?<br /> <br /> <strong>BQ上传文件用的Ҏ(gu)Q?/strong> <br /> <br /> 1、upload <br /> <br /> 作用Q上传文件数据。对于上传操作,W一步执行initializeҎ(gu)Q第二步p执行q个Ҏ(gu)?<br /> <br /> 原型Qpublic void upload() <br /> <br /> 2、save <br /> <br /> 作用Q将全部上传文g保存到指定目录下Qƈq回保存的文件个数?<br /> <br /> 原型Qpublic int save(String destPathName) <br /> <br /> 和public int save(String destPathName,int option) <br /> <br /> 其中QdestPathName为文件保存目录,optionZ存选项Q它有三个|分别是SAVE_PHYSICAL,SAVE_VIRTUAL和SAVE_AUTO。(同FilecȝsaveAsҎ(gu)的选项之值类|(j)SAVE_PHYSICAL指示lg文件保存到以操作系l根目录为文件根目录的目录下QSAVE_VIRTUAL指示lg文件保存到以Web应用E序根目录ؓ(f)文g根目录的目录下,而SAVE_AUTO则表C由lg自动选择?<br /> <br /> 注:(x)save(destPathName)作用{同于save(destPathName,SAVE_AUTO)?<br /> <br /> 3、getSize <br /> <br /> 作用Q取上传文g数据的总长?<br /> <br /> 原型Qpublic int getSize() <br /> <br /> 4、getFiles <br /> <br /> 作用Q取全部上传文gQ以Files对象形式q回Q可以利用Filescȝ操作Ҏ(gu)来获得上传文件的数目{信息?<br /> <br /> 原型Qpublic Files getFiles() <br /> <br /> 5、getRequest <br /> <br /> 作用Q取得Request对象Q以便由此对象获得上传表单参C倹{?<br /> <br /> 原型Qpublic Request getRequest() <br /> <br /> 6、setAllowedFilesList <br /> <br /> 作用Q设定允怸传带有指定扩展名的文Ӟ当上传过E中有文件名不允许时Q组件将抛出异常?<br /> <br /> 原型Qpublic void setAllowedFilesList(String allowedFilesList) <br /> <br /> 其中QallowedFilesList为允怸传的文g扩展名列表,各个扩展名之间以逗号分隔。如果想允许上传那些没有扩展名的文gQ可以用两个逗号表示。例如:(x)setAllowedFilesList("doc,txt,,")允怸传带doc和txt扩展名的文g以及(qing)没有扩展名的文g?<br /> <br /> 7、setDeniedFilesList <br /> <br /> 作用Q用于限制上传那些带有指定扩展名的文件。若有文件扩展名被限Ӟ则上传时lg抛出异常?<br /> <br /> 原型Qpublic void setDeniedFilesList(String deniedFilesList) <br /> <br /> 其中QdeniedFilesList为禁止上传的文g扩展名列表,各个扩展名之间以逗号分隔。如果想止上传那些没有扩展名的文gQ可以用两个逗号来表C。例如:(x)setDeniedFilesList("exe,bat,,")禁止上传带exe和bat扩展名的文g以及(qing)没有扩展名的文g?<br /> <br /> 8、setMaxFileSize <br /> <br /> 作用Q设定每个文件允怸传的最大长度?<br /> <br /> 原型Qpublic void setMaxFileSize(long maxFileSize) <br /> <br /> 其中QmaxFileSizeZؓ(f)每个文g允许上传的最大长度,当文件超出此长度Ӟ不被上传?<br /> <br /> 9、setTotalMaxFileSize <br /> <br /> 作用Q设定允怸传的文g的总长度,用于限制一ơ性上传的数据量大?<br /> <br /> 原型Qpublic void setTotalMaxFileSize(long totalMaxFileSize) <br /> <br /> 其中QtotalMaxFileSize为允怸传的文g的总长度?<br /> <br /> <strong>CQ下载文件常用的Ҏ(gu)</strong> <br /> <br /> 1、setContentDisposition <br /> <br /> 作用Q将数据q加到MIME文g头的CONTENT-DISPOSITION域。jspSmartUploadlg?x)在q回下蝲的信息时自动填写MIME文g头的CONTENT-DISPOSITION域,如果用户需要添加额外信息,L(fng)此方法?<br /> <br /> 原型Qpublic void setContentDisposition(String contentDisposition) <br /> <br /> 其中QcontentDispositiond的数据。如果contentDisposition为nullQ则lg自动添?attachment;"Q以表明下载的文g作ؓ(f)附gQ结果是IE览器将?x)提C另存文Ӟ而不是自动打开q个文gQIE览器一般根据下载的文g扩展名决定执行什么操作,扩展名ؓ(f)doc的将用wordE序打开Q扩展名为pdf的将用acrobatE序打开Q等{)(j)?<br /> <br /> 2、downloadFile <br /> <br /> 作用Q下载文件?<br /> <br /> 原型Q共有以下三个原型可用,W一个最常用Q后两个用于Ҏ(gu)情况下的文g下蝲Q如更改内容cdQ更改另存的文g名)(j)?<br /> <br /> ?public void downloadFile(String sourceFilePathName) <br /> <br /> 其中QsourceFilePathName下蝲的文件名Q带目录的文件全名)(j) <br /> <br /> ?public void downloadFile(String sourceFilePathName,String contentType) <br /> <br /> 其中QsourceFilePathName下蝲的文件名Q带目录的文件全名)(j),contentType为内容类型(MIME格式的文件类型信息,可被览器识别)(j)?<br /> <br /> ?public void downloadFile(String sourceFilePathName,String contentType,String destFileName) <br /> <br /> 其中QsourceFilePathName下蝲的文件名Q带目录的文件全名)(j),contentType为内容类型(MIME格式的文件类型信息,可被览器识别)(j),destFileNameZ载后默认的另存文件名?<br /> <br /> <strong>三、文件上传篇</strong> <br /> <br /> <strong>?表单要求</strong> <br /> <br /> 对于上传文g的FORM表单Q有两个要求Q?<br /> <br /> 1、METHOD应用POSTQ即METHOD="POST"?<br /> <br /> 2、增加属性:(x)ENCTYPE="multipart/form-data" <br /> <br /> 下面是一个用于上传文件的FORM表单的例子:(x) <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"><FORM METHOD="POST" ENCTYPE="multipart/form-data" ACTION="/jspSmartUpload/upload.jsp"> <INPUT TYPE="FILE" NAME="MYFILE"> <INPUT TYPE="SUBMIT"> </FORM></span></pre> </td> </tr> </tbody> </table> <br /> <br /> <span style="font-size: 10pt"><strong>?上传的例?/strong> <br /> <br /> <strong>1、上传页面upload.html</strong> <br /> <br /> 本页面提供表单,让用户选择要上传的文gQ点?上传"按钮执行上传操作?<br /> <br /> 面源码如下Q?<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"><!-- 文g名:(x)upload.html ? 者:(x)U|软g制作中心(j)雨亦?zhsoft88@sohu.com) --> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>文g上传</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head> <body> <p>&nbsp;</p> <p align="center">上传文g选择</p> <FORM METHOD="POST" ACTION="jsp/do_upload.jsp" ENCTYPE="multipart/form-data"> <input type="hidden" name="TEST" value="good"> <table width="75%" border="1" align="center"> <tr> <td><div align="center">1? <input type="FILE" name="FILE1" size="30"> </div></td> </tr> <tr> <td><div align="center">2? <input type="FILE" name="FILE2" size="30"> </div></td> </tr> <tr> <td><div align="center">3? <input type="FILE" name="FILE3" size="30"> </div></td> </tr> <tr> <td><div align="center">4? <input type="FILE" name="FILE4" size="30"> </div></td> </tr> <tr> <td><div align="center"> <input type="submit" name="Submit" value="上传它!"> </div></td> </tr> </table> </FORM> </body> </html></span></pre> </td> </tr> </tbody> </table> <br /> <br /> <span style="font-size: 10pt"><strong>2、上传处理页面do_upload.jsp</strong> <br /> <br /> 本页面执行文件上传操作。页面源码中详细介绍?jin)上传方法的用法Q在此不赘述?jin)?<br /> <br /> 面源码如下Q?<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"><%-- 文g名:(x)do_upload.jsp ? 者:(x)U|软g制作中心(j)雨亦?zhsoft88@sohu.com) --%> <%@ page contentType="text/html; charset=gb2312" language="java" import="java.util.*,com.jspsmart.upload.*" errorPage="" %> <html> <head> <title>文g上传处理面</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head> <body> <% // 新徏一个SmartUpload对象 SmartUpload su = new SmartUpload(); // 上传初始? su.initialize(pageContext); // 讑֮上传限制 // 1.限制每个上传文g的最大长度? // su.setMaxFileSize(10000); // 2.限制M传数据的长度? // su.setTotalMaxFileSize(20000); // 3.讑֮允许上传的文Ӟ通过扩展名限Ӟ(j),仅允许doc,txt文g? // su.setAllowedFilesList("doc,txt"); // 4.讑֮止上传的文Ӟ通过扩展名限Ӟ(j),止上传带有exe,bat, jsp,htm,html扩展名的文g和没有扩展名的文件? // su.setDeniedFilesList("exe,bat,jsp,htm,html,,"); // 上传文g su.upload(); // 上传文件全部保存到指定目录 int count = su.save("/upload"); out.println(count+"个文件上传成功!<br>"); // 利用Request对象获取参数之? out.println("TEST="+su.getRequest().getParameter("TEST") +"<BR><BR>"); // 逐一提取上传文g信息Q同时可保存文g? for (int i=0;i<su.getFiles().getCount();i++) { com.jspsmart.upload.File file = su.getFiles().getFile(i); // 若文件不存在则l? if (file.isMissing()) continue; // 昄当前文g信息 out.println("<TABLE BORDER=1>"); out.println("<TR><TD>表单名QF(tun)ieldNameQ?lt;/TD><TD>" + file.getFieldName() + "</TD></TR>"); out.println("<TR><TD>文g长度QSizeQ?lt;/TD><TD>" + file.getSize() + "</TD></TR>"); out.println("<TR><TD>文g名(F(tun)ileNameQ?lt;/TD><TD>" + file.getFileName() + "</TD></TR>"); out.println("<TR><TD>文g扩展名(F(tun)ileExtQ?lt;/TD><TD>" + file.getFileExt() + "</TD></TR>"); out.println("<TR><TD>文g全名QF(tun)ilePathNameQ?lt;/TD><TD>" + file.getFilePathName() + "</TD></TR>"); out.println("</TABLE><BR>"); // 文件另? // file.saveAs("/upload/" + myFile.getFileName()); // 另存CWEB应用E序的根目录为文件根目录的目录下 // file.saveAs("/upload/" + myFile.getFileName(), su.SAVE_VIRTUAL); // 另存到操作系l的根目录ؓ(f)文g根目录的目录? // file.saveAs("c:\\temp\\" + myFile.getFileName(), su.SAVE_PHYSICAL); } %> </body> </html></span></pre> </td> </tr> </tbody> </table> <br /> <br /> <span style="font-size: 10pt"><strong>四、文件下载篇</strong> <br /> <br /> <strong>1、下载链接页面download.html</strong> <br /> <br /> 面源码如下Q?<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"><!-- 文g名:(x)download.html ? 者:(x)U|软g制作中心(j)雨亦?zhsoft88@sohu.com) --> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>下蝲</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head> <body> <a href="jsp/do_download.jsp">点击下蝲</a> </body> </html></span></pre> </td> </tr> </tbody> </table> <br /> <br /> <span style="font-size: 10pt"><strong>2、下载处理页面do_download.jsp</strong> do_download.jsp展示?jin)如何利用jspSmartUploadlg来下载文Ӟ从下面的源码中就可以看到Q下载何其简单?<br /> <br /> 源码如下Q?<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"><%@ page contentType="text/html;charset=gb2312" import="com.jspsmart.upload.*" %><% // 新徏一个SmartUpload对象 SmartUpload su = new SmartUpload(); // 初始? su.initialize(pageContext); // 讑֮contentDisposition为null以禁止浏览器自动打开文gQ? //保证点击链接后是下蝲文g。若不设定,则下载的文g扩展名ؓ(f) //docӞ览器将自动用word打开它。扩展名为pdfӞ //览器将用acrobat打开? su.setContentDisposition(null); // 下蝲文g su.downloadFile("/upload/如何赚取我的W一桉.doc"); %></span></pre> </td> </tr> </tbody> </table> <br /> <br /> <ccid_code></ccid_code><span style="font-size: 10pt">注意Q执行下载的面Q在Java脚本范围外(?lt;% ... %>之外Q,不要包含HTML代码、空根{回车或换行{字W,有的话将不能正确下蝲。不信的话,可以在上q源码中%><%之间加入一个换行符Q再下蝲一下,保证出错。因为它影响?jin)返回给览器的数据,D解析出错?<br /> <br /> <strong>3、如何下载中文文?/strong> <br /> <br /> jspSmartUpload虽然能下载文Ӟ但对中文支持不。若下蝲的文件名中有汉字Q则览器在提示另存的文件名Ӟ昄的是一堆ؕ码,很扫人兴。上面的例子是q样。(q个问题也是众多下蝲lg所存在的问题,很少有h解决Q搜索不到相兌料,可叹Q)(j) <br /> <br /> Z(jin)ljspSmartUploadlg增加下蝲中文文g的支持,我对该组件进行了(jin)研究Q发现对q回l浏览器的另存文件名q行UTF-8~码后,览器便能正显CZ文名字了(jin)。这是一个o(h)人高兴的发现。于是我对jspSmartUploadlg的SmartUploadcd?jin)升U处理,增加?jin)toUtf8Stringq个Ҏ(gu)Q改动部分源码如下:(x) <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) && 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 < l) { int j = fileinputstream.read(abyte0, 0, i); k += j; m_response.getOutputStream().write(abyte0, 0, j); } fileinputstream.close(); } /** * 文件名中的汉字转ؓ(f)UTF8~码的串,以便下蝲时能正确昄另存的文件名. * U|软g制作中心(j)雨亦?003.08.01 * @param s 原文件名 * @return 重新~码后的文g? */ public static String toUtf8String(String s) { StringBuffer sb = new StringBuffer(); for (int i=0;i<s.length();i++) { char c = s.charAt(i); if (c >= 0 && c <= 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 < b.length; j++) { int k = b[j]; if (k < 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">注意源码中粗体部分,原jspSmartUploadlg对返回的文g未作M处理Q现在做?jin)编码的转换工作Q将文g名{换ؓ(f)UTF-8形式的编码Ş式。UTF-8~码对英文未作Q何处理,对中文则需要{换ؓ(f)%XX的Ş式。toUtf8StringҎ(gu)中,直接利用Java语言提供的编码{换方法获得汉字字W的UTF-8~码Q之后将其{换ؓ(f)%XX的Ş式?<br /> <br /> 源码编译后打包成jspSmartUpload.jarQ拷贝到Tomcat的shared/lib目录下(可ؓ(f)所有WEB应用E序所׃nQ,然后重启Tomcat服务器就可以正常下蝲含有中文名字的文件了(jin)。另QtoUtf8StringҎ(gu)也可用于转换含有中文的超U链接,以保证链接的有效Q因为有的WEB服务器不支持中文链接?<br /> <br /> 结QjspSmartUploadlg是应用JSPq行B/SE序开发过E中l常使用的上传下载组Ӟ它用简单,方便。现在我又ؓ(f)其加上了(jin)下蝲中文名字的文件的支持Q真个是如虎ȝQ必赢得更多开发者的青睐?<br /> </span></span> <img src ="http://www.tkk7.com/sunwch/aggbug/211620.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/sunwch/" target="_blank">sunny spring</a> 2008-06-30 11:21 <a href="http://www.tkk7.com/sunwch/archive/2008/06/30/211620.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScripthttp://www.tkk7.com/sunwch/archive/2008/06/30/211619.htmlsunny springsunny springMon, 30 Jun 2008 03:20:00 GMThttp://www.tkk7.com/sunwch/archive/2008/06/30/211619.htmlhttp://www.tkk7.com/sunwch/comments/211619.htmlhttp://www.tkk7.com/sunwch/archive/2008/06/30/211619.html#Feedback0http://www.tkk7.com/sunwch/comments/commentRss/211619.htmlhttp://www.tkk7.com/sunwch/services/trackbacks/211619.html
  • 状态栏 (statusbar)昑֊?
  • 日期物g
  • 随数的?
  • 开启新H囗
  • ??5Q?/span>

    ?q?一 ????????C??JavaScript ????????U??q??????/span>

    ?/span>q?l?/span>?面, ??????????????l?果???q?????????/span>

    ?JavaScript ????l?合?好, ????????U?????????/span>q?l?/span>?/span>

    面, ???????一 ??H??玎ͼ ?吧?Q??何! ?????呢? ????/span>

    q?一 ?q?l???法:(x)

    <a href="tpage.htm" onMouseOver="window.status='Just another stupid link...'; return true">
    ?q???????l?<a> ??{????onMouseOver ?methodQ????????

    ???jin)?q???em> window.status ????????WWW ?????????C?/span>

    一 ????的????中, ???????????' ?????分, ???" ?/span>

    ?来, ?????l???後, ????; return true?/span>

    ??jin)??????????? ????W???q?l???子! ?? 单, ?/span>

    onMouseOver ?method ??????????????hello() ???jin)???/span>

    ?????jin)????下:(x)

    <html>
    <head>
    <script language="LiveScript">
    <!-- Hiding
    function hello() {
    alert("?|?");
    }
    </script>
    </head>
    <body>
    <a href="" onMouseOver="hello()">link</a>
    </body>
    </html>


    ??6Q?/span>

    ?????????一 ??????????子??W?一 ??中, ???q??/span>

    lastModified ?????法????????q?????|?????????/span>

    ???期, ???????????????间???????l?果:(x)

    ????是:(x) 14:4
    ????为:(x) 6/3/2008

    ???下:(x)

    <script language="LiveScript">
    <!-- Hiding
    today = new Date()
    document.write("????是:(x) ",today.getHours(),":",today.getMinutes())
    document.write("<br>????为:(x) ", today.getMonth()+1,"/",today.getDate(),"/",today.getYear());
    // end hiding contents -->
    </script>
    ???中, ???需 ????一 ????敎ͼ q????today= new Date()??成?

    ??????????????话, ????????????????_(d) ??/span>

    ?????today 中?q??????是:(x) ??q?????today q??????态,

    q??Java ????E???a ????????需 ??????????????/span>

    同????em> today ?????後, ??{?????一 ?????????????/span>

    (object)??着 ?????get... ?method ???em> today q?????????期?/span>

    ???getMonth q??method 所 ?????????0~11Q?所 ????1 ??/span>

    ????1 ??12 月????????後, ??????????????/span>

    ?慧, ?如:(x) ??????????话, ?????????一 ???/span>??4

    ?所 ??????q?一 ????所 ?????能, ??一 ???????W?0?/span>

    ???????????者:(x)"喂! q???q???jin)??E?式, ??看, q??难!


    ?????外, ???????????????????下:(x)

    docStarted= new Date(96,0,13)

    ???q_(d)?元)(j)Q??着 ?月(????1Q, ??着 ?日?????????/span>

    ??????定, ?下:(x)

    docStarted = new Date(96,0,13,10,50,0)

    ???????q?月?日, ?着 ?时?分?U?最 後, ??????你,

    JavaScript q?????????态, ???????????C??????_(d)

    ??????1 / 1 / 1970 0Q?h 开 ??ms(milli seconds) ????????的,

    q?????  ???杂, ???????j)?????????????,

    ????????????jin)?/span>


    ??7Q?/span>

    ?????????l?一 ?????????敎ͼ ???JavaScript 所 ?的?/span>

    q?????????一 ??技 ??Ԍ ?q?U?技 ??????~???compiler)中,

    ????此(?c?|(j) ??????的????JavaScript 最 ?????????/span>

    ????q???method Q???????q?????话????????l?果:(x)

    q??一 ???????敎ͼ(x) 0.9836312285070992

    ???q??????法:(x)

    <html>
    <head>
    <script language="LiveScript">
    function RandomNumber() {
    today = new Date();
    num = Math.abs(Math.sin(today.getTime()));
    return num;
    }
    </script>
    </head>
    <body>
    <script language="LiveScript">
    <!--
    document.write("This is a random number:", RandomNumber());
    // -->
    </script>
    </body>
    </html>

    ????????一 ????????敎ͼ ????一 ????敎ͼ

    ??q??????q???可! ?如:(x) ????????敎ͼsinQ??q?/span>

    , ??????l????q?, l??????一 ???0 ?1 ??/span>

    ?数?????????ms ??位, ???l?????????字?/span>

    ?q?q????q?????????q?l???一 p????敎ͼ ????/span>

    ???Ӟ ????一 ơ, ???????jin)?/span>


    ??8Q?/span>

    JavaScript ?一 ????????????H??????一 ???H, q??/span>

    ???H????HTML ?Ӟ ???JavaScript ???|??|?路(Internet Q?/span>

    ?????????????开 ?一 ??H?q??????q?去, ?????/span>

    ?一 ???????看!

    ??E???下:(x)

    <html>
    <head>
    <script language="LiveScript">
    function WinOpen() {
    msg=open("","DisplayWindow","toolbar=no,directories=no,menubar=no");
    msg.document.write("<HEAD><TITLE>?|?</TITLE></HEAD>");
    msg.document.write("<CENTER><H1>???</H1><h2>q??lt;B>JavaScript</B>所 开 ??H?</h2></CENTER>");
    }
    </script>
    </head>
    <body>
    <form>
    <input type="button" name="Button1" value="Push me" onclick="WinOpen()">
    </form>
    </body>
    </html>
    q?????????????数?q?????WinOpen()??着 一 ?open

    ?method ???一 ????H?W?一 ????"")????q??????H?/span>

    ????URL ?|?????I???话, ?????一 ?I???H, q???/span>

    ?q?JavaScript ???西! ?一 ?????????q???开 ??H???字,

    ?????l????一 ??字, ?????I?白, ??em> Display Window ???/span>

    ??????息, ??意?????一 q??????所 ??????H?/span>

    ?????properties)Q?q?????的, ????????????toolbar) ?/span>

    ??scrollbar)Q?{?{, ?如:(x) ????toolbar = yesQ??????所 ???/span>

    ???H????一 ???列?????????????H??性, ?????/span>

    ???????I?白:(x)

    toolbar
    location
    directories
    status
    menubar
    scrollbars
    resizable
    copyhistory
    width=pixels
    height=pixels

    ???em> pixels ?分, ?????????| q?????????q???H??/span>

    ???开 ??H, q????U??msg ?後, ???开 ???????H???jin)?/span>

    ?????一 ????HTML ???字?哇! q??????jin)????_(d) ???/span>

    ????????form ?????l??????????????????jin)?q??/span>

    ?????????q????CGI ????喔! ?????CGI ?????jin)?br />

    1. 什麽是JavaScript?
    2. 执行 JavaScript scripts
    3. scripts 语法嵌入HTML文g之中
    4. W一个函?
    5. 输入型元?
    6. 日期功能 -- 最後修Ҏ(gu)

    JavaScript 是一U新的描q语aQ此一语言可以被箝?HTML 的文件之中?/span>

    透过 JavaScript 可以做到回应使用者的需求事?(如:(x) form 的输? 而不用Q何的|\

    来回传输资料Q所以当一位用者输入一资料时Q它不用l过传给伺服?(server)

    处理Q再传回来的q程Q而直接可以被客户?(client) 的应用程式所处理。你也可

    以想像成有一个可执行E式在你的客端上执行一P目前已有一些写好的E式?/span>

    Internet 上你可以q过ȝ看,以下有一些计器的例子,?Nescape 上?/span>


    JavaScript ?Java 很类|但到底ƈ不一P Java 是一U比 JavaScript 更复?/span>

    许多的程式语aQ?JavaScript 则是相当Ҏ(gu)?jin)解的语a。JavaScript 创作?/span>

    可以不那麽注重程式技巧,所以许?Java 的特性在 Java Script 中ƈ不支援?/span>

    如需相关的更多资讯,可以去读?Netscape 的有?/span> Netscape JavaScript 之介l?/span>


     

    如何执行 JaveScriptQ?范例 1Q?/span>

    JavaScript 如何执行呢?

    Netscape 2.0 beta 3 版以上,可以执?JavaScript 的功能了(jin)Q我们测试过臛_

    beta 3 版以上可以,其他U类?WWW 览器如:Internet Expore 3.0也有此一功能?/span>


     

    以下我们׃一些例子来告诉你如何将 JavaScript 写在 HTML 文g中,q且体会(x)

    一下新语言的特性,我们从第一个例子开始:(x)如何?JavaScript 印出一串文字至

    HTML 文g中:(x)

    <html>
    <head>
    My first JavaScript!
    </head>
    <body>
    <br>
    This is a normal HTML document.
    <br>
    <script language="LiveScript">
    document.write("q是?JavaScript 印出?")
    </script>
    <br>
    Back in HTML again.
    </body>
    </html>

    如果你用的 WWW 览器是 Netscape 2.0 beta 3 以上版本的话Q那你就可以

    看到相关的结果,而如果你的浏览器q是可以支?JavaScript 的话Q那看v

    来就?x)有一些怪怪的?jin),以上范例的结果如下?x)

    This is a normal HTML document.
    q是?JavaScript 印出?
    Back in HTML again.
    此一范例q没有太大的用处Q它只是要告诉你如何使用<script>的标{,q?/span>

    如何它|於 HTML 的文件之中而已Q这个新的标{你可以特它攑֜文g

    中的M地方?/span>


     



    范例 2Q?/span>

    接下来下一个例子所要介l的是有兛_?(function) 的用。请攑ֿ(j)Q函数ƈ

    非很难懂的东西,但它却相当有用。函数通常是在 HTML 文g?<body Q的

    部䆾被呼叫,而理所当然圎ͼ它最好事先被宣告q放?HTML 文g?<bodyQ?/span>

    的部份。好让在 <bodyQ?部分中用到函数Ӟ它已定被读取住来。另外,

    <scriptQ?标签的有xq语法剖份,你可以用注解的符号将它括hQ以免旧

    版或无法d JavaScript 的浏览器dQ而误?x)?jin)意思!

    <html>
    <head>
    <script language="LiveScript">
    function pushbutton() {
    alert("? 你好");
    }
    </script>
    </head>
    <body>
    <form>
    <input type="button" name="Button1" value="Push me" onclick="pushbutton()">
    </form>
    </body>
    </html>
    
    

    如果你是使用 Netscape 2.0 beta 3 以上的浏览器Q那以上 JavaScript 语法部䆾

    的结果如下,你可以试着按按钮看看有何结果生!

    在范?2 中,会(x)产生一个按钮,当你用滑鼠去按它的时候,应该?x)出?/span>

    一个视H上面有“? 你好”的字Ԍ如何Q不错吧Q这个结果是如何产生

    的呢Q首先,?<headQ内的函C(x)被蝲入ƈ存於内存中,接着一个新

    ?<formQ标{?<input type ="button".....Q将产生一个接钮。然後,你可?/span>

    在後面看?'onClick' 的指令,q就是告诉浏览器Q当该按钮被按时Q应?x)执?/span>

    onClick 後的函数 'pushbutton()'Q而这个函数在刚刚E式被蝲入时已安放?/span>

    记忆体中?jin)!h意,在这个函C我们用到?jin)个C西- alert ?methodQ?/span>

    ?JavaScript 事先定义好的Q它?x)以对话视窗产生内涵的讯息,q有一"定"

    (OK)的按钮?JavaScript 定义?jin)许多?methodQ你可以q至 Netscape 公司?/span>

    获取较完整的讯息。我惌?method 在不久的来?x)有镉K的一串可以够?/span>

    学的Q不q目前的 method 也已l可以做出相当多东西?jin)?/span>

    接着下个例子告诉你如何׃个输入型表格中读入用者的输入资料Q?/span>

    事实上,q也是加入个函数可以达成的?/span>


     



    范例 3Q?/span>

    <html>
    <head>
    <script language="LiveScript">
    <!--  hide script from old browsers
    function getname(str) {
    alert("哈罗! "+ str+"!");
    }
    // end hiding contents -->
    </script>
    </head>
    <body>
    Please enter your name:
    <form>
    <input type="text" name="name" onBlur="getname(this.value)" value="">
    </form>
    </body>
    </html>
    
    

    现在你可以试试结果如何:(x)

    误入你的名字:(x)

    (<!- ... -Q? 此部分即我们之前所提到的它可以避免旧版本或是不支援 JavaScript

    ?WWW 览器因Z认识q些函数而生错误。它的顺序应 该ؓ(f) <scriptQ?/span>

    先,接着为注解的开?<!-Q然後是内容Q注解尾 -Q, 最後是 </scriptQ?/span>

    另外要注意的一Ҏ(gu)Q语解尾那一行的开头双斜线 "http://" Q不可以省略Q它代表?/span>

    JavaScript 的注解,若省略了(jin)的话Q?-Q之前的字会(x)被误认ؓ(f)?JavaScript 的指令?/span>


    q个例子可以让用者输入一D|字,然後再输入完毕後l由 <inputQ标{中?/span>

    "onBlur" 事g函数侦知Q於是呼?em> Getname(Str)q个函数来加以取得输入字Ԍ

    q将它显C在对话视窗上!函数 Getname(this.value) 中的 "this.value" 是你在文

    字输入格式中所输入的倹{?/span>


     



    范例 4Q?/font>Q?/span>

    q个范例更是帅了(jin)Q我们在 HTML 文g完成了(jin)以後Q常?x)加上一行文?/span>

    最後修改的日期Q现在你可不用担?j)每ơ都要去?gu)是忘?jin)改了(jin)。你可以

    很简单的写一个如下的描述语法E式Q就可以自动的ؓ(f)你每ơ生最後修

    改的日期?jin)?x)

    <html>
    <body>
    This is a simple HTML- page.
    <br>
    Last changes:
    <script language="LiveScript">
    <!--  hide script from old browsers
    document.write(document.lastModified)
    // end hiding contents -->
    </script>
    </body>
    </html>

    以上?document.lastModified 叁数?Netscape 2.0 beta 2 版时是被写成

    documeut.lastmodified 的,然而,之後的版本就改ؓ(f) document.lastModifiedQ?/span>

    所以注意一?QJavaScript 本n是会(x)区分大小写的Q?em> lastmodified ?lastModified

    在它看来是不同的l果?/span>

    最後,在这一部分l束之前Q要提醒你一点,像范?4 Q的用法q每一?/span>

    机器都是一L(fng)Q例如:(x)PC 上跑得很正确的,在工作站上不一定会(x)有相同的

    l果Q所以,或许你仍得测一不同机器的l果才会(x)有所定论。当?dng)q一?/span>

    是因?JavaScript q正在发展的原因Q最新的讯息q是得去拜访一?/span>Netscape

    公司才知道。也怽也不用奇怪,当你隔周再来访时QJavaScript 可能又作?/span>

    相当大的改变?jin)?/span>

    在这个例子中又有新的东西?jin)。首先,让我们注意一下,在语法中的注解部?/span>



    sunny spring 2008-06-30 11:20 发表评论
    ]]>
    HTML标签详解http://www.tkk7.com/sunwch/archive/2008/06/30/211618.htmlsunny springsunny springMon, 30 Jun 2008 03:16:00 GMThttp://www.tkk7.com/sunwch/archive/2008/06/30/211618.htmlhttp://www.tkk7.com/sunwch/comments/211618.htmlhttp://www.tkk7.com/sunwch/archive/2008/06/30/211618.html#Feedback0http://www.tkk7.com/sunwch/comments/commentRss/211618.htmlhttp://www.tkk7.com/sunwch/services/trackbacks/211618.htmlHTML指o(h)详解
    l构
    QhtmlQ?
    QheadQ?
    QtitleQ标题<titleQ?
    Q?headQ?
    QbodyQ?.........文g内容..........
    Q?bodyQ?
    Q?htmlQ?
    1.文g标题
    QtitleQ?.........Q?titleQ?
    2.文g更新--QmetaQ?
    ??0U后自动更新一?
    Qmeta http-equiv="refresh" content=10Q?
    ??0U后自动q结到另一文g
    Qmeta http-equiv="refresh" content="10QURL=Ʋ连l文件之URL"Q?
    3.查询用表?-Qisindex>
    若欲讑֮查询栏位前的提示文字Q?
    Qisindex prompt="提示文字"Q?
    4.预设的基准\?-Qbase>
    Qbase href="攄文g的主ZURL"Q?
    版面
    1.标题文字 Qh#Q?.........Q?h#Q?#=1~6Qh1为最大字Qh6为最字
    2.字体变化 QfontQ?.........Q?fontQ?
    ?】字体大?Qfont size=#Q?.........Q?fontQ?#=1~7Q数字愈大字也愈?
    ?】指定字?Qfont face="字型名称"Q?.........Q?fontQ?
    ?】文字颜?Qfont color=#rrggbbQ?.........Q?fontQ?rrQ表U色QredQ色?ggQ表l色QgreenQ色?bbQ表蓝色QblueQ色?
    3.昄字?QsmallQ?.........Q?smallQ?
    4.昄大字?QbigQ?.........Q?bigQ?
    5._体?QbQ?.........Q?bQ?
    6.斜体?QiQ?.........Q?iQ?
    7.打字机字?QttQ?.........Q?ttQ?
    8.底线 QuQ?.........Q?uQ?
    9.删除U?QstrikeQ?.........Q?strikeQ?
    10.下标?QsubQ?.........Q?subQ?
    11.上标?Qsup>..........Q?supQ?
    12.文字闪烁效果 QblinkQ?.........Q?blinkQ?
    13.换行 QbrQ?
    14.分段 QpQ?
    15.文字的对齐方?Qp align="#"Q?#号可?leftQ表向左寚wQ预讑ր|(j) centerQ表向中寚w rightQ表向右寚w P.S.Qp align="#"Q之后的文字都会(x)以所讄寚w方式昄Q?直到出现另一个<p align="#"Q改变其寚w方向Q或遇到 QhrQⅱQh#Q标{时?x)自动设回预讄向左寚w?
    16.分隔U?QhrQ?
    ?】分隔线的粗l?Qhr size=Ҏ(gu)Q?
    ?】分隔线的宽?Qhr size=Ҏ(gu)或百分比Q?
    ?】分隔线寚w方向 Qhr align="#"Q?#号可?leftQ表向左寚wQ预讑ր|(j) centerQ表向中寚w rightQ表向右寚w
    ?】分隔线的颜?Qhr color=#rrggbbQ?
    ?】实?j)分隔?Qhr noshadeQ?
    17.向中寚w QcenterQ?.........Q?centerQ?
    18.依原始样式显C?QpreQ?.........Q?preQ?
    19.QbodyQ指令的属?
    ?】背景颜?-- bgcolor Qbody bgcolor=#rrggbbQ?
    ?】背景图?-- background Qbody background="囑Ş文g?Q?
    ?】设定背景图案不?x)卷?-- bgproperties Qbody bgproperties=fixedQ?
    ?】文件内Ҏ(gu)字的颜色 -- text Qbody text=#rrggbbQ?
    ?】超q结文字颜色 -- link Qbody link=#rrggbbQ?
    ?】正被选取的超q结文字颜色 -- vlink Qbody vlink=#rrggbbQ?
    ?】已q结q的连l文字颜?-- alink Qbody alink=#rrggbbQ?
    20.注解 Q?--..........--Q?1.Ҏ(gu)字元表示?
    W????
    Q?Qlt
    Q?Qgt
    & Qamp
    " Qquot
    I白 Qnbsp


    1.插入囄 Qimg src="囑Ş文g?Q?
    2.讑֮图框 -- border Qimg src="囑Ş文g? border=Ҏ(gu)Q?
    3.讑֮囑Ş大小 -- widthⅱheight Qimg src="囑Ş文g? width=宽度Ҏ(gu) height=高度Ҏ(gu)Q?
    4.讑֮囑Ş上下左右留空 -- vspaceⅱhspace Qimg src="囑Ş文g? vspace=上下留空Ҏ(gu) hspace=左右留空Ҏ(gu)Q?
    5.囑Ş附注 Qimg src="囑Ş文g? alt="说明文字"Q?
    6.预蝲囄
    Qimg src="高解析度囑Ş文g? lowsrc="低解析度囑Ş文g?Q?P.S.两个囄囑Ş大小最好一?
    7.影像地图QImage MapQ?Qimg src="囑Ş文g? usemap="#囄名称"Q?Qmap name="囄名称"

    Qarea shape=形状 coords=区域座标列表 href="q结点之URL"Q?
    Qarea shape=形状 coords=区域座标列表 href="q结点之URL"Q?
    Qarea shape=形状 coords=区域座标列表 href="q结点之URL"Q?
    Qarea shape=形状 coords=区域座标列表 href="q结点之URL"Q?Q?mapQ?
    ?】定义Ş?-- shape
    shape=rectQ矩?shape=circleQ圆?shape=polyQ多边Ş
    ?】定义区?-- coords
    a.矩ŞQ必M用四个数字,前两个数字ؓ(f)左上角标,后两个数字ؓ(f)右下角?
    例:(x)Qarea shape=rect coords=100,50,200,75 href="URL"Q?
    b.圆ŞQ必M用三个数字,前两个数字ؓ(f)圆心(j)的标,最后一个数字ؓ(f)半径长度
    例:(x)Qarea shape=circle coords=85,155,30 href="URL"Q?
    c.L囑ŞQ多边ŞQ:(x)图形之每一转折点标依序填?
    例:(x)Qarea shape=poly coords=232,70,285,70,300,90,250,90,200,78 href="URL"Q?
    表格
    1.定义表格 QtableQ?.........Q?tableQ?
    ?】设定边框的厚度 -- border
    Qtable border=Ҏ(gu)Q?
    ?】设定格U的宽度 -- cellspacing
    Qtable cellspacing=Ҏ(gu)Q?
    ?】设定资料与格线的距?-- cellpadding
    Qtable cellpadding=Ҏ(gu)Q?
    ?】调整表格宽?-- width
    Qtable width=Ҏ(gu)或百分比Q?
    ?】调整表格高?-- height
    Qtable height=Ҏ(gu)或百分比Q?
    ?】设定表D景色?-- bgcolor
    Qtable bgcolor=#rrggbbQ?
    ?】设定表D框色?-- bordercolor
    Qtable bordercolor=#rrggbb

    2.昄格线 Qtable borderQ?
    3.表格标题
    QcaptionQ?.........Q?captionQ?
    表格标题位置 -- align
    Qcaption align="#"Q?#号可?topQ表标题|于表格上方Q预讑ր|(j)
    bottomQ表标题|于表格下方
    4.定义?QtrQ?
    5.定义栏位 ?》<tdQ:(x)靠左寚w
    ?》<thQ:(x)靠中寚wq?
    ?】水q位|?-- align Qth align="#"Q?
    #号可?leftQ向左对?
    centerQ向中对?rightQ向叛_?
    ?】垂直位|?-- align Qth align="#"Q?#号可?
    topQ向上对?middleQ向中对?
    bottomQ向下对?
    ?】栏位宽?-- width
    Qth width=Ҏ(gu)或百分比Q?
    ?】栏位垂直合q?-- rowspan
    Qth rowspan=Ʋ合q栏位数Q?
    ?】栏位横向合q?-- colspan
    Qth colspan=Ʋ合q栏位数Q?
    清单
    一、目录式清单
    QdirQ?QliQ项? QliQ项? QliQ项? Q?dirQ?P.S.目录式清单每一个项目不能超q?0个字元(?0个中文字Q?
    二、选项式清?QmenuQ?QliQ项? QliQ项? QliQ项? Q?menuQ?
    三、有序号的清?QolQ?QliQ项? QliQ项? QliQ项? Q?olQ?
    ?】序号Ş?-- type Qol type=#Q或Qli type=#Q?#号可?AQ表以大写英文字母AⅱBⅱCⅱD...做ؓ(f)目~号 aQ表以小写英文字母aⅱbⅱcⅱd...做ؓ(f)目~号 IQ表以大写罗马数字做为项目编?iQ表以小写罗马数字做为项目编?1Q表以阿拉伯数字做ؓ(f)目~号Q预讑ր|(j)
    ?】v始数?-- start Qol start=Ʋ开始计数的序数Q?
    ?】指定编?-- value Qli value=Ʋ指定的序数Q?
    四、无序号的清?QulQ?QliQ项? QliQ项? QliQ项? Q?ulQ?

    ?】项目符号Ş?-- type Qul type=#Q或Qli type=#Q?#号可?discQ实?j)圆点(预设|(j) circleQ空?j)圆?squareQ实?j)方?
    ?】原始清?-- plain Qul plainQ?
    ?】清单排列方?-- warp ?》清单垂直排?Qul warp = vertQ??》清单水qx?Qul warp = horizQ?
    五、定义式清单 QdlQ?QdtQ项? QddQ项?说明 QdtQ项? QddQ项?说明 QdtQ项? QddQ项?说明 Q?dlQ?
    紧密排列 -- compact Qdl compactQ?P.S.如此可QdtQ的内容与<ddQ的内容在同一行,?以数格空白相隔而不换行Q但若<dtQ的文字过一 定的长度后,compact的作用就消失?jin)?
    表单
    一、基本架?Qform action="处理资料用的CGIE式之URL"?mailt?sh)子信箱的URL" method="get或post"Q?.......... .......... .......... Q?formQ?
    二、输入文件型表单 Qform action="URL" method="post"Q?QinputQ?QinputQ?.......... .......... Q?formQ?
    ?】栏位类?-- type Qinput type=#Q?#号可?textQ文字输?passwordQ密?checkboxQ多选钮 radioQ单选钮 submitQ接受按?resetQ重设按?imageQ图形钮 hiddenQ隐藏栏?
    ?】栏位名U?-- name Qinput name="资料栏名"Q?P.S.若type为submitⅱreset则name不必讑֮
    ?】文件上的预讑ր?-- value Qinput value="预设之字?Q?
    ?】设定栏位的宽度 -- size Qinput size=字元敎ͼ
    ?】限制最大输入字串的长度 -- maxlength Qinput maxlength=字元敎ͼ
    ?】预设checkbox或radio的初?-- checked Qinput type=checkbox checkedQ?Qinput type=radio checkedQ?

    ?】指定图形的URL -- src Qinput type=image src="图?Q?
    ?】图文对?-- align Qinput type=image align="#"Q?#号可?topQ文字对齐图片之端 middleQ文字对齐图片之中间 buttomQ文字对齐图片之底部
    三、选择式表?Qform action="URL" method="post"Q?QselectQ?QoptionQ?QoptionQ?.......... .......... Q?selectQ?Q?formQ?
    A、<selectQ的属?
    ?】栏位名U?-- name Qselect name="资料栏位?Q?
    ?】设定显C的选项?-- size Qselect size=个数Q?
    ?】多重选项 -- multiple Qselect multipleQ?
    B、<optionQ的属?
    ?】定义选项的传回?-- value Qoption value="传回?Q?
    ?】预先选取的选项 -- selected Qoption selectedQ?
    四、多列输入文字区表单 Qform action="URL" method="post"Q?QtextareaQ?.......... .......... Q?textareaQ?Q?formQ?
    ?】文字区的变数名U?-- name Qtextarea name=变数名称Q?
    ?】设定文字输入区宽度 -- cols Qtextarea cols=字元敎ͼ
    ?】设定文字输入区高度 -- rows Qtextarea rows=列数Q?
    ?】输入区讑֮预设字串 QtextareaQ?预设文字 Q?textareaQ?
    ?】自动换行与?-- wrap Qtextarea wrap=#Q?#号可?offQ表输入的文字超q栏宽时Q不?x)自动换行(预设|(j) virtualQ表输入的文字在过栏宽时会(x)自动换行
    链接
    一、连l至其他文g Qa href="URL"Q说明文字或囄Q?aQ?

    二、连l至文g内之某一处(外部q结Q?
    ?》v?
    Qa href="档名#名称"Q?.........Q?aQ?
    ?》终?Qa name="名称"Q?
    三、frame的超q结
    ?】开启新的浏览器来显Cl文?-- _blank Qa href="URL" target=_blankQ?
    ?】显Cl文件於目前的frame -- _self Qa href="URL" target=_selfQ?
    ?】以上一层的分割视窗昄q结文g -- _parent Qa href="URL" target=_parentQ?
    ?】以全视H显Cl文?-- _top Qa href="URL" target=_topQ?
    ?】以特定视窗昄q结文g --Qa href="URL" target="特定视窗名称"Q?
    FRAME
    一、分割视H指?QframesetQ?.........Q?framesetQ?
    ?】垂_(d)上下Q分?-- rows
    Qframeset rows=#Q?#号可为点敎ͼ(x)如欲分割?00,200,300三个视窗Q则
    Qframeset rows=100,200,300Q;亦可?号代表,如<frameset rows=*,500,*Q?
    癑ֈ比:(x)如<frameset rows=30%,70%Q,?Ҏ(gu)d最好ؓ(f)100%
    ?】水qI左右Q分?-- cols Qframeset cols=Ҏ(gu)或百分比Q?
    二ⅱ指定视窗内容 -- QframeQ?
    Qframeset cols=30%,70%Q?QframeQ?QframeQ?Q?framesetQ?
    ?】指定视H的文g名称 -- src Qframe src=HTML名Q?
    ?】定义视H的名称 -- name
    Qframe name=视窗名称Q?
    ?】设定文件与上下Ҏ(gu)的距?-- marginheight
    Qframe marginheight=Ҏ(gu)Q?
    ?】设定文件与左右Ҏ(gu)的距?-- marginwidth
    Qframe marginwidth=Ҏ(gu)Q?
    ?】设定分割视H卷?-- scrollin

    Qframe scrolling=#Q?#号可?yesQ固定出现卷?
    noQ不出现卯u autoQ自动判断文件大需不需要卷_(d)预设|(j)
    ?】锁住分割视H的大小 -- noresize Qframe noresizeQ?


    sunny spring 2008-06-30 11:16 发表评论
    ]]>
    java文g上传代码http://www.tkk7.com/sunwch/archive/2008/06/30/211612.htmlsunny springsunny springMon, 30 Jun 2008 03:10:00 GMThttp://www.tkk7.com/sunwch/archive/2008/06/30/211612.htmlhttp://www.tkk7.com/sunwch/comments/211612.htmlhttp://www.tkk7.com/sunwch/archive/2008/06/30/211612.html#Feedback1http://www.tkk7.com/sunwch/comments/commentRss/211612.htmlhttp://www.tkk7.com/sunwch/services/trackbacks/211612.html1 package com.khan.web;
       2
       3 import java.io.DataInputStream;
       4 import java.io.File;
       5 import java.io.FileNotFoundException;
       6 import java.io.FileOutputStream;
       7 import java.io.IOException;
       8 import javax.servlet.http.HttpServletRequest;
       9 import java.io.*;
    10 import java.util.HashMap;
    11
    12
    13 public class uploadFile   {
    14      public static final int MAX_SIZE = 1024 * 1024*100;
    15      public static final String FILE_DIR = "d:/temp/";
    16
    17      private int file_Size=0;
    18      private String file_Path = "";
    19      private HashMap hm = new HashMap();
    20
    21      public String upLoad(HttpServletRequest req) {
    22          String tmpString ="";
    23          String result = "";
    24          DataInputStream dis = null;
    25          String split_Str = "";
    26
    27          try {
    28              dis = new DataInputStream(req.getInputStream());
    29              String content = req.getContentType();
    30              if (content != null && content.indexOf("multipart/form-data") != -1) {
    31
    32                  int reqSize = req.getContentLength();
    33                  byte[] data = new byte[reqSize];
    34                  int bytesRead = 0;
    35                  int totalBytesRead = 0;
    36                  int sizeCheck = 0;
    37                  while (totalBytesRead < reqSize) {
    38                      // check for maximum file size violation
    39                      sizeCheck = totalBytesRead + dis.available();
    40                      if (sizeCheck > MAX_SIZE)
    41                          result = "文g太大不能上传";
    42
    43                      bytesRead = dis.read(data, totalBytesRead, reqSize);
    44                      totalBytesRead += bytesRead;
    45                  }
    46                  String dataString = null;
    47                  //dataString = new String(data, "ISO-8859-1");
    48                  dataString = new String(data);
    49                  tmpString = new String(data);
    50                  hm = parseAnotherParam(tmpString);
    51                
    52                  //取出字段分割W?br /> 53                  split_Str = dataString.substring(0, dataString.indexOf("\r\n"));
    54                  // 分离filepath q赋?br /> 55                  dataString = dataString.substring(dataString.indexOf("filename=\""));
    56                  String filePath = dataString.substring(0, dataString.indexOf("Content-Type:"));
    57                  if (filePath==null && filePath.equals("")) return "";
    58                  //System.out.println(filePath);
    59                  dataString = new String(dataString.getBytes(),"ISO-8859-1");
    60                  // 分离contentType q赋?br /> 61                  dataString = dataString.substring(dataString.indexOf("Content-Type:") + 1);
    62                  dataString = dataString.substring(dataString.indexOf("\n") + 1);
    63                  // 分离文g信息 获得最l想要的字节
    64 //System.out.print("|"+dataString+"|");
    65                  dataString = dataString.substring(2, dataString.indexOf(split_Str));
    66 //System.out.println("|"+dataString+"|");
    67                  dataString = dataString.substring(0, dataString.lastIndexOf("\n") - 1);
    68 //System.out.print("|"+dataString+"|");
    69                  if (writeFile(dataString.getBytes("ISO-8859-1"), FILE_DIR + getFileName(filePath))) {
    70                      this.file_Size = dataString.getBytes("ISO-8859-1").length;
    71                      this.file_Path = FILE_DIR + getFileName(filePath);
    72                      result = "文g上传完毕";
    73                  } else {
    74                      result = "文g上传p|";
    75                  }
    76              } else {
    77                  result = "content 必须?multipart/form-data";
    78              }
    79          } catch (UnsupportedEncodingException ex4) {
    80              result = "getBytes p| UnsupportedEncodingException错误";
    81          } catch (NullPointerException e) {
    82              result = "getBytes p| NullPointerException错误";
    83          } catch (IOException ex1) {
    84              result = "IOException 错误 ";
    85          }
    86
    87          return result;
    88      }
    89
    90      public String getFilePath(){
    91          return this.file_Path;
    92      }
    93
    94      public int getFileSize(){
    95          return this.file_Size;
    96      }
    97
    98      public boolean writeFile(byte[] data, String path) {
    99          File f = null;
    100          FileOutputStream fos = null;
    101          try {
    102              f = new File(path);
    103              f.createNewFile();
    104              fos = new FileOutputStream(f);
    105              fos.write(data, 0, data.length);
    106          } catch (FileNotFoundException e) {
    107              return false;
    108          } catch (IOException e) {
    109              return false;
    110          } finally {
    111              try {
    112                  fos.close();
    113              } catch (IOException e) {
    114                  return false;
    115              }
    116          }
    117          return true;
    118      }
    119
    120      public String getFileName(String arg) {
    121          String path = "";
    122          if (arg.indexOf("\"") > -1)
    123              path = arg.substring(arg.indexOf("\"") + 1, arg.lastIndexOf("\""));
    124          else
    125              path = arg;
    126      //System.out.println("file_path:"+arg);
    127          path = path.substring(path.lastIndexOf("\\") + 1);
    128          return path;
    129      }
    130
    131
    132      public HashMap parseAnotherParam(String str){
    133        HashMap hm= new HashMap();
    134        String key="";
    135        String value="";
    136        int startindex = 0;
    137        int endindex = 0;
    138
    139        startindex = str.indexOf("Content-Disposition: form-data; name=\"") + "Content-Disposition: form-data; name=\"".length();
    140        endindex = str.indexOf("\"\r\n\r\n");
    141
    142        while ( startindex >-1 && endindex > -1 ){
    143          key = str.substring(startindex, endindex);
    144
    145          if(!str.substring(endindex , endindex + 5).equals("\"\r\n\r\n")   ){//L没有value的元?br /> 146              str = str.substring(endindex);
    147              startindex = str.indexOf("Content-Disposition: form-data; name=\"") + "Content-Disposition: form-data; name=\"".length();
    148              endindex = str.indexOf("\"\r\n\r\n");
    149              continue;
    150          }
    151          if( key.indexOf("\";") > -1){//L上传文g的参C?qing)编?br /> 152             str = str.substring(str.indexOf("\";") + 2);
    153             startindex = str.indexOf("Content-Disposition: form-data; name=\"") + "Content-Disposition: form-data; name=\"".length();
    154             endindex = str.indexOf("\"\r\n\r\n");
    155
    156             continue;
    157          } else
    158              str = str.substring(endindex + 5);
    159
    160          value = str.substring(0, str.indexOf("\r\n"));
    161          str = str.substring(str.indexOf("\r\n") + 2);
    162          //System.out.println("key:"+key+" value:"+value);
    163          hm.put(key,value);
    164
    165          startindex = str.indexOf("Content-Disposition: form-data; name=\"") + "Content-Disposition: form-data; name=\"".length();
    166          endindex = str.indexOf("\"\r\n\r\n");
    167
    168        }
    169        return hm;
    170      }
    171
    172      public String getParameter(String param){
    173          //System.out.println(hm.toString());
    174        return (String)hm.get(param);
    175      }
    176
    177
    178 }



    sunny spring 2008-06-30 11:10 发表评论
    ]]>
    վ֩ģ壺 ޹˾Ʒԭ| þþƷձҰ| ĻþƷѹۿ| ĻѲ| ѾƷþþþþĻ| aƬ߹ۿ| ޹Ʒþ| Ƶһ| Ʒѹһ| ѹۿƵ| 13СϴƵվ| ˳վ| av߹ۿ| Ļձ| þAVӰ| ò| ޾ƷþëƬ| ŮڵƵ| ƬվɫƬ| ˸Ƶ| 1000žžδʮ| һƬѿ| ѰvƷƵַ| йëƬѹۿƵ| ҹƵ| èѹۿ˳վ| þҹ޾Ʒ| ɫͼƬС˵| | 츾xxxxx| 2020Ʒۺ | jizzѲ| ޾Ʒһ| ݹѹǹ| һaƬ| aëƬѿ| һƵѹۿ| ѹۿ| aëƬƵѹۿӰԺ| þóѴƬ| Ʒһʽֱ|