Servlet下载文件和http响应
下载文件等:
1、得到公共的内容ServletContext sc = this.getServletContext();
2、在链接名字后面加个?
一个参数?参数1=值
两个参数?参数1=值&参数2=值
<a href=”DownLoadServlet?fileName=正则表达式.html”>下载正则表达式.html</a>
3、得到参数 String fileName = request.getParameter(“fileName”);
解决乱码:
String name = new String(fileName.getBytes(“ISO-8859-1”),”utf-8”);
4、判断文件
String path = sc.getRealPath(“/ppt/正则表达式.ppt”);
5、读文件
FileInputStream fis = new FileInputStream(new File(path));
ServletOutputStream out = response.getOutputStream();
byte[] buf = new byte[1024];
Int length = 0;
While((length = fis.read(buf)) != -1){
Out.write(buf,0,length);
}
Out.flush();
InputStream input = sc.getResourceStream(“/img/图片.jpg”);
URL url = sc.getResource(“/img/图片.jpg”);
String str = url.getFile();
String[] ary = str.split(“/”);
System.out.println(ary[ary.length-1]);
Set set = sc.getResourcePaths(“/”); //得到文件夹
Classes在bulid里面
6、告诉浏览器用下载的方式打开
response.setHeader(“ Content-Disposition”,”attachment;filename=正则表达式.html”);
换成当前时间 attachment;filename=”System.currentmilis”+.html
Http响应
1、响应头:浏览器传给服务器,浏览器应该有的东西
2、设置状态码:response.setStatus(230);
response.setStatus(response.SC_NOT_FOUND);
3、设置状态信息:response.sendError(“找不到资源...”);
printWriter pw = response.getWriter();
response.setContextType(“text/html;charset=utf-8”);
4、302:文件转移位置与location一起使用
response.setStatus(302);
response.setHeader(“Location”,”路径”);
========重定向的路径:response.sendRedirect(“路径”);
5、请求的文件出现缓存——发送响应头的头部信息
(1)、没有修改的文件,从缓存中取——效率高
(2)、修改的文件中,出现上一次修改的时间
6、自动刷新
response.setHeader(“Refresh”,”5;URL=/myPage/login.html”);
数据库中limit ?,?; 始终在最后
客户端=浏览器 请求头 浏览器告诉服务器浏览器的状态,想要服务器如何返回请求的信息
响应头 服务器告诉浏览器服务器的状态
默认情况下使用HTTP协议的GET方法提交请求------------a标签提交请求、form表单、直接 输入地址并回车
GET、POST提交区别:
1、文本 文本、二进制
2、不超过255字符 没有限制(理论)——防止传输恶意文件
3、一部分显示在浏览器地址栏 作为消息体,不可见
4、缓存在浏览器URL历史状态中 不会被浏览器缓存
静态图片等:GET方法
发送大数据、上传文件、发送保密信息:POST方法
Request.getRemoteAddr():得到远程地址
查询自己的IP
1、设置
2、以太网
3、更改适配器
4、以太网 internet 4 属性中 的IP
判断使用的浏览器:
String ueragent = request.getHeader(“Uer-Agent”);
ueragent.indexOf(“MSIE”);——IE浏览器
Indexof:判断字符串中字符第一次出现的位置
Referer:防盗链——盗链时结果为Null
请求的为post得到参数:用request.setCharacterEncoding(“utf-8”);
请求的为get得到参数:需要转码
<a href=”DownLoadServlet?fileName=正则表达式.html”>下载正则表达式.html</a>得到参数 String fileName = request.getParameter(“fileName”);
解决乱码:
String name = new String(fileName.getBytes(“ISO-8859-1”),”utf-8”);
下拉菜单:
select中得到的是value中的值
多选框时:用request.getParameterValues(‘name’);
Enumeration<String> enums = request.getParameterNames();
While(enums.hasMoreElements){
String name = enums.nextElement();
System.out.print(request.getParameter(name));
}
form上传时enctype默认为传输字符;上传文件等:enctype=”multipart/form-data”;
转发和重定向:转发地址不会改变;只发送一次请求
转发:request.getRequestDispatcher(“/success.html”).foward(request,response);
Forward();只会打印跳转的地址中的内容
Include();会打印地址中的内容,接着打印之后的内容
Forward();——共享request,response
setAttribute:已经响应完,则不能得到值
超链接:参数中有中文,则需要转码
Form表单中默认为get方法提交
重定向:两次请求(客户端浏览器处理) sendRedirect(); setAttribute中的值不能get出来
派发:一次请求(服务器之间处理) getRequestDispatchar().forward(request,response); setAttribute中的值可以get出来
Servlet下载文件和http响应的更多相关文章
- Servlet 下载文件
这几天有点懒散,还好没有忘记看书,上周去了国家图书馆翻阅了一些和Java相关的书籍,其实这些书都是自己以前看过或者听过,按理来说,不应该看自己已经看过的书籍,应该找一些最新的书籍去看,但是每次走到书架 ...
- Servlet下载文件迅雷不支持问题真相之一
问题描述 最近在做一个下载文件的Servlet,直接使用浏览器的下载功能,完美支持,结果测试人员使用迅雷下载,就不行了,下载也能成功完成,只是迅雷下载的文件大小是悲催的0KB 真相搜罗 网上有很多帖子 ...
- Servlet 下载文件及支持中文文件名
Sevlet 下载pdf文件 支持中文文件名 package html2pdf.controller; import java.io.File; import java.io.FileInputStr ...
- php下载文件,添加响应头
//下载,添加响应头信息 header('Content-type:application/octet-stream'); header('Content-Disposition:attachment ...
- servlet下载文件
package myjava.cn; import java.io.FileInputStream; import java.io.IOException; import java.io.InputS ...
- web下载文件夹
1.文件下载有两种方式:一种是超链接,一种是Servlet提供下载. 2.超链接下载时:当文件可以在网页直接打开时,会直接打开文件,而不是下载,当文件打开不了时,会提供下载窗口. 3.超链接下载原理 ...
- servlet实现文件上传,预览,下载和删除
一.准备工作 1.1 文件上传插件:uploadify: 1.2 文件上传所需jar包:commons-fileupload-1.3.1.jar和commons-io-2.2.jar 1.3 将数 ...
- Servlet实现文件上传和下载
对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦,所以一般选择采用apache的开源工具commo ...
- servlet技术之下载文件演示(DownloadServlet.class)
servlet技术之下载文件演示(DownloadServlet.class) 文件是指把服务器端文件发送到客户端,Servlet能够向客户端发送任意格式的文件数据,例程的DownloadServle ...
随机推荐
- 使用spring手动获取Bean的时候,不能强转回它自己。
这个问题好像有点长,描述一下: 就是通过类名的方式获取Bean后,得到一个Object对象,但是这个Object不能再强转回Bean了.抛出的异常时类型转换异常. java.lang.ClassCa ...
- socket关联查询
反向代理服务器面对用户请求和后端服务器响应,需要将两者联系起来,于是就涉及到socket关联查询了. 代理服务器处理用户的请求和后端服务器的响应,并且这两方的请求和响应是相互对应的,因此对于代理接收到 ...
- 转:永久解决火狐浏览器出现的flash版本更新问题
发现问题: 1.找到火狐浏览器,并打开出现问题的页面. 2.点击火狐浏览器的"打开菜单"按钮,选择"附加组件"按钮. 3.在"搜索所有添加附件&quo ...
- SSRS动态设置文本框属性
SSRS可以通过表达式动态设置文本框所有的属性,比如字体,字号,是否加粗,如下图所示: 汉字和数字英文字母占用的空间不一样,一个汉字占用两个数字和英文字母的空间,VB里有LENB取得字节数,这SSRS ...
- unity5.0新功能
原作者 只待苍霞 章节1: 先来两个最关心的新功能, 第一章先讲PBS, 第二章讲光影GI.说到PBS, 首先应该想到的是Unity自带的两个新的Shader, 分别是Standard以及Standa ...
- TMS320DM642启动模式(Bootmode)(转)
原文地址:http://www.cnblogs.com/xiangai10000/p/JamesYang.html 在TI官方的文档<TMS320DM642 Video/Imaging Fixe ...
- 打水印 Imagename_biao是水印文件 ImgName是原图
/** * 打水印 Imagename_biao是水印文件 ImgName是原图 * @param Imagename_biao * @param ImgName */ public static v ...
- shell编程学习
1.项目中用到Linux的crontrab Linux下的定时执行主要是使用crontab文件中加入定制计划来执行,但是也不是非常复杂,基本上用过一遍就能记住了,关键是要记住/var/spool/cr ...
- OO.A.D.P
OO/A/D/P 对象和类 三大特征 对象: 对象是面向对象语言的一个极为重要的特点,所有的面向对象语言都有对象的共性. 1. 职责(单一) 2. 属性(数据.可改变的) 3. 函数(行为.方法.业务 ...
- 循序渐进Python3(十二) --0-- web之框架
web框架的本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. #!/usr/bin/env python #coding:utf ...