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执行过程
1 首先 客户端发起request请求。
2 然后服务器加载这个jsp
3 生成相应的servlet文件
4 servlet从.java文件编译成 .class文件
5 服务器执行class文件,进行相应页面的展示。