勵精圖治
2006年7月26日 #
現在在干啥啊!
沒有方向,沒有動力。
十年之后會是什么樣子呢?
nnd
郁悶!
極其郁悶!!!
改變,
要改變啊!!
問題:
??????直接用URLEncoder.encode(fileName,"UTF-8"),得到的文件名長度會被截斷。
解決方法是:
??????文件名先用“GB2312”編碼,然后用“ISO8859_1”解碼。當然也可以在將文件名保存到數據庫之前用“GB2312”編碼。
代碼如下:
??????直接用URLEncoder.encode(fileName,"UTF-8"),得到的文件名長度會被截斷。
解決方法是:
??????文件名先用“GB2312”編碼,然后用“ISO8859_1”解碼。當然也可以在將文件名保存到數據庫之前用“GB2312”編碼。
代碼如下:
?1
conn?=?DBUtil.getConnection();
?2
????????????ps?=?conn.prepareStatement("SELECT?FILE_NAME,?CONTENT_TYPE,?CONTENT?FROM?PUB_JOB_ATTACHMENTS?WHERE?ATTACHID?=??");
?3
????????????ps.setString(1,getAttachId());
?4
????????????rs?=?ps.executeQuery();
?5
????????????if(rs.next())
?6
????????????
{
?7
????????????????//java.net.URLEncoder.encode(rs.getString("FILE_NAME"),?"UTF-8")
?8
????????????????response.setContentType(rs.getString("CONTENT_TYPE"));
?9
????????????????String?fileName=rs.getString("FILE_NAME");
10
????????????????fileName=URLEncoder.encode(fileName,"GB2312");
11
????????????????fileName=URLDecoder.decode(fileName,?"ISO8859_1");
12
????????????????response.addHeader("Content-Disposition",?"attachment;?filename=\""?+?fileName?+?"\"");
13
????????????????Blob?content?=?rs.getBlob("CONTENT");
14
????????????????InputStream?ins?=?content.getBinaryStream();
15
????????????????byte?buffer[]?=?new?byte[1024];
16
????????????????int?length?=?-1;
17
????????????????outs?=?response.getOutputStream();
18
????????????????while((length?=?ins.read(buffer))?!=?-1)
19
????????????????????outs.write(buffer,?0,?length);
20
????????????????ins.close();
21
????????????????outs.flush();
22
????????????}

?2

?3

?4

?5

?6



?7

?8

?9

10

11

12

13

14

15

16

17

18

19

20

21

22

先看一下Proxy的兩種用法:






































































































看一下java api doc
static?InvocationHandler | getInvocationHandler(Object?proxy) ??????????返回指定代理實例的調用處理程序。 |
static?Class<?> | getProxyClass(ClassLoader?loader, Class<?>...?interfaces) ??????????返回代理類的 java.lang.Class 對象,并向其提供類加載器和接口數組。 |
static?boolean | isProxyClass(Class<?>?cl) ??????????當且僅當指定的類通過 getProxyClass 方法或 newProxyInstance 方法動態生成為代理類時,返回 true。 |
static?Object | newProxyInstance(ClassLoader?loader, Class<?>[]?interfaces, InvocationHandler?h) ??????????返回一個指定接口的代理類實例,該接口可以將方法調用指派到指定的調用處理程序。 |
沒時間了,先這樣吧。
?