Yes Kristen & DMcCallie, my tempDB problem occurs in production server not only once. So I must find out the actual reason rather than shrinking it only.
My query is a simple select statement which return data of one row and 2 columns, no cursor and no large data. And it finish within 1s when i run it in Query Analyzer directly using exactly the same parameter. However, when i try to run this query in the web site, it runs for a long time. So that's why i think it is the problem of the "remote procedure call" rather than "running of the query". I need to further investiage into the problem.
Finally, I found that the SQL query runs well directly in SQL analyzer, but runs a long time through JDBC in my program and causes the tempDB expansion. It contains some sub-queries. I re-write it and now the problem is solved. Thank you for all of your help!