1. 新建一个Dynamic Web Project:

2. 键入工程名UploadImage:

3. 选择Dynamic web module version :2.5

4. 点击“Finish”

5. 新建两个jsp文件:ImageUpload.jsp和ImageUploadHandler.jsp

6. 新建一个类,专门用来处理图片上传

新建一个包mytest:

在包下新建一个类FileUpload:

代码内容:

package mytest;

import java.awt.image.BufferedImage;

import java.io.*;

import java.awt.Image;

import com.sun.image.codec.jpeg.JPEGCodec;

import com.sun.image.codec.jpeg.JPEGImageEncoder;

public class FileUpload

{

public static void uploadImage(String imgFolderPath,String srcFileName,String dstFileName) throws IOException

{

//判断文件夹image是否存在,若不存在则创建

File folder = new File(imgFolderPath);

System.out.println("function 'uploadFileTest2'-imgFolderPath'"+imgFolderPath);

if(!folder.exists())

{

folder.mkdir();

System.out.println("maked a folder!");

}

File _file = new File(srcFileName); //读入文件

Image src = javax.imageio.ImageIO.read(_file); //构造Image对象

int wideth=src.getWidth(null); //得到源图宽

int height=src.getHeight(null); //得到源图长

BufferedImage tag = new BufferedImage(wideth,height,BufferedImage.TYPE_INT_RGB);

tag.getGraphics().drawImage(src,0,0,wideth,height,null);

FileOutputStream out=new FileOutputStream(dstFileName); //输出到文件流

JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);

encoder.encode(tag); //JPEG编码

out.close();

System.out.println("function 'uploadFileTest2'-status:A Image File Saved!");

}

}

发现报错:

找到代码的库Libraries:

打开rt.jar所在文件夹:

复制这个文件:

右键粘贴到WEB_INF\lib下:

效果:

没再报错。

7. 修改ImageUpload.jsp

说明:这个jsp文件,需要一个能选择文件的控件<input type=”file”

保存时出现问题:

改3个地方,全部改成gb2312:

8. 修改ImageUploadHandler.jsp

说明:这个jsp文件需要对从ImageUpload.jsp传过来的文件上传到服务器,并读取服务器上的图片文件,把它显示出来。

改几个地方:

(1)引入包及修改编码gb2312

(2)修改编码gb2312

(3)修改标题

(4)上传图片代码

<%

String filePath = request.getSession().getServletContext().getRealPath("");//获取该项目的真实路径

out.println(filePath+"<br/>");

String photo=request.getParameter("imgUpload");//获取file控件里的路径(绝对路径)

int indexOfLine = photo.lastIndexOf("\\");

String fileName = photo.substring(indexOfLine+1,photo.length());//文件名(含后缀,不包含路径信息)

String destFilePathAndName = filePath+"\\image\\"+fileName;//要保存文件的路径

FileUpload.uploadImage(filePath+"\\image\\",photo,destFilePathAndName);//上传图片到目的路径

String relativeFilePath = ".\\image\\"+fileName;//用来显示图片的相对路径

out.println(photo+"<br/>");

out.println(destFilePathAndName+"<br/>");

%>

(5)显示图片

上传的图片:<img src="<%=relativeFilePath%>" width=100 height=112 border=0 alt="image display"/>

(6)全版布局

9. 运行

选中ImageUpload.jsp这个文件,并点击“运行”三角形

出现问题:

看来一开始把版本设置成2.5无效。打开该项目所在目录:

技巧:右键项目,选择Properties:

看到Loacation:

复制这个路径,打开“我的电脑”并在地址栏上粘贴,回车:

打开.settings:

使用记事本打开这个XML文档:

把“jst.web”的version改成2.5

右键点项目,刷新一下:

:也可以安装一些插件,可以右键直接打开文件夹。

10. 重新运行

点击OK:

选择“Manually define a new server”,并选择一个Tomcat(因示例使用Tomcat 6.0,配置时看具体版本而定)

点击“Add”:

在Browse…选择安装Tomcat6.0的路径,点击“Finish”,离开这个对话框,并回到上一层对话框,再点击“Finish”开始运行。

出现问题:

关闭这个文件,重新点击运行(保证当前打开的文件是ImageUpload.jsp):

选择一个文件:

发现没有提交按钮,回去修改ImageUpload.jsp:

再次运行,运行后点击进行刷新:

点击“提交”:

删除调试信息及修改图片大小:

注释掉out:

加宽图片:

重新运行:

实际上,会出现图片能在eclipse内置的浏览器中正常显示,但却不能在外部浏览器中显示,原因在于,显示图片时用的文件必须是已经上传到服务器的图片,而不能是服务端的本地文件,而客户端是不允许直接访问服务器的本地文件,所以导致了错误,因此,在浏览器中检验一下:

复制选中的URL:

打开IE浏览器,在地址栏粘贴并回车:

选择一个文件:

点击“提交”:

OK!

:由于eclipse经常有一些Bug,所以,如果修改的代码总是不生效,可以考虑下面两种方法,“严酷”程序由低到高:

(一) 停止程序并清除编译文件

停止程序:

清除编译文件:

(二) 最狠的莫过于重启eclipse,不过,这仍不失为一个相当有效而又没法解释的好办法。

转载于:https://www.cnblogs.com/xiaxiazl/archive/2012/03/28/2420972.html

如何在Jsp上传图片相关推荐

  1. jsp java 上传图片_如何在Jsp上传图片

    1. 新建一个Dynamic Web Project: 2. 键入工程名UploadImage: 3. 选择Dynamic web module version :2.5 4. 点击"Fin ...

  2. jsp在mysql中删除数据_如何在jsp页面中删除数据库中的数据

    如何在jsp页面中删除数据库中的数据 各位大虾! 我想在jsp页面上写一个按钮功能,从而动态的删除数据库中的一行数据. 不知道怎么实现 这是我写的一段代码 数据库是MySql UserBean p3= ...

  3. 如何在jsp里面写java代码

    jsp和html相比,最显著的优势就在于,jsp里面可以写java代码,但是html中不能. 那么如何在jsp中写java代码呢! jsp中写java代码有如下三种方式: <%! %>,这 ...

  4. 如何在jsp中连接SQLserver数据库

    分享如何在jsp中连接SQLserver数据库(我这里用的是eclipse连接SqlServer2014) 前提:需要先把sqljdbc4.jar的包放在web-inf的lib包下(负责安装包,点击l ...

  5. jsp 图片上传到oracle,jsp上传图片到数据库(oracle),并能在页面上显示解决办法

    jsp上传图片到数据库(oracle),并能在页面上显示解决办法 jsp上传图片到数据库(oracle),并能在页面上显示解决办法 日期:2014-05-18 浏览次数:20341 次 jsp上传图片 ...

  6. [Jsp] 如何在JSP页面快速输出从Servlet接收的数据_看JSTL常用C标签的威力

    JSTL的常用C标签 1)c:out 单值输出 语法: <c:out value="" /> <c:out value=""></ ...

  7. 如何在JSP里自定义标签

    自定义标签是用户定义的JSP语言元素.当JSP页面包含一个自定义标签时将被转化为servlet,标签转化为对被 称为tag handler的对象的操作,即当servlet执行时Web containe ...

  8. 如何在JSP里使用Java bean

    JavaBean是特殊的Java类,是用Java语言写成的可重用组件,并且遵守JavaBeans API规范: 提供一个默认的无参构造函数. 需要被序列化并且实现了Serializable接口. 可能 ...

  9. vue 用jsp 还是html,如何在jsp页面里使用vue

    ## 只针对需要的 ### 以下各类同学可以直接跳过 - 不推荐jsp和vue加一起写的 - 说直接用jq写的 - .....的 - 吐槽的 - 各种解决方案的 ##### 总结以上说的都是对的,但是 ...

最新文章

  1. 一键发布部署vs插件[AntDeploy],让net开发者更幸福
  2. 杭电1597_find the nth digit
  3. ES6 Proxy的简单使用
  4. HDU - 7054 Yiwen with Formula 分治拆位FFT + dp + 费马小定理降幂
  5. 工作114:传参控制
  6. java notify唤醒原理_Java wait和notify虚假唤醒原理
  7. kotlin读取sd卡里的文件_如何在Kotlin中写入文件?
  8. 每天一个linux命令(16):witch命令
  9. tomcat 7服务器跨域问题解决
  10. 【开发】 eclipse汉化包
  11. 分享一种快速制作证件照的方法,只要你有自拍照就完全ok啦
  12. Hutool操作数据库的基本封装
  13. linux测试sata硬盘读写速度
  14. 前端三大框架React、Vue、Angular简述
  15. 高德h5定位误差_高德地图定位JS API不准确问题
  16. cesium添加天地图,从环境配置到加载天地图
  17. unison+inotify
  18. cmdb 指南_无限供应商制造商指南
  19. 第三方支付-核心交易之商户结算设计
  20. 振弦传感器及核心VM系列振弦采集模块

热门文章

  1. Netflix是如何构建代码的
  2. 计算图片的宽和高 动态设置图片的位置
  3. 知道Google map上面街景怎么来的吗?-相当强大
  4. Exchange2007 申请安装证书
  5. 2016谷歌官方最新eclipse工程导入studio,以前方式全部废弃。不能再使用。
  6. android addView的使用
  7. Android 高级Drawable资源---复合Drawable----变换Drawable
  8. 监控工具—Prometheus—基础介绍
  9. SpringBoot+Redis(实现处理热点数据)
  10. Linux中的mysql.redis