2007年6月11日
我是不是因該寫一點關于設計模式的文章了呢?
或許我該了...
最近真的很累,非常累,最多的還是來自無盡物質的要求和匱乏的工資;致使我開始懷疑我來上海是否是對的,但是想想別人,或者說是很多人都能來,而且還有些還混的比較好,難道我就不該來嗎?我很彷徨.
URL的openConnection大開一個URLConnection,如果你打開的是一個http協議的url.那么返回的事實上是一個HttpURLConnection.這個connection中,可以設置和Http訪問有關的一些屬性,比如contentType,method等等,這些都是http所特有的.所以必須在HttpURLConnection中設置.
在URL去訪問servlet時,url字符串會被編碼成相應的字符集,比如下面代碼
URL url=new URL("http://localhost:8080/TestWeb/URLServlet?name=中國");
那么在servlet端看來,這個"中國"兩個漢字必須使用以上代碼的調用端的系統默認字符集來解碼,比如我的機器的默認字符集是GBK.那么Servlet端的tomcat的相應的connector的URIEncoding必須設置為GBK或者其兼容字符集.否則出現亂碼.
當然,在上述代碼中可以把中文用URLEncoder來按照相應的字符集編碼.比如URLEncoder.encode("中國","UTF-8");那相應的tomcat端.比如把connector的URIEncoding屬性設置為相應的字符集UTF-8.這樣才不會出現亂碼.
同理.在servlet端.使用contentType設置的字符集編碼方式,和客戶端的解碼方式必須一致,不然中文會出現亂碼現象.
在servlet中用sendRedirect中url出現中文的時候的問題,比如sendRedirect("my.jsp?name=張三");那么在客戶端,會出現一串亂碼.比如
http://localhost:8080?my.jsp?name=????,這是由于在java內部的編碼都是以Unicode來編碼的,那這串字符串在反映到客戶端時.你客戶端使用的解碼方式和這個是不同的 所以出現亂碼.所需要做的,是用URLEncoder來編碼成特定的編碼格式,當然,這個類的使用可以參考jdk文檔.
這幾天我很矛盾,其實我也不想走的,但是很多事情讓我沒有心情留下.
開發的程序,雖然不完美,但就像自己的孩子一樣,割舍不下;說到其他地方也會帶著他,但是又怎么可能,其他的地方有其他的事情,而且這個孩子卻是很難養活,唉,不知道怎么辦.