jsp+servlet day1 (文件编码+文件下载)

1  通过servlet保证不乱码

    ① 首先设置response 字符缓冲区的编码  response.setCharacterEncoding("UTF-8"); 

    ② 然后设置浏览器打开文件的编码,也就是设置响应头  response.setHeader("Content-Type", "text/html;charset=UTF-8")

 

     要求两个编码相同,只有这样才能保证编码相同

     在servlet中,有一种简便的方式来进行设置。

     response.setContentType("text/html;charset=utf-8");

 

2  通过servlet实现文件的下载功能

   

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String path = getServletContext().getRealPath("/file/a.txt");
		response.setHeader("content-disposition", "attachment;filename=a.txt");
		System.out.println(path);
		InputStream is = new FileInputStream(path);
		OutputStream os = response.getOutputStream();
		byte[] a = new byte[1024];
		int len = 0;
		while((len = is.read(a))!=-1){
			os.write(a,0, len);
		}
		is.close();
		
	}

   首先设置相应头,设置响应头的目的就是可以让浏览器弹出一个下载框,创建文件读取流,读取路径中的文件。通过response获得输出流,切记,这个输出流不用关闭,又服务器来帮我们进行关闭

 

3  当把jsp页面放在web-inf里面的时候,我们只能通过转发进行访问,如果想要重定向进行访问的时候一定会报一个404的错误,

  servlet 转发:request.getRequestDispatcher("WEB-INF/jsp/Demo3.jsp").forward(request, response);

  servlet 重定向:response.sendRedirect();

 

4 jsp执行过程

 
jsp+servlet day1 (文件编码+文件下载)
 

                  1 首先 客户端发起request请求。

                  2 然后服务器加载这个jsp

                  3 生成相应的servlet文件

                  4 servlet从.java文件编译成 .class文件

                  5 服务器执行class文件,进行相应页面的展示。