response使用方法以及下载案例

1,response常用api案例
1,相应状态码含义
200OK请求已成功,请求所希望的响应头或数据体将随此响应返回。出现此状态码是表示正常状态。
302Move temporarily重定向,请求的资源临时从不同的 URI响应请求。
304Not Modified从缓存中读取数据,不从服务器重新获取数据
404Not Found请求资源不存在。通常是用户路径编写错误,也可能是服务器资源已删除。
403Forbidden服务器已经理解请求,但是拒绝执行它
405Method Not Allowed请求行中指定的请求方法不能被用于请求相应的资源
500Internal Server Error服务器内部错误。通常程序抛异常
 
2,操作响应行
setStatus(int code) 向浏览器中发送状态码
response.setStatus(302);

 

 
3,操作响应头
addHeader(String name, String value)
addIntHeader(String name, int value)
addDateHeader(String name, long date)
setHeader(String name, String value) //设置响应头信息
setDateHeader(String name, long date)
setIntHeader(String name, int value)
//add表示添加,set表示设置

 

refresh 定时刷新
response.setHeader("refresh","5;url=servlet2");//定时跳转刷新

 

content-type设置相应数据的类型和编码格式,解决中文乱码
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  // response.setCharacterEncoding("utf-8");
  // response.setHeader("content-type","text/html;charset=utf-8");
  response.setContentType("text/html;charset=utf-8");//优化写法
  PrintWriter writer = response.getWriter();
  writer.write("你好 世界!!");
}

 

 
location 相应的路径,重定向
 
什么情况下使用转发?什么时候使用重定向?
1,转发是可以携带数据的,
转发
2,URL需要变化的时候
使用重定向
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  /*response.setStatus(302);
  response.setHeader("Location","/servlet2");*/
  response.setContentType("text/html;charset=utf-8");
 
  //优化写法
  response.sendRedirect("/servlet2");
}

 

content-disposition 通过浏览器以附件形式解析正文
4,操作响应体
PrintWriter getWriter()
@WebServlet(name = "Servlet2",urlPatterns="/servlet2")
public class Servlet2 extends HttpServlet {
    protected void doPost(HttpServletRequest request,     HttpServletResponse response) throws ServletException, IOException {
        doGet(request,response);
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        response.getWriter().write("hell,哈哈");
    }
}

 

ServletOutputStream getOutputStream()
 
获得字节流,通过该字节流的write(byte[] bytes)可以向response缓冲区中写入字节
ServletOutputStream outputStream = response.getOutputStream();

 

2,下载案例
public class DownLoadServlet extends HttpServlet {
  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doGet(request,response);
  }
 
  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String filename = request.getParameter("filename");
    String realPath = getServletContext().getRealPath("/WEB-INF/" + filename);
 
    设置响应头: response.setContentType(mimeType) 告诉浏览器下载的文件的类型;
    String mimeType = getServletContext().getMimeType(filename);
    response.setContentType(mimeType);
 
    String encode = URLEncoder.encode(filename, "utf-8");
    //设置响应头:Content-Disposition 告诉浏览器以附件的形式来处理文件;
    response.setHeader("Content-Disposition","attachment;filename="+encode);
 
    //将文件读取到流里边:
    File file = new File(realPath);
    if(file.exists()){
      ServletOutputStream outputStream = response.getOutputStream();
      FileInputStream in = new FileInputStream(file);
 
      int len = 0;
      byte[] bytes = new byte[1024];
      //将流写给浏览器:response.getOutputStream().write(arr,0,len);
      while((len = in.read(bytes)) != -1){
        outputStream.write(bytes,0,len);
      }
      in.close();
    }
  }
}

 

 
 

转载于:https://www.cnblogs.com/cyxy31521/p/9388299.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值