java servlet中 文件上传问题 和ssm框架中文件上传的一些回顾(2)

SSM框架基础入门学习1——servlet入门实例(包含mysql增查,实例免费下载) 暑期这段时间刚好有空,想把SSM框架的东西整理一下,所以准备写SSM入门的东西和大家一起学习,有什么问题请指出,我一定改正!!! 再整合SSM框架知识的时候,太多太杂,回过头来下发现基础是多么的重要。这篇文章将讲解servlet的基础知识,如何使用它。讲解过程更加注重工程应用方面,由于只是座一个简单的demo,所以代码结构一定会有问题,请您见谅。但是,通过demo一定要学懂servlet的运行机 阅读详情

ServletContext.getRealPath("");获得的是 改项目下的绝对路径。 若把项目放在tomcat 下 则  位置就在 webapps/项目名

ServletContext.getRealPath("/"); 和 ServletContext.getRealPath("");返回的路径没有区别。 

ServletContext.getRealPath("/image"); 这个会返回

这个相当于 webapps\recognition 拼接 getRealPath(“”)里面的内容。(recognition 是项目名)

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//response.getWriter().append("Served at: ").append(request.getContextPath());
		ServletContext servletContext = this.getServletContext();
		String savePath = servletContext.getRealPath("/image"); 
		
		//判断文件夹是否存在
		File file = new File(savePath);
		if(!file.exists() && !file.isDirectory()) {
			file.mkdir();
			
		}
		 //上传步骤:
		//即jar包为commons-fileupload.jar
		//commons-io.jar
        //1、创建一个DiskFileItemFactory工厂
        DiskFileItemFactory factory = new DiskFileItemFactory();
        //2、创建一个文件上传解析器
        ServletFileUpload upload = new ServletFileUpload(factory);
         //解决上传文件名的中文乱码
        upload.setHeaderEncoding("UTF-8"); 
        //3、判断提交上来的数据是否是上传表单的数据
        if(!ServletFileUpload.isMultipartContent(request)){
            //按照传统方式获取数据
            return;
        }
        //4、使用ServletFileUpload解析器解析上传数据,解析结果返回的是一个List<FileItem>集合,每一个FileItem对应一个Form表单的输入项
        List<FileItem> list;
		try {
			list = upload.parseRequest(request);
		
        for(FileItem item : list){
            //如果fileitem中封装的是普通输入项的数据
           if(item.isFormField()){
//           	
//           	
//           	 if("name".equals(item.getFieldName())) {
//           		 name =item.getString("UTF-8");
//           	 }
//           	 if("url".equals(item.getFieldName())) {
//           		 url = item.getString("UTF-8");
//           	 }
//           	 if("saytext".equals(item.getFieldName())) {
//           		 content = item.getString("UTF-8");
//           	 }
           	
           	 
               // String name = item.getFieldName();
              
                //解决普通输入项的数据的中文乱码问题
               // String value = item.getString("UTF-8");
                //value = new String(value.getBytes("iso8859-1"),"UTF-8");
             
            }else{//如果fileitem中封装的是上传文件
                //得到上传的文件名称,
                String filename = item.getName();
                System.out.println(filename);
                if(filename==null || filename.trim().equals("")){
                    continue;
                }
                //注意:不同的浏览器提交的文件名是不一样的,有些浏览器提交上来的文件名是带有路径的,如:  c:\a\b\1.txt,而有些只是单纯的文件名,如:1.txt
                //处理获取到的上传文件的文件名的路径部分,只保留文件名部分
                filename = filename.substring(filename.lastIndexOf("\\")+1);
                System.out.println(filename);
                //获取item中的上传文件的输入流
                InputStream in = item.getInputStream();
                //创建一个文件输出流 //此处可以重命名文件
                FileOutputStream out = new FileOutputStream(savePath + "\\" + filename);
               
                
                System.out.print(savePath+"\\"+ filename);
                //创建一个缓冲区
        
                byte buffer[] = new byte[1024];
                //判断输入流中的数据是否已经读完的标识
                int len = 0;
                //循环将输入流读入到缓冲区当中,(len=in.read(buffer))>0就表示in里面还有数据
                while((len=in.read(buffer))>0){
                    //使用FileOutputStream输出流将缓冲区的数据写入到指定的目录(savePath + "\\" + filename)当中
                    out.write(buffer, 0, len);
                }
                //关闭输入流
                in.close();
                //关闭输出流
                out.close();
                //删除处理文件上传时生成的临时文件
                item.delete();
               
                System.out.println("文件上传成功!");
            }
        }
		} catch (FileUploadException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
    	
		
    
		
		
	}

而框架中的上传文件及其简单

public @ResponseBody String upload(HttpServletRequest request,@RequestParam("file") MultipartFile file) {
		if(!file.isEmpty()) {
            //上传文件路径
		
            String path = request.getServletContext().getRealPath("/upload");
            System.out.println(path);
            //上传文件名
            String filename =  UUID.randomUUID().toString().replaceAll("-", "");//  文件名称
            String lastname = file.getOriginalFilename();      //获得文件的原来名字
            lastname = lastname.substring(lastname.length()-4); //获得后缀名 列 .png
            //组装
            String name = filename+lastname;
        
           
           
            
            
            File filepath = new File(path,name); 
            System.out.println(filepath);
            //判断路径是否存在,如果不存在就创建一个
            if (!filepath.getParentFile().exists()) { 
                filepath.getParentFile().mkdirs();
            }
            //将上传文件保存到一个目标文件当中
            try {
				file.transferTo(filepath);
			} catch (IllegalStateException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
          
            return "success";
        } else {
            return "error";
        }	
	}

 

SSM框架——常见问题及解决方案(1) 在SSM框架中,我遇到过的一些问题及其解决方法,以后如果还遇到问题会继续跟新。   一、 问题描述 Could not open ServletContext resource [/WEB-INF/Dispatcher-servlet.xml] 解决方案 注意< param-name>里的值必须是 contextConfigLocation 添加< init-param>... 阅读详情

相关推荐

Java+JSP+Servlet+Mysql实现ssm框架的选课系统(1)

Java+JSP+Servlet+Mysql实现ssm框架的选课系统(1)前言一、系统介绍1.功能介绍2.环境3.数据库二、系统展示1.登录注册页面2.主页面3.查看所有课程4.查看课程详情页5.查看已选课程6.查看已修课程7.按课程名搜索课程(模糊查询)8.个人中心9.修改密码总结 前言 这个系统是小组作业,我负责的功能是:登录,注册,数据库设计,部分后端(User+Buy+Course),代码整合。因为时间原因,有些系统功能设计上的逻辑问题没有完善,主要是实现对数据库的增删改查功能,所以仅供参考。

qq_45633913的博客 1336

Springmvc文件上传(servlet3.0)/下载(ssm)以及坑点

(补充:再linux服务器上可能没用创建文件的权限,那就需要找到文件夹给权限,比如我的chmod -R 777 /home/tomcat/apache-tomcat-default/webapps/food) 以前在servlet上写过文件上传和文件下载,最近由于需求需要集合到ssm中,有些坑点以前都忘记了。 文件上传:文件上传首先要在xml中配置上传信息,ssm有强大的过滤功能,你不声...

bigsai 5518

基于VisionMaster的药丸外观缺陷机器视觉检测系统实战解析

机器视觉作为工业自动化的核心技术,通过图像采集与智能分析替代人眼,实现高精度、高效率的在线检测。其核心原理在于利用相机、镜头、光源等硬件获取目标图像,再通过图像处理算法提取特征并进行识别与判断。这项技术的核心价值在于能够大幅提升生产质量与效率,尤其在需要高速、高精度且重复性强的检测场景中优势显著。在制药、食品、电子等行业的表面缺陷检测、尺寸测量、字符识别等环节应用广泛。本文聚焦于制药行业的药丸外观缺陷检测这一具体应用,深入探讨了如何利用海康威视VisionMaster视觉平台,结合**Blob分析**与**

weixin_32903229的博客 314

SSM实现文件上传

SSM实现文件上传

mwx523037520036的博客 480

Delphi开发者必备:CEF4Delphi跨平台浏览器嵌入实战指南(含Lazarus适配)

本文详细介绍了Delphi开发者如何利用CEF4Delphi实现跨平台浏览器嵌入,包括环境配置、Lazarus适配、ARM架构优化及Firemonkey集成等实战技巧。通过Chromium引擎的强大功能,开发者可以轻松为传统桌面应用添加现代浏览器特性,提升多平台开发效率。

weixin_29233333的博客 229

Python 中调用 R 语言的教程(包含编码问题解决办法)

rpy2 是一个 Python 库,允许在 Python 中直接运行 R 代码并实现数据转换。安装需确保 Python 和 R 环境正确配置,Windows 用户需注意编码问题(GBK 错误可通过控制面板调整区域设置解决)。基本用法包括执行 R 代码、传递数据(支持 Python 与 R 数据类型自动转换)以及调用 R 包函数。通过 robjects.r() 执行 R 代码,使用 pandas2ri 转换器处理 DataFrame 数据交换,并支持像导入 Python 模块一样加载 R 包(如 import

zygalaxy的博客 996

java文件上传ssm框架_基于SSM框架的文件上传

我整理了一下,这个办法在Servlet上应该也用得上。其实文件上传主要的问题是在于存储路径的拼接。这里我是把东西存在Web项目的WebContent目录下的下面贴一些代码目标应该是这样一个格式 Workspace\ProjectName\自定义目录\fileName于是就有下面三段代码然后直接拼接起来就行了。下面我直接贴代码吧首先是jsp的form部分选择文件然后是Controller部分@Req...

weixin_36340926的博客 262

揭秘大厂 Unity 红点系统设计:别小看右上角那颗小红点,它能把你项目搞崩

本文详细探讨了游戏大厂如何设计高性能红点系统。红点作为提升用户活跃和转化率的重要工具,需要支持多级联动、动态判断和全局一致性。系统采用观察者模式和树形结构,分为数据管理、逻辑判定、订阅通知和UI展示四大模块,通过事件驱动方式实现高效刷新。文章特别强调了解耦设计、配置化管理和性能优化,并提出了热更新、数据分析等高级应用场景。最终指出,优秀的红点系统需要架构标准化、自动化配置和团队紧密协作,是大型游戏项目的关键技术基础。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 378

Servlet文件上传

Servlet文件的上传

kakams_008的博客 202

三连杆平面机器人的动力学

0.前言 在这个例子中推导并实现三连杆平面机器人的运动方程。特别的,这里使用拉格朗日法推导运动方程。系统模型如下: 其中在枢轴点处Tm为驱动力矩【一般由伺服电机提供】; b*theta_d:为粘性阻尼扭矩 1、系统方程符号推导前--简介 首先明确欧拉-拉格朗日运动方程: 同样也可以根据作用在多体系统上的非保守力和非保守扭矩来定义广义力Qk。 作用在系统上的广义力的公式为: 其中: Qk:是与广义坐标关联的广义力 Nf_nc :是作用的非保守力的数量 Nt_nc:是作用的非保守扭矩的.

weixin_39090239的博客 4932

【ROS2】从yaml文件中读取参数配置

ROS2:从yaml中读取参数,到节点;使用C++演示参数的增、删、改、查、遍历、监听变化

郭老二 1285

对比传统Servlet技术和SSM框架的优缺点

对比传统Servlet技术和SSM框架的优缺点

Pursuit_li的博客 814

CloudCompare 二次开发(41)——点云重建三维凸包并计算体积

本文介绍了如何结合PCL与CloudCompare实现点云三维凸包的构建与可视化。通过代码集成,在CloudCompare界面添加功能按钮,实现点云数据转换、凸包构建、体积计算以及可视化显示。具体步骤包括:1) 在UI中添加功能按钮;2) 将点云数据转换为PCL格式;3) 使用PCL的ConvexHull算法构建三维凸包;4) 计算并显示凸包体积;5) 将结果以点云和网格形式可视化显示。最终实现了点云凸包的自动构建与体积计算功能,为点云处理提供了实用工具。

点云侠的博客 194

基于Servlet和SSM框架的文件上传下载的多种实现方法

文件上传:Servlet下实现:文件上传package TaskSubmit.Servlet; import java.io.*; import java.io.IOException; import java.sql.Connection; import java.sql.Statement; import java.util.List; import javax.servlet.Servle...

qq_39056805的博客 641

11.1华为OD机试真题 新系统 - 整理学生编号 (Java/Py/C/C++/Js/Go)

11.1华为OD机试真题 新系统 - 整理学生编号 (Java/Py/C/C++/Js/Go)

算法大师! 473

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Java文件上传:从Servlet到SSM间,有几种上传形式?

摘要 本文介绍了两种Java文件上传实现方式:1)基于Apache Commons FileUpload组件,通过ServletFileUpload和DiskFileItemFactory解析请求为FileItem列表,支持精细控制但代码量较大;2)原生Servlet API(3.0+),使用@MultipartConfig注解和request.getParts()方法,无需依赖但需手动解析Part头信息。两种方式均详细说明了关键步骤,并提供了完整代码示例,包括文件保存、流处理和异常处理等核心环节。

m0_64928156的博客 933

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

基于SSM框架的JavaWeb程序设计之初识Servlet

Servlet是运行在Web服务器端的Java应用程序,它使用Java语言编写。与Java程序的区别是,Servlet对象主要封装了对HTTP请求的处理,并且它的运行需要Servlet容器的支持。在JavaWeb应用方面,Servlet的应用占有十分重要的地位,它在Web请求的处理功能方面也十分强大。Servlet容器是指提供了Servlet功能的Web容器,如tomcat、resin、weblogic等。Servlet由Servlet容器进行管理。

qq_57930222的博客 1084

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

JAVA的三大框架是什么?

Java自1995年发布以来,凭借着其跨平台、面向对象、泛型编程的特性发展至今可以说无Java不大厂。目前国内所有的大厂或多或少都在使用Java进行后端服务开发。 一、Java开发的三大框架 在14年以前,行业内用得最多的Java三大框架是Struts、Spring和Hibernate ,简称SSH;14年以后逐步开始采用Spring、SpringMVC和MyBatis,简称SSM;而现在Java开发用得最多的框架其实是SpringBoot。那么他们具体有什么特点和区别呢? 1、SSH框架的特点

技术专家 1万+

java servlet和ssm_java mvc框架系列总结ssh,ssm,servlet

2016年10月3日 10:36:40一直以来都很想写属于自己的博客,一来可以分享自己的学习经验,二来可以及时总结,毕竟博客是写给所有人看的,需要更加仔细的注意每个细节,而不是仅仅让自己看懂。学了java也有6个月左右,感觉有必要把所学的总结一下,因为以后有可能从事.net。三层架构+servlet:首先启动项目,由于servlet3.0 版本新特性,不需要配置web.xml(没使用spring)...

weixin_33489161的博客 1162

SpringMVC基础学习之简单回顾MVC架构和Servlet的使用

前言: 小伙伴们,大家好,我是狂奔の蜗牛rz,当然你们可以叫我蜗牛君,我是一个学习Java半年多时间的小菜鸟,同时还有一个伟大的梦想,那就是有朝一日,成为一个优秀的Java架构师。 这个SpringMVC基础学习系列是用来记录我学习SpringMVC框架基础知识的全过程 (这个系列是参照B站狂神的SpringMVC最新教程来写的,由于是之前整理的,但当时没有发布出来,所以有些地方可能有错误,希望大家能够及时指正!) 之后我将尽量以两天一更的速度更新这个系列,还没有学习SpringMVC框架的小伙

weixin_45301250的博客 1230

SSM之前回顾

SSM之前的笔记综合

zhugeheihei的博客 609

jsp+servlet和SSM分别是如何实现文件上传(示例)

以下是两种java web开发中实现文件上传的方法,用

程序人生 2180

对传统的servlet和ssm框架的优缺点

Servlet是一种运行在支持Java语言的服务器上的组件,用于实现多种网络服务功能,为网络客户提供安全可靠、易于移植的动态网页。Servlet容器用于处理客户端的请求,并将处理结果返回给客户端。Sun公司在其API中提供了一个Servlet接口,发布一个动态web资源(动态网站)。简而言之,Servlet是为了实现Java语言的网络功能而存在的。 Servlet的优点 ① 是MVC的基础,其他的框架比如Struts1等都是从Servlet基础上发展过来的,所以掌握Servlet是掌握MVC的关键; ② S

weixin_73882343的博客 321

Web框架-SSM框架

三大问题 1.是什么? 答:Web框架或者叫做Web应用框架,是用于进行Web开发的一套软件架构,是一种开发框架, 2.作用是什么? 答:用来支持动态网站、网络应用程序及网络服务的开发。主要用于动态网络开发。开发者可以基于Web框架实现自己的业务逻辑。Web框架实现了很多功能,为实现业务逻辑提供了一套通用方法。 3.怎么用? 答:在进行数据缓存、数据库访问、数据安全校验等方面,不需要自己再重新实现,而是将业务逻辑相关的代码写入框架就可以。 4.现最流行框架? 答:1.Java目前的主流开发框架是ssm(sp

a23_23的博客 3715

Servlet、SSH、SSM及SpringBoot总结&投票

新开源项目征集投票 投票地址 感谢你的投票,后期会参考投票结果,开源项目源码。 前言 往期推送分别利用Servlet、SSH、SSM及SpringBoot技术实现了简单的登录、注册、增、删、改、查等功能,并介绍了基本技术原理,目的即是通过简单的Java项目实例对以上技术原理更深入的了解、学习,从而为复杂的系统项目的开发奠定基础以及面试时更能够对JavaWeb技术的把控。 以下4部分分别简要总结Servlet、SSH、SSM及SpringBoot的概念和优缺点,详细原理了解以及简...

我要学Java_blog 1614
上一篇: json-lib 关于json字符串转化为 复杂对象问题
下一篇: git的使用复习回顾
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值