本文共 1772 字,大约阅读时间需要 5 分钟。
·常用响应头
refresh (自动刷新或跳转)//设置响应头response.addHeader("uname","admin")//设置页面报错//response.sendError(500);response.sendError(404,"由于颜值过低,无法访问!")//自动刷新 3秒钟刷新一次response.setHeader("refresh","3");//跳转 3秒后 跳转到百度response.setHeader("refresh","3;http://www.baidu.com");
·响应数据
getWriter()—>获取字符流(只能响应回字符) getOutputStream()—>获取字节流(能响应一切数据) 响应回的数据到客户端被浏览器解析。 注意:两者不能同时使用。java.lang.IllegalStateException:getWriter() has already been called for this responsesetContentType() 设置数据的响应类型
·响应乱码问题
乱码问题: 服务器响应的数据也会经过网络传输,服务器端有一种编码方式,在客户端也存在一种编码方式,当两端使用的编码方式不同时则出现乱码乱码情况:
getWriter()的字符乱码 对于getWriter()获取到的字符流,响应中文必定出现乱码,由于服务器端在进行编码时默认会使用ISO-8859-1格式的编码,该编码方式不支持中文 getOutputStream()字符乱码 对于getOutputStream()获取到的字节流,响应中文时,由于本身就是传输的字节,所以此时可能出现乱码,也可能正确显示解决方案:
同时设置服务端和客户端的编码及响应类型: response.setContentType(“text/html;charset=utf-8”);总结:
要想解决响应的乱码,只需要保证使用支持中文的编码格式。并且保证服务器端和客户端使用相同的编码格式即可。·响应图片
//获取项目在服务器中的真是路径String realPath = request.getServletContext().getRealPath("/");//得到图片的存放路径String filePath = realPath + "/WEB-INF/images/jay.jsp";//通过路径得到file对象File fiel = new File(filePath);//通过路径得到file对象File file = new File(filePath);//判断文件是否存在,且是一个标准文件if(file.exists()&&file.isFile()){ //设置响应类型 response.setContentType("image/jepg"); //得到文件的输入流 InputStream in = new FileInputStream(file); //得到字符输出流 ServletOutputStream out = response.getOutputStream(); byte[] bytes = new byte[1024]; int len = 0; while((len=in.read(bytes))!=-1){ out.write(bytes,0,len); }} else { //设置响应类型及编码 response.setContentType("text.html;charset=UTF-8");\ response.getWriter().write("文件不存在!
"); response.getWriter().close();}
·重定向
重定向是一种服务器指导,客户端的行为。客户端发出第一个请求,被服务器接收,经过处理服务器进行响应。 与此同时,服务器给客户端一个地址(下次请求的地址response.sendRedirect(“url”)?,当客户端接收到响应后,立刻、马上、自动根据服务器给的地址,进行请求的发送第二个请求,服务器接收请求并作出响应,重定向完成。 request和response不共享转载地址:http://xfgpb.baihongyu.com/