springmvc 怎么将文件上传到linux服务器

springmvc 怎么将文件上传到linux服务器,第1张

Spring MVC为文件上传提供了直接的支持,这种支持是通过即插即用的MultipartResolver实现的。Spring使用Jakarta Commons FileUpload 技术实现了一个MultipartResolver实现类:CommonsMultipartResolver。

Spring MVC上下文中默认没有装配MultipartResolver,因此默认情况下不能处理文件的上传工作。如果想要使用Spring的文件上传功能,需要先在上下文中配置MultipartResolver。

第一步:配置MultipartResolver

使用CommonsMultipartResolver配置一个MultipartResolver解析器:

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"

p:defaultEncoding="UTF-8"

p:maxUploadSize="5242880"

p:uploadTempDir="/upload/temp"

/>

defaultEncoding必须和用户JSP的pageEncoding属性一致,以便正确读取表单的内容。uploadTempDir是文件上传过程所使用的临时目录,文件上传完成后,临时目录中的临时文件会被自动清除。

第二步:编写文件上传表单页面和控制器

JSP页面如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<%

String path = request.getContextPath()

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<base href="<%=basePath%>">

<title>My JSP 'index.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">

<meta http-equiv="cache-control" content="no-cache">

<meta http-equiv="expires" content="0">

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

<meta http-equiv="description" content="This is my page">

</head>

<body>

<h1>选择上传文件</h1>

<form action="<%=basePath%>user/upload.do" method="post" enctype="multipart/form-data">

文件名:<input type="text" name="name" /><br/>

<input type="file" name="file" /><br/>

<input type="submit" />

</form>

</body>

</html>

注意:负责上传的表单和一般表单有一些区别,表单的编码类型必须是"Multipart/form-data"

控制器UserController如下:

package com.web

import java.io.File

import java.io.IOException

import org.springframework.stereotype.Controller

import org.springframework.web.bind.annotation.RequestMapping

import org.springframework.web.bind.annotation.RequestParam

import org.springframework.web.multipart.MultipartFile

@Controller

@RequestMapping(value = "/user")

public class UserController {

@RequestMapping(value = "/upload.do")

public String updateThumb(@RequestParam("name") String name,

@RequestParam("file") MultipartFile file)

throws IllegalStateException, IOException {

if (!file.isEmpty()) {

file.transferTo(new File("d:/temp/"

+ name

+ file.getOriginalFilename().substring(

file.getOriginalFilename().lastIndexOf("."))))

return "redirect:success.html"

} else {

return "redirect:fail.html"

}

}

}

Spring MVC会将上传文件绑定到MultipartFile对象中。MultipartFile提供了获取上传文件内容、文件名等内容,通过transferTo方法还可将文件存储到硬件中,具体说明如下:

byte[] getBytes() :获取文件数据

String getContentType():获取文件MIME类型,如image/pjpeg、text/plain等

InputStream getInputStream():获取文件流

String getName():获取表单中文件组件的名字

String getOriginalFilename():获取上传文件的原名

long getSize():获取文件的字节大小,单位为byte

boolean isEmpty():是否有上传的文件

void transferTo(File dest):可以使用该文件将上传文件保存到一个目标文件中

源码:uploadtest.zip

区别:

一、ASP.NET是一个网站开发的技术,是.NET框架中的一个应用模型。(历史挺长远的)使用ASP.NET开发Web应用程序并维持其运行,比其他开发语言更加简单。与Java、PHP和Perl等高级技术相比,ASP.NET具有方便性、灵活性、生产效率高、安全性高及面向对象等优点,是目前主流的网络编程技术之一。

MVC与ASP.NET完全没有关系,是一个全新的Web开发,事实上ASP.NET是创建WEB应用的框架而MVC是能够用更好的方法来组织并管理代码的一种更高级架构体系,所以可以称之为ASP.NET MVC。可将原来的ASP.NET称为 ASP.NET Webforms,新的MVC 称为ASP.NET MVC。

MVC是软件架构的一种模式,可以说就相当于常说的设计模式。其中主要包括三个模块,顾名思义。就如MVC名字所显示的那样:模型(Model),视图(View),控制器(Controller)。mvc中的模型(Model)和视图(View )是完全区别于三层架构中的模型(Model)和视图(View)的。

二、Asp.net微软提供web开发框架或者技术。分Web Form和ASP.NET MVC。下面简单说明各自优缺点。

Web Form

优点:

WebForm优点

1、支持丰富的服务器控件。

2、支持视图状态,每个控件状态以“隐藏域”的形式存在当前表单页面来达到“有状态”,这就是ViewState

3、基于事件驱动编程,如:click事件等,aspx页面与cs文件分离,即显示逻辑与处理逻辑分离,便于分工,美工、编程。

4、学习成本低。

缺点:

1、站在项目架构的角度,web form不是很理想架构模式,尽管可以使用经典的三层架构或者mvp,但不是最优秀的。

2、性能viewstate成功解决了asp问题,但同样引入新的问题,viewstate页面存储势必增加页面大小、降低程序性能。

3、代码可重用性不好;缺少对并行开发支持,因为aspx页面与cs紧密耦合太高;Seo不友好,因为url指定具体aspx页面;不利于单元测试,因为使用大量事件处理函数。

ASP.NET MVC

Asp.net Mvc架构模式是一种低耦合、可测试的web应用程序框架,它是基于CLR和成熟的MVC架构构建的。ASP.NET MVC不支持ViewState和服务器控件。

优点:

1、有对数据直接访问的权利,如:对数据库的访问;

2、模型(Model)“不依赖”视图(View)和控制器(Controller),即模型(Model)不关心它会被如何显示或者如何被 *** 作;

3、模型(Model)中数据的变化一般会通过一种刷新机制被“公布”;

4、为了实现3中的“机制”用于监视此模型的视图必须事先在此模型上注册。从而,视图可以了解在数据模型上发生的改变。

缺点:

没有viewstate和基于事件的编程,上手慢,学习成本高。

三、使用场景:

1、快速开发------&gtweb form

2、单元测试、性能--------&gtmvc

3、大量使用js、jquery------&gtmvc

4.、代码重用性-------&gtmvc

四、WebForm的开发方式

服务器端控件

一般处理程序+Html静态页+Ajax

一般处理程序+Html模板

五、模型不同

WebForm模型

MVC请求模型

DomainModel–领域模型:不仅仅是一个实体类,而是整个业务才处理流程的一个规则。

六、ViewState处理

ASP.Net MVC的开发方式。

2009年第一个开源项目版本发布。

更加简洁,更加接近原始的“请求-处理-响应”。

更加开发、更多的新的特点、社区活跃。

不会取代WebForm。

底层跟WebForm都是一样的。管道上不同的处理而已。

MVC只是表示层的一种新的方式。

MVC是微软2009对外公布的第一个开源的表示层框架,这是微软的第一个开源项目。

MVC目的不是取代WebFrom开发,只是web开发的另外一种选择。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/7611014.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-07
下一篇 2023-04-07

发表评论

登录后才能评论

评论列表(0条)

保存