第一步:javascript
搭环境,基本jdk 1.6+apache tomcat6.0+myeclipse2014 1.咱们要清楚本身的jdk版本。由于咱们Apache Tomcat配置的成功的前提是版本相对应。 安装jdk1.6是因为myeclipse中新建webproject时,有可能只有1.6和1.7两个选项,不过不一样的myeclipse版本应该不一样,以下图:
具体安装的jdk的过程和环境变量的设置就百度一下,教程不少,安装好了以后,查看一下版本,以下图:html
2.安装apache tomcat6.0,推荐安装压缩版,下载以后直接解压缩,而后设置一下环境变量就能够用了。
解压缩都随便一个盘都行,下图是个人路径:java
5.配置相关环境变量,因为本人以前已经配置了Java开发时环境,即JDK。所以JAVA_HOME就没必要再配置了
1)环境变量1:CATALINA_HOME,环境变量值:F:\tomcat-6.0.35
(环境变量值即为相应ZIP文件解压目录)
2)环境变量2:CATALINA_BASE,环境变量值:F:\tomcat-6.0.35
(与CATALINA相同)
3)环境变量2:TOMCAT_HOME,环境变量值:F:\tomcat-6.0.35
(与CATALINA相同)
4)环境变量3:CALSSPATH,修改环境变量值,在其后加上:%CATALINA_HOME%libservlet-api.jar;
5)环境变量4:PATH,修改环境变量值,在其后加上:%CATALINA_HOME%libservlet-api.jar;
图片展现:web
环境变量设置好了以后,须要修改一些tomcat的配置信息,路径:F:\tomcat-6.0.35\conf\server.xml如何跟下图同样的,能够不用修改:apache
上面的东西所有配置完成以后,能够启动一下tomcat,看是否配置成功,双击 F:\tomcat-6.0.35\bin目录下的startup.bat:api
这样就显示配置成功了,而后咱们能够访问一下tomcat自带的例子,打开浏览器输入localhost:80/index.html,80是端口号,可自行修改,如何没有修改过,则是8080,以下图所示:浏览器
3.安装myeclipse 2014,安装过程很简单,只分享一下安装包和破解包,破解包中自带破解教程,百度云连接https://pan.baidu.com/s/1c13JSdE 密码:3ji7tomcat
安装与破解完成以后,首先将myeclipse的编码格式改成UTF-8国际编码。
window->perferences 如图:app
因为myeclipse不会自动导入你配置好的jdk,须要手动配置,由于没有什么特殊的,直接百度配置教程:http://jingyan.baidu.com/arti...dom
myeclipse中配置tomcat和如何启动的教程也比较多,也好找,连接:http://jingyan.baidu.com/arti...
这是我配置好了后
点击上图中圆圈圈起来的图标,启动你本身导入的tomcat,而后矩形框是用来将你建立的web project映射到F:\tomcat-6.0.35\webapps目录下
新建一个web project
...]
而后映射到webapps目录下:
而后开始写代码:
首先将index.jsp的编码格式设置为UTF-8
而后导入jsp-api.jar,这个包在
index.jsp中的主要代码为
form 中action的值为与后面创建的servlet/JSP mapping URL一致,能够先创建了servlet再来修改这个值。
${result}这个显示上传状态,与后面在SmartUpload.java中有定义。
showPreView(this)方法是用来预览图片的。
<form action="SmartUpload.do" enctype="multipart/form-data" method="post"> <input id="img" type="file" name="file1" accept="image/*" capture="camera" onchange="showPreview(this)" style="height: 130px; width: 460px; "><br/> <input type="submit" value="提交" style="height: 48px; width: 90px; "><br/> <div id="preview"></div><br/> ${result} </form> </body> <script type="text/javascript"> var fileList=document.getElementById("preview"); function showPreview(obj){ var files = obj.files, img = new Image(); if(window.URL){ //File API //alert(files[0].name + "," + files[0].size/(1024*1024) + "MB"); img.src = window.URL.createObjectURL(files[0]); //建立一个object URL,并非你的本地路径 img.width = 200; img.onload = function(e) { window.URL.revokeObjectURL(this.src); //图片加载后,释放object URL } fileList.appendChild(img); } else if(window.FileReader){ //opera不支持createObjectURL/revokeObjectURL方法。咱们用FileReader对象来处理 var reader = new FileReader(); reader.readAsDataURL(files[0]); reader.onload = function(e){ // alert(files[0].name + "," +e.total/(1024*1024) + "MB"); img.src = this.result; img.width = 200; fileList.appendChild(img); } } else{ //ie obj.select(); obj.blur(); var nfile = document.selection.createRange().text; document.selection.empty(); img.src = nfile; img.width = 200; img.onload=function(){ // alert(nfile+","+img.fileSize/(1024*1024) + "MB"); } fileList.appendChild(img); } } </script>
新建servlet
创建成功了以后,能够看到web.xml中的一些自动配置好的信息:
SmartUpload.java
package com.upload; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.RandomAccessFile; import java.text.SimpleDateFormat; import java.util.Date; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class SmartUpload extends HttpServlet { // 定义容许上传的文件扩展名 private String Ext_Name = "gif,jpg,jpeg,png,bmp,swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb,doc,docx,xls,xlsx,ppt,htm,html,txt,zip,rar,gz,bz2"; //显示上传文件的结果 private String result=null; public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req,resp); } public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //获取上传文件流 InputStream fileSource=req.getInputStream(); //设置临时文件名 String tempFileName="F:/tempFile"; File tempFile=new File(tempFileName); //文件输出流,将上传的文件写入按字节流临时文件 FileOutputStream outputStream=new FileOutputStream(tempFile); byte b[]=new byte[1024]; int n; while((n=fileSource.read(b))!=-1){ outputStream.write(b,0,n); } outputStream.close(); fileSource.close(); //建立文件随机流,读取临时文件 RandomAccessFile randomFile=new RandomAccessFile(tempFile,"r"); //第一行的垃圾数据不须要 randomFile.readLine(); //在第二行中获取文件后缀名 String str=randomFile.readLine(); //获取文件后缀名 String fileExt=str.substring(str.indexOf(".")+1,str.lastIndexOf("\"")).toLowerCase(); // 检查扩展名 // 若是须要限制上传的文件类型,那么能够经过文件的扩展名来判断上传的文件类型是否合法 System.out.println("上传的文件的扩展名是:" + fileExt); if(!Ext_Name.contains(fileExt)){ System.out.println("上传文件扩展名是不容许的扩展名:" + fileExt); result = result + "上传文件扩展名是不容许的扩展名:" + fileExt + "<br/>"; randomFile.close(); RequestDispatcher dispatcher=req.getRequestDispatcher("index.jsp"); dispatcher.forward(req, resp); return; } //获得保存文件的名字 String filename=makeFileName(fileExt); //从新定位文件指针到文件头 randomFile.seek(0); long startPosition=0; int i=1; while((n=randomFile.readByte())!=-1&&i<=4){ if(n=='\n'){ startPosition=randomFile.getFilePointer(); i++; } } //startPosition=startPosition-1; //获取文件内容结束位置 randomFile.seek(randomFile.length()); long endPosition=randomFile.getFilePointer(); int j=1; while(endPosition>=0&&j<=2){ endPosition--; randomFile.seek(endPosition); if(randomFile.readByte()=='\n'){ j++; } } endPosition=endPosition-1; String savePath="F:/images"; File fileupload=new File(savePath); if(!fileupload.exists()){ fileupload.mkdir(); } //新建文件和文件名字 File saveFile=new File(savePath,filename); RandomAccessFile randomAccessFile=new RandomAccessFile(saveFile,"rw"); //从临时文件的当中读取文件内容 randomFile.seek(startPosition); while(startPosition<endPosition){ randomAccessFile.write(randomFile.readByte()); startPosition=randomFile.getFilePointer(); } //关闭输入输出流,删除临时文件 randomAccessFile.close(); randomFile.close(); tempFile.delete(); req.setAttribute("result","上传成功"); RequestDispatcher dispatcher=req.getRequestDispatcher("index.jsp"); dispatcher.forward(req, resp); } private String makeFileName(String fileExt) { // 将文件名定义为年月日秒便于区分 Date nowDate=new Date(); SimpleDateFormat matter1=new SimpleDateFormat("yyyyMdHms"); String timePattern =matter1.format(nowDate); System.out.println(timePattern); return timePattern+ "."+fileExt; } }
上传图片的页面效果: