下載中文:
代碼:
String str="船隻博客";
OutputStream os=response.getOutputStream();
byte []byt=str.getBytes();
os.write(byt);html
用字節流輸出,本地默認的是gbk的默認碼錶,用瀏覽器訪問時也是本地默認的gbk碼錶,因此沒有出現亂碼。瀏覽器
在服務端用utf-8的碼錶:
byte []byt=str.getBytes(「UTF-8」);緩存
這時須要告知客戶端用utf-8的碼錶解析:
方式一:
response.setHeader("ContexType","text/html;charset=UTF-8");
方式二:(推薦)
response.setContentType("text/html;charset=UTF-8");tomcat
更改服務器輸出時使用的碼錶:
response.setCharacterEncoding("UTF-8");
使用方法二告知客戶端使用指定的碼錶解碼時,一樣有告知服務器的功能,不須要告知服務器。服務器
下載文件中的圖片
//得到文件的真實路徑
ServletContext sc=getServletContext();
String str=sc.getRealPath("/WEB-INF/classes/text.jpg");
String filename=str.substring(str.lastIndexOf("//")+1);
//建立輸入流
InputStream in=new FileInputStream(str);
//告知客戶端如下載的形式打開
response.setHeader("Content-Disposition", "attachment;filename="+filename);
//建立字節輸出流
OutputStream out=response.getOutputStream();
//輸出
int len=-1;
byte []byt=new byte[1024];
while((len=in.read(byt))!=-1){
out.write(byt,0,len);
}
in.close();
out.close();編碼
URL編碼:
public static void encoding() throws UnsupportedEncodingException{
String str="戴佳偉";
System.out.println(URLEncoder.encode(str, "UTF-8"));
}code
URL解碼:
private static void decoding() throws UnsupportedEncodingException {
// TODO Auto-generated method stub
String str="%E6%88%B4%E4%BD%B3%E4%BC%9F";
System.out.println(URLDecoder.decode(str, "UTF-8"));
}htm
定時刷新:
刷新類代碼:圖片
response.setContentType("text/html;charset=UTF-8");
response.setHeader("Refresh", "2;URL=/TextResponse/2l.html");
response.getWriter().write("登陸成功,2秒後跳轉到主頁");utf-8
設置緩存時間:
response.setDateHeader("Expires", System.currentTimeMillis()+1*60*60);
緩存時間單位是毫秒,是個相對時間,須要獲取當地時間。
response細節:OutputStream字節流和PrintWriter不能一塊兒使用,是互斥的。OutputStream字節流和PrintWriter沒必要關閉,tomcat會自動關閉。