1
2
3
4
5
|
//1.程序的數據以什麼碼錶輸出了,程序就要控制瀏覽器以什麼碼錶打開 response.setHeader( "content-type" , "text/html;charset=utf-8" ); String data= "中國" ; OutputStream out=response.getOutputStream(); out.write(data.getBytes( "utf-8" )); |
1
|
"content-type" , "text/html;charset=utf-8" 中的分號切不可寫成逗號,不然瀏覽器會提示下載 |
1
2
3
4
5
|
//2.用HTML技術中的meta標籤來模擬http響應頭,用於控制瀏覽器的行爲 String data= "中國人" ; OutputStream out=response.getOutputStream(); out.write( "<meta http-equiv='content-type' content='text/html;charset=utf-8'>" .getBytes()); out.write(data.getBytes( "utf-8" )); |
1
2
3
4
|
//設置response中的碼錶 response.setCharacterEncoding( "utf-8" ); response.setContentType( "text/html;charset=utf-8" ); response.getWriter().write( "中國" ); |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
String path= this .getServletContext().getRealPath( "/download/image1.jpg" ); String filename=path.substring(path.lastIndexOf( "\\" )+ 1 ); //取文件名的小技巧 response.setHeader( "content-disposition" , "attachment;filename=" +URLEncoder.encode(filename, "utf-8" )); InputStream in = null ; OutputStream out = null ; in = new FileInputStream(path); int len= 0 ; byte buffer[]= new byte [ 1024 ]; out=response.getOutputStream(); while ((len=in.read(buffer))> 0 ){ out.write(buffer, 0 ,len); } out.close(); in.close(); |
1
2
|
response.setHeader( "refresh" , "3" ); //3秒後刷新 response.setHeader( "refresh" , "3;url='index.jsp'" ); //3秒後跳到index.jsp |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
System.out.println(request.getRequestURI()); System.out.println(request.getRequestURL()); //URL和URI的區別: //URI:統一資源標識符 exp:/day02/RequestDemo1 //URL:全球資源定位器 exp:http://localhost:8080/day02/RequestDemo1 System.out.println(request.getQueryString()); //獲取參數信息(返回請求行中的參數)exp: 返回name=zengxiang System.out.println(request.getRemoteAddr()); //返回發出請求的客戶機IP地址 System.out.println(request.getRemoteHost()); //返回發出請求的客戶機主機名 System.out.println(request.getMethod()); //返回請求方式POST、GET、PUT //客戶機帶數據給servlet有兩種方式:超鏈接和提交表單,下面是獲取請求數據的幾種方式 1 .String value = (String)request.getParameter( "name" ); 2 .Enumeration e=request.getParameterNames(); while (e.hasMoreElements()){ String name=(String) e.nextElement(); value=request.getParameter(name); System.out.println(name+ "=" +value); } 3 .String[] values=request.getParameterValues( "password" ); for ( int i= 0 ;values.length!= 0 &&i<values.length;i++){ System.out.println(values[i]); } //切記判斷傳遞過來的參數是否爲空 4 .Map m=request.getParameterMap(); User user= new User(); try { BeanUtils.populate(user,m); //用map集合數據填充bean } catch (Exception e1){ e1.printStackTrace(); } System.out.println(user); 5 .InputStream in=request.getInputStream(); //一般不採用此種方式去獲取數據,文件上傳需要這種方式 int len= 0 ; byte buffer[]= new byte [ 1024 ]; while ((len=in.read(buffer))> 0 ){ System.out.println( new String(buffer, 0 ,len)); } |
1
2
3
|
String value=request.getParameter( "username" ); String value1= new String(value.getBytes( "iso8859-1" ), "gbk" ); System.out.println(value1); |
1
2
3
|
request.setCharacterEncoding( "gbk" ); String value1=request.getParameter( "username" ); System.out.println(value1); |
1
2
|
request域:作用於請求範圍,每個請求對應一個request域,相互獨立 servletContext域:作用於WEB應用,所有請求都在一個context域,數據易覆蓋 |
1
2
|
getAttribute():獲取域中的數據 getParameter():獲取客戶機所提交的數據 |
1
2
3
4
5
6
|
1 .request.getRequestDispatcher( "/form1.html" ).forward(request, response); 2 .response.sendRedirect( "/day02/form1.html" ); 3 . this .getServletContext().getRealPath( "/form1.html" ); 4 . this .getServletContext().getResourceAsStream( "/form1.html" ); 5 .<a href= "/day06/form1.html" >xx</a> 6 .<form action= "/day06/form1.html" ></form> |