java中如何设置下载文件
如果想要设置某一url为下载文件的方法如下
需要设置文件响应类型,使用response.setContentType,比如jpeg格式的图片。如果想要访问该页面时出现下载保存的窗口,使用response.setHeader("Content-Disposition", "attachment;filename="+filename.getName())函数。也可以是pdf文件,或者其他格式的,如果想要查找浏览器可以识别什么格式的文件,需要到服务器的配置文件中找,比如tomcat服务器中搜索mime-mapping即可查看浏览器是别的文件类型。
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { response.setCharacterEncoding("utf-8"); File filename = new File("D:\\chengxu\\ML\\2.jpg");
response.setContentType("image/jpeg");
response.setHeader("Content-Disposition", "attachment;filename="+filename.getName()); OutputStream out = response.getOutputStream(); FileInputStream fileinput = new FileInputStream(filename); byte[] charbuffer = new byte[];
int length = ;
while ((length=fileinput.read(charbuffer))!=-) {
out.write(charbuffer, , length);
} }
2 java web中的servlet第一次访问时如果初始化中有很多动作需要执行,可能会很慢,如果想要改善这种体验,可以设置服务器加载时创建对象。即在配置文件中设置
<load-on-startup>n</load-on-startup>,其中n表示一个数字,越小表示优先级越高。
3 java web中是一个单实例多线程的,每次用户请求服务器会开一个线程。所以要注意线程安全问题,如果出现需要使用锁来解决。最简单的解决方法是使用同步语句块。
4 ServletConfig对象的作用,主要用于获取配置文件中的配置参数。在Servlet类中使用getServletConfig来获取对象。
5 在后台Servlet中如何转发请求和重定向,实现方法如下。跳转和重定向的区别见jsp指令和重定向
1)转发请求
RequestDispatcher rd = getServletContext().getRequestDispatcher("/getresource");
rd.forward(request, response);
2)重定向
response.sendRedirect("getresource");
注意:他们之间的区别,转发时即使是同一应用也需要/开头;重定向是如果是同一应用程序,不需要以/开头的,如果是'/'开头表明是绝对资源路径。
6 在java web开发中如果使用涉及到路径问题,尽量使用绝对路径。不要使用相对路径,容易出问题。java中‘.’代表的相对路径是java命令运行所在的路径。
比如想要获取一个propertys文件,有两种方法获取
1) 使用getRealPath(),先获取资源路径,然后再得到资源
2) 使用getResourceAsStream()直接获取的是文件的输入流对象
注意:在路径问题中,‘/’代表的含义,如果是浏览器使用则表示web-apps路径,所有项目的根目录;如果是服务器使用则表示webRoot目录,即当前应用的根目录。
7 在java web中 cookie时间的操作,setMaxAge
1) 正数,表示cookie经过多少秒会过期
2) 负数,表示cookie会存在内存中,会话结束就删除
3) 0,表示删除cookie
操作cookie时,如果设置路径,则发送请求只会将该应用路径下的cookie发送过去。cookie不能存储中文。
8 java web中会话管理中有一个重要的东西就是session了,设置session的有效时间有两种
1)全局设置,在配置文件中添加,此处时间单位是分钟
<session-config>
<session-timeout></session-timeout>
</session-config>
2)在主页面中设置,此处时间单位是秒
HttpSession session=request.getSession();
session.setMaxInactiveInterval()
session技术也是用到了cookie技术的,他会在浏览器端存储一个会话id,但是如果浏览器关闭,则消失。说明这个cookie是存储在内存中,如果想要使浏览器关闭再打开可以继续使用之前的会话的话,需要修改session id的存储时间为正数,这样下次访问同一应用时可以使用上一次保存在session中的内容。
java中如何设置下载文件的更多相关文章
- java 中 SVN 设置所有文件及子目录 needs-lock, svn 提交时自动设置 needs-lock, 及版本不一致问题
摘自: http://my.oschina.net/zhangzhihao/blog/72177 设置后的效果:文件会自动带上svn:needs-lock属性,默认是只读的要签出才能修改以防止修改完后 ...
- android中使用Http下载文件并保存到本地SD卡
1.AndroidMainfest.xml中设置权限 <uses-permission android:name="android.permission.INTERNET"& ...
- Android学习记录(5)—在java中学习多线程下载之断点续传②
在上一节中我们学习了在java中学习多线程下载的基本原理和基本用法,我们并没有讲多线程的断点续传,那么这一节我们就接着上一节来讲断点续传,断点续传的重要性不言而喻,可以不用重复下载,也可以节省时间,实 ...
- 利用aspose-words 实现 java中word转pdf文件
利用aspose-words 实现 java中word转pdf文件 首先下载aspose-words-15.8.0-jdk16.jar包 引入jar包,编写Java代码 package test; ...
- java中调用kettle转换文件
java中调用kettle转换文件 通过命令行也能够调用,然后java中调用命令行代码也能够.这样没有和java代码逻辑无缝集成.本文说明kettle5.1中假设通过其它API和java代码无缝集成: ...
- JAVA中比较两个文件夹不同的方法
JAVA中比较两个文件夹不同的方法,可以通过两步来完成,首先遍历获取到文件夹下的所有文件夹和文件,再通过文件路径和文件的MD5值来判断文件的异同.具体例子如下: public class TestFo ...
- java中多种方式读文件
转自:http://www.jb51.net/article/16396.htm java中多种方式读文件 一.多种方式读文件内容. 1.按字节读取文件内容 2.按字符读取文件内容 3.按行读取文件内 ...
- JAVA中使用FTPClient实现文件上传下载
在JAVA程序中,经常需要和FTP打交道,比如向FTP服务器上传文件.下载文件,本文简单介绍如何利用jakarta commons中的FTPClient(在commons-net包中)实现上传下载文件 ...
- JAVA中使用FTPClient实现文件上传下载实例代码
一.上传文件 原理就不介绍了,大家直接看代码吧 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ...
随机推荐
- QT For Android 运行的时候找不到手机怎么办?
[解决方法] 如果是Android手机,那需要下载这个: http://community.kde.org/Necessitas
- Drupal 通过API动态的加入样式文件
前面几篇文章中讲到关于样式的载入方式.已经了解到能够通过 theme.info 载入样式文件,但都须要更新缓存才干够使用.因些这样子没有办法动态的载入一些样式文件,在DP中提供了两个API操作样式文件 ...
- 修改字段结构之GP工具
即然有这个需求,就有人这样做.有人写了GP工具直接来重命名字段名和字段别名.工具及源码下载链接为:http://www.t00y.com/file/90123888 加载到ToolBox中后,可直接运 ...
- 谈谈node(1)
node的出现,给了全栈工程师,一个绝佳的机会. node给我们带来的是更低的硬件成本来完成更高需求以及用户体验感,一台8G内存服务器如果用传统架构,那么最多可驱使4000台同时访问,如果 ...
- [转]自定义Drawable实现灵动的红鲤鱼动画(上篇)
此篇中的小鱼动画是模仿国外一个大牛做的flash动画,第一眼就爱上它了,简约灵动又不失美学,于是抽空试着尝试了一下,如下是我用Android实现的效果图: 小鱼儿 由于整个绘制分析过程比较繁琐所以 ...
- Swift2.1keyword @noescape介绍
@noescape优化编译器编译,swift 2.1引入. 函数假设有一个一个參数是closure的话,能够在前面加一个关键字@noescape表示在函数return前closure生命周期结束,能够 ...
- MISRA 2004 VS MISRA 2012
- mixin
mixin.scss //-----------------------------------浏览器前缀----------------------------------------- //例子: ...
- Divisibility by Eight
把当前数删除几位然后能够整除与8 那么可得知大于3位数的推断能否整除于八的条件是(n%1000)%8==0 能够得出我们的结论:仅仅须要枚举后三位后两位后一位就可以知道是否可整除于8 #include ...
- Oracle 跨库查询表数据(不同的数据库间建立连接)
1.情景展示 当需要从A库去访问B库中的数据时,就需要将这两个库连接起来: 两个数据库如何实现互联互通,在oracle中,可以通过建立DBLINK实现. 2.解决方案 2018/12/05 第一步 ...