web服务器接收到http请求,针对这个请求,分别创建一个代表请求的HttpServletRequest对象,代表响应的一个HttpServletResponse。
- 如果要获取客户请求发过来的参数,找HttpServletRequest
- 如果要给客户端响应一些信息,找HttpServletResponse
一,下载文件(以图片为例)
1.创建一个maven项目(我这里将其命名为response)
2.在main中创建两个文件夹java和resourses
3.给两个文件添加属性
3.在resoures中放个图片(一会用于下载)
复制图片,点击resoures粘贴
4.将web.xml中文件改为下面内容
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="4.0"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
metadata-complete="true">
</web-app>
5.在java文件夹中建个包(命名根据自己情况进行)
6.再在包中建个文件,并将下面代码写入其中
public class FileSrtvlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取下载文件的路径
String realPath = "C:\\Users\\86147\\IdeaProjects\\helloServlet\\response\\target\\classes\\皮卡丘.jpg";
System.out.println("下载文件的路径为:"+realPath);
//下载的文件名
String filename = realPath.substring(realPath.lastIndexOf("\\")+1);
//设置想办法让浏览器能够支持(Content-Disposition)下载我们需要的东西,中文文件名URLEncoder.encode编码,否则可能会乱码
resp.setHeader("Content-Disposition","attachment;filename="+ URLEncoder.encode(filename,"UTF-8"));
//获取下载文件的输入流
FileInputStream in = new FileInputStream(realPath);
//创建缓冲区
int len=0;
byte[] buffer = new byte[1024];
//获取OutputStream流
ServletOutputStream out = resp.getOutputStream();
//将FileOutputStream流写入到buffer缓冲区,使用OutputStream将缓冲区的数据传输给客户端
while ((len=in.read(buffer))>0){
out.write(buffer,0,len);
}
in.close();
out.close();
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
注意:图片路径获取方式
在target文件中找到该图片,若没有target文件点击右上角运行tomcat就会出现
7.将下面代码加入到xml文件中
<servlet>
<servlet-name>filedown</servlet-name>
<servlet-class>com.yuan.servlet.FileSrtvlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>filedown</servlet-name>
<url-pattern>/down</url-pattern>
</servlet-mapping>
8.调试tomcat
找到对应的添加上
注意:若找不到对应的,可以退出点击这个图标后再次打开就有了
9.运行tomcat
弹出界面
访问/down
成功弹出下载界面