servlet学习总结(二)—图片下载和读取属性文件
来源:互联网 发布:软件开发环境 编辑:程序博客网 时间:2024/04/26 11:12
引言
在上一篇博客中给大家介绍了一些servlet中的学习收获,在这篇博客中接着给大家分享servlet中图片的下载
和属性文件的读取。
先看一下整个demo的目录结构;
1、图片的下载
package com.itheima.sc;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.URLEncoder;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;//实现中文文件的下载public class ServletContextDemo6 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//文件在哪儿?以不变应万变ServletContext sc = getServletContext();String realPath = sc.getRealPath("/WEB-INF/classes/美女.jpg");// 文件存放的真实绝对路径//System.out.println(realPath);//构建文件的输入流InputStream in = new FileInputStream(realPath);//告知客户端以下载的方式打开:Content-Disposition=attachment;filename=27.jpg//获取要下载的文件名String filename = realPath.substring(realPath.lastIndexOf(File.separator)+1);response.setHeader("Content-Type", "application/octet-stream");response.setHeader("Content-Disposition", "attachment;filename="+URLEncoder.encode(filename,"UTF-8"));//中文属于不安全的字符,需要进行URL编码//用response的字节流进行输出OutputStream out = response.getOutputStream();int len = -1;byte b[] = new byte[1024];while((len=in.read(b))!=-1){out.write(b, 0, len);}in.close();out.close();}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}
上面的demo就是在browser中以下载的方式获取图片,仅仅是供学习和研究用,在实际的项目中一般是不会用这
个原生的servlet来实现文件的下载和上传的。
2、servlet读取属性文件
在这给大家提供三种读取属性文件的方式,代码如下:
public class servletContextDemo07 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {test10(request, response);}// 请不要把Tomcat等服务器装在有空格的目录中// 类加载器读取:只能读取classes或者类路径中的任意资源。但是不适合读取特别大的资源。b cprivate void test31(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {ClassLoader cl = servletContextDemo07.class.getClassLoader();// 得到类加载器URL url = cl.getResource("com/itheima/resources/c.properties");String path = url.getPath();InputStream in = new FileInputStream(path);Properties props = new Properties();props.load(in);System.out.println(props.getProperty("hello"));}// 类加载器读取:只能读取classes或者类路径中的任意资源。但是不适合读取特别大的资源。b cprivate void test30(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {ClassLoader cl = servletContextDemo07.class.getClassLoader();// 得到类加载器// InputStream in = cl.getResourceAsStream("b.properties");InputStream in = cl.getResourceAsStream("com/itheima/resources/c.properties");Properties props = new Properties();props.load(in);System.out.println(props.getProperty("hello"));}// 利用ResourceBundle读取:b c ,不能读a,只能读取properties的文件private void test20(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// ResourceBundle rb = ResourceBundle.getBundle("b");ResourceBundle rb = ResourceBundle.getBundle("com.itheima.resources.c");System.out.println(rb.getString("hello"));}// 利用ServletContext读取:a b c// 可以读取应用中任何位置上的资源。使用限制:只能在web应用中用private void test10(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// String path = getServletContext().getRealPath("/a.properties");// String path =// getServletContext().getRealPath("/WEB-INF/classes/b.properties");String path = getServletContext().getRealPath("/WEB-INF/classes/com/itheima/resources/c.properties");InputStream in = new FileInputStream(path);Properties props = new Properties();props.load(in);System.out.println(props.getProperty("hello"));}public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}
遇到的错误
解决方案;
右击项目——》properties——》java Build path ——》右侧选择Libraries——》选择JRE System Libray
然后点击 edit 将jdk换成1.6版本
在项目中读取properties文件还是比较常见的,一些基本配置信息都是配置在这个属性文件中,上面提供了三种读
取方式供大家参考,读取方式还有很多中,大家可以去网上查询,然后对比一下根据自己的需求选择读取方式。
小结
上面是在学习servlet中的一些常用功能的总结,通过这两篇博客对servlet又进行了一次总结,这次比第一次
接触servlet的时候更多了了解了一些内部的原理机制,这样看一些封装的东西会容易一些。
0 0
- servlet学习总结(二)—图片下载和读取属性文件
- JavaWeb学习总结(二)——XML文件读取
- 关于servlet和jsp的学习总结二(详细)
- servlet学习总结二
- Servlet总结二(文件路径)
- NIO学习笔记(二)——NIO文件读取
- Numpy库学习(二)文件读取
- Servlet总结(二)
- Servlet总结(二)
- Servlet 图片下载
- servlet和jsp学习(二)
- 读取properties文件和属性
- javaweb学习总结(六)——servlet学习二
- 属性文件的读取二法
- servlet学习笔记---读取资源文件
- Servlet学习(二)
- servlet 学习(二)
- servlet学习(二)
- easyUI中class="easyui-combobox"默认选值
- Cannot fetch index base URL https://pypi.python.org/simple/
- POJ3693 Maximum repetition substring 后缀数组
- 几种常见的排序算法(C++)
- 大话设计模式(八)抽象工厂模式进化
- servlet学习总结(二)—图片下载和读取属性文件
- UIApplicationLaunchOptionsRemoteNotificationKey
- 用rem来做响应式开发
- 知识点二:文件的输入和输出
- hdu 5074
- Java之正则表达式
- C 自定义输入函数
- 基于spark的大数据提取校验框架
- Binary Tree Zigzag Level Order Traversal——Difficulty:Medium