JavaWeb_day16_Response_文件下载

1.HttpServletRequest对象

用来封装HTTP响应信息

由于HTTP响应信息分为响应行,响应头,响应体三部分,所以HttpServletRequest接口中定义了向客户端发送响应状态码,响应消息头,响应消息体的方法。

通过response设置响应行:状态码

发送状态码的方法:response.setStatus(int status);     //参数是状态码

通过response设置响应头

setHeader(String name,String value)

1)Location,指定响应的路径,需要与状态码302配合使用,完成跳转

demo:servlet1没有响应,告诉客户端去重定向到servlet2

         

        

但是上面的写法太麻烦,可以使用response.sendRedirect("/day16/servlet2")来重定向到servlet2

2)Refresh,定时刷新,格式:秒数;url=路径。url可省略,默认值为当前页

使用js实现定时跳转页面,在success.html页面中实现

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
  window.onload=function(){
	  var time=5;
	  var secondEle=document.getElementById("second")
	  var timer=setInterval(function(){
		  secondEle.innerHTML=time;
		  time--;
		  if (time==0) {
			clearInterval(timer);
			location.href="https://www.baidu.com";
		}
		  
	  },1000)
  }
</script>
</head>
<body>
恭喜,登陆成功,<span id=second style="color:red">5</span>秒后自动跳转,如不跳转,请点击<a href="https://www.baidu.com">这里</a>
</body>
</html>

通过response设置响应体

response.getWriter().write("hello");

响应体中存在中文乱码问题的解决

2.文件下载

文件下载的实质就是文件拷贝,将文件从服务器端拷贝到浏览器端

package com.sh.FileDownLoad;

import java.io.FileInputStream;
import java.io.IOException;
import java.net.URLEncoder;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 文件的下载
 * 
 * @author Administrator
 *
 */
public class FileDownTest extends HttpServlet {

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// 1.获取要下载的 文件的绝对路径
		String realPath = this.getServletContext().getRealPath("简介.jpg");
		// 2.获取要下载的文件名
		String fileName = realPath.substring(realPath.lastIndexOf("\\") + 1);
		// 3.设置content-disposition响应头控制浏览器以下载的形式打开文件,中文文件名要使用URLEncoder.encode方法进行编码,否则会出现文件名乱码
		response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
		// 4.获取输入流
		FileInputStream in = new FileInputStream(realPath);
		ServletOutputStream out = response.getOutputStream();
		int len = 0;
		byte[] b = new byte[1024 * 10];
		while ((len = in.read(b)) != -1) {
			out.write(b, 0, len); 将缓冲区的数据输出到客户端浏览器
		}
		in.close();
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值