服务器启动  每一个servlet  创建一个对象

 

浏览器启动  每一个请求  创建  request  response  对象 请求结束 立即销毁


response 

response 有两个方法: 

  1. getOutputStream 二进制数据
  2. getWriter 文本数据
上面的两个流属于互斥流 不能同时使用

 

首先声明一点字符流的传输 无乱码问题

 

文件下载

// 获得下载文件的绝对路径

String path = getServletContext().getRealPath("download/美女.jpg") ;

File file = new File(path) ;

// 发送头,通知浏览器下载 

response.setContentType("application/octet-stream") ;

// 文件名有中文,必须经过url编码 

String fileName = URLEncoder.encode(file.getName(),"utf-8") ;

response.setHeader("content-disposition","attachment;filename=" + fileName);

// 读文件,发送给IE

InputStream in = new FileInputStream(file);

OutputStream out = response.getOutputStream();

int len;

byte[] buffer = new byte[1024] ;

while((len=in.read(buffer))>0) out.write(buffer,0,len) ;

http协议传输的数据中如果有中文 都需要进行 URL 编码 浏览器会自动解码

这里fileName是跟着 content-disposition 发送给浏览器的 如果没有进行 url 编码 就会乱码

程序结束时 不可关流 如果关流 后面 servlet 无法使用 tomcat自动关流的 

 

setStatus

setHeader

 

REFRESH

Expires

content-type


meta


response.sendRedirect("") ; //相当于两次请求

 

response 乱码 

response request


 

request

getRequestURL() StringBuffer

getRequestURI() String (除了主机名 端口号)

getQueryString() String (?后面的)

getRemoteAddr() String (ip)

getRemoteHost() String (ip)

getRemotePort() int

getLocalAddr() String (ip)

getLocalName() String


getHeader("Host") String (localhost:8080)

getHeaders("xxx") Enumeration (多个同名的) 

getHeaderNames() Enumeration (keys)

 

getParameter("username") String (key/value)

getParameterValues("pereference") Enumeration (key/values)

getParameterMap() Map<String, String[]> (key/values)s

 

response request 

乱码总结:

http://developer.51cto.com/art/201106/270666.htm

这篇文章 非常好!!!

response request 

pageEncoding utf-8 charset gb2312
username:%D3%C3%BB%A7%C3%FB
password:%C3%DC%C2%EB

 

pageEncoding utf-8 charset utf-8
username:%E7%94%A8%E6%88%B7%E5%90%8D
password:%E5%AF%86%E7%A0%81

 

pageEncoding gb2312 charset utf-8
username:%E7%94%A8%E6%88%B7%E5%90%8D
password:%E5%AF%86%E7%A0%81

 

pageEncoding gb2312 charset gb2312
username:%D3%C3%BB%A7%C3%FB
password:%C3%DC%C2%EB

 

only pageEncoding gb2312
username:%D3%C3%BB%A7%C3%FB
password:%C3%DC%C2%EB

 

only pageEncoding utf-8
username:%E7%94%A8%E6%88%B7%E5%90%8D
password:%E5%AF%86%E7%A0%81

 

问:究竟使用那种编码方式进行url编码呢???

答:jspContentType 优先于 pageEncoding 优先于 htmlContentType 

相关文章:

  • 2021-11-04
  • 2021-10-27
  • 2021-09-16
猜你喜欢
  • 2022-01-24
  • 2021-07-21
  • 2021-05-26
  • 2021-09-26
  • 2021-06-12
  • 2021-09-12
相关资源
相似解决方案