Java中关于Servlet中请求中文乱码及文件下载
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java中关于Servlet中请求中文乱码及文件下载,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4382字,纯文字阅读大概需要7分钟。
内容图文
![Java中关于Servlet中请求中文乱码及文件下载](/upload/InfoBanner/zyjiaocheng/841/abda49aa27674e588e55043e779c94cc.jpg)
1,Servlet请求响应中文乱码问题
![Java中关于Servlet中请求中文乱码及文件下载 - 文章图片](/upload/getfiles/0001/2021/5/6/20210506072806237.jpg)
![Java中关于Servlet中请求中文乱码及文件下载 - 文章图片](/upload/getfiles/0001/2021/5/6/20210506072806306.jpg)
1 package com.demo.servlet; 2 import java.io.PrintWriter; 3 import java.io.IOException; 4 5 import javax.servlet.ServletException; 6 import javax.servlet.http.HttpServlet; 7 import javax.servlet.http.HttpServletRequest; 8 import javax.servlet.http.HttpServletResponse; 9 10 public class Demo5Servlet extends HttpServlet { 11 12 @Override 13 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 14 /* 15 * 关于重定向,Servlet封装了sendRedirect方法 则sendRedirect方法的底层其实是两步 16 * 第一步是设置响应状态码为302 17 * 第二步是设置响应头的location属性值为需要跳转到的url 18 */ 19 resp.setStatus(302); 20 resp.setHeader("location", "/ServletDemo/demo2"); 21 // 以上两步的效果与以下方法相同 22 resp.sendRedirect("/ServletDemo/demo2"); 23 // 设置页面自动过5秒种跳转到另一个地址 24 resp.setHeader("refresh", "5;url=/ServletDemo/demo2"); 25 /* 26 * Servlet响应中文乱码的问题,主要分两步 27 * 第一步是当response把中文写入到Tomcat引擎之前,是先把内容写入到response缓冲区的, 28 * 此时需要告诉response需要以什么样的编码形式写入到缓冲区,即设置setCharacterEncoding(); 29 * 第二步是告诉浏览器以什么样的编码方式读取response响应的信息,即设置setHeader 30 * 其实第一步不设置,只设置第二步便可起到同样的效果 31 */ 32 //告诉response缓冲区将以什么样的编码方式写入 33 resp.setCharacterEncoding("utf-8"); 34 //行文浏览器以什么样的编码方式解决response响应的内容 35 resp.setHeader("Content-type", "text/html;charset=utf-8"); 36 PrintWriter writer = resp.getWriter(); 37 writer.write("hello"); 38 writer.write("<br/>"); 39 writer.write("你好"); 40 41 } 42 43 @Override 44 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 45 46 doGet(req, resp); 47 } 48 49 }Servlet响应中文乱码
2,Servlet手动实现下载
![Java中关于Servlet中请求中文乱码及文件下载 - 文章图片](/upload/getfiles/0001/2021/5/6/20210506072806237.jpg)
![Java中关于Servlet中请求中文乱码及文件下载 - 文章图片](/upload/getfiles/0001/2021/5/6/20210506072806306.jpg)
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Insert title here</title> 6 </head> 7 <body> 8 <a href="/ServletDemo/down?filename=a.jpg">jpg</a> 9 <br /> 10 <a href="/ServletDemo/down?filename=a.mp3">mp3</a> 11 <br /> 12 <a href="/ServletDemo/down?filename=a.flv">flv</a> 13 <br /> 14 <a href="/ServletDemo/down?filename=a.mp4">mp4</a> 15 <br /> 16 <a href="/ServletDemo/down?filename=a.txt">txt</a> 17 <br /> 18 <a href="/ServletDemo/down?filename=a.zip">zip</a> 19 20 </body> 21 </html>Servlet手动下载前端
![Java中关于Servlet中请求中文乱码及文件下载 - 文章图片](/upload/getfiles/0001/2021/5/6/20210506072806237.jpg)
![Java中关于Servlet中请求中文乱码及文件下载 - 文章图片](/upload/getfiles/0001/2021/5/6/20210506072806306.jpg)
1 package com.demo.servlet; 2 3 import java.io.FileInputStream; 4 import java.io.IOException; 5 import java.io.InputStream; 6 7 import javax.servlet.ServletException; 8 import javax.servlet.ServletOutputStream; 9 import javax.servlet.http.HttpServlet; 10 import javax.servlet.http.HttpServletRequest; 11 import javax.servlet.http.HttpServletResponse; 12 13 public class DownServlet extends HttpServlet { 14 15 @Override 16 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 17 String filename = req.getParameter("filename");// 获取所需要下载的文件名 18 String path = this.getServletContext().getRealPath("download/" + filename);// 获取所下载的资源的绝对路径 19 // 设置要下载的文件类型,通过文件名获取文件的MIME类型 20 resp.setContentType(this.getServletContext().getMimeType(filename)); 21 //告诉浏览器别直接打开文件,而是以下载的形式保存文件 22 resp.setHeader("Content-Disposition", "attachment;filename=" + filename); 23 InputStream input = new FileInputStream(path);// 将文件封装输入流 24 ServletOutputStream output = resp.getOutputStream();// 获取response的输入流对象 25 int len = 0;// 读取到的字节长度 26 byte[] buffer = new byte[1024];// 读取到的缓冲区 27 while ((len = input.read(buffer)) > 0) { 28 output.write(buffer, 0, len);// 读取缓冲区的字节到输出流 29 } 30 input.close(); 31 output.close(); 32 33 } 34 35 @Override 36 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 37 38 doGet(req, resp); 39 } 40 41 }Servlet手动下载后端实现
内容总结
以上是互联网集市为您收集整理的Java中关于Servlet中请求中文乱码及文件下载全部内容,希望文章能够帮你解决Java中关于Servlet中请求中文乱码及文件下载所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。
来源:【匿名】