mvc文件夹压缩|springmvc文件上传可以是zip吗

① springmvc文件上传可以是zip吗

Spring MVC文件上传框架是支持zip的,还包括text、xls、word等文件格式,但一般文件大小都有一定的限制,如下文件上传zip格式的代码:

packagecom.test.controller;importjava.io.File;importjava.util.Map;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.servlet.http.HttpSession;importorg.apache.commons.io.FilenameUtils;importorg.apache.commons.lang3.ArrayUtils;importorg.apache.commons.logging.Log;importorg.apache.commons.logging.LogFactory;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RequestMethod;importorg.springframework.web.bind.annotation.RequestParam;importorg.springframework.web.bind.annotation.ResponseBody;importorg.springframework.web.multipart.commons.CommonsMultipartFile;importcom.test.servlet.NoSupportExtensionException;importcom.test.servlet.State;@Controller@RequestMapping(value="/mvc")publicclassUploadController{/**日志对象*/privateLoglogger=LogFactory.getLog(this.getClass());=1L;/**上传目录名*/="uploadFiles";/**允许上传的扩展名*/privatestaticfinalString[]extensionPermit={"txt","xls","zip"};@RequestMapping(value="/upload.do",method=RequestMethod.POST)[email protected]<String,Object>fileUpload(@RequestParam("file")CommonsMultipartFilefile,HttpSessionsession,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{logger.info("UploadController#fileUpload()start");//清除上次上传进度信息StringcurProjectPath=session.getServletContext().getRealPath("/");StringsaveDirectoryPath=curProjectPath+"/"+uploadFolderName;FilesaveDirectory=newFile(saveDirectoryPath);logger.debug("Projectrealpath["+saveDirectory.getAbsolutePath()+"]");//判断文件是否存在if(!file.isEmpty()){StringfileName=file.getOriginalFilename();StringfileExtension=FilenameUtils.getExtension(fileName);if(!ArrayUtils.contains(extensionPermit,fileExtension)){("NoSupportextension.");}file.transferTo(newFile(saveDirectory,fileName));}logger.info("UploadController#fileUpload()end");returnState.OK.toMap();}}

② ASP.NET中的MVC如何使用

上面的这位同学在回答什么我都没明白,他都没说报错你就知道是单元测试报错?开玩笑这样的一概而论还说自己非常全面的研究了MVC?ASP.NET在创建项目的时候可以创建一个MVC得框架然后会提示是否创建测试选择否然后创建一个MVC。然后你可以运行一下看下效果。在URL路由方面Controllers->HomeControllers.cs->创建新方法返回ViewResult()->Views->Home->创建新页面->Shared->site.Master->添加《%:Html.ActionLink("方法名称","页面名称","Home")%》-》运行。一般在HomeCollers.cs里面创建的方法名和Views文件夹得Home下面创建的页面的名字是相同的。

③ MVC中文件放置问题,MVC中的controllers.cs文件一定要放到Controllers文件夹里面吗

可以这么考虑!@镭毅不懂不要胡乱说,mvc会在运行时搜索你毁贺整个程序引用的dll里面的类,只要是非抽象类、实现了IController接口,而且名字是Controller结答念尾的类清余困,都会被自动作为Controller添加到ControllerFactory,所以你的类只要符合这几个条件并且扔到bin目录下面,就可以被mvc认出来

④ ASP.NET MVC4大文件下载的问题

刚碰到这个问题,下面的代码可以直接拷贝使用。 protected void Page_Load(object sender, EventArgs e) { DownFile1(@"D:\常用软件\win7.iso", "win7.iso"); } private void DownFile1(string filePath, string fileName) { ResponseFile(this.Request, this.Response, fileName, filePath, 1024000); } // 输出硬盘文件,提供下载 // 输入参数 _Request: Page.Request对象, _Response: Page.Response对象, _fileName: 下载文件名, _fullPath: 带文件名下载路径, _speed 每秒允许下载的字节数 // 返回是否成功 public static bool ResponseFile(HttpRequest _Request, HttpResponse _Response, string _fileName, string _fullPath, long _speed) { try { FileStream myFile = new FileStream(_fullPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); BinaryReader br = new BinaryReader(myFile); try { _Response.AddHeader("Accept-Ranges", "bytes"); _Response.Buffer = false; long fileLength = myFile.Length; long startBytes = 0; int pack = 10240; //10K bytes //int sleep = 200; //每秒5次 即5*10K bytes每秒 int sleep = (int)Math.Floor((double)(1000 * pack / _speed)) + 1; if (_Request.Headers["Range"] != null) { _Response.StatusCode = 206; string[] range = _Request.Headers["Range"].Split(new char[] { '=', '-' }); startBytes = Convert.ToInt64(range[1]); } _Response.AddHeader("Content-Length", (fileLength – startBytes).ToString()); if (startBytes != 0) { _Response.AddHeader("Content-Range", string.Format(" bytes {0}-{1}/{2}", startBytes, fileLength – 1, fileLength)); } _Response.AddHeader("Connection", "Keep-Alive"); _Response.ContentType = "application/octet-stream"; _Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(_fileName, System.Text.Encoding.UTF8)); br.BaseStream.Seek(startBytes, SeekOrigin.Begin); int maxCount = (int)Math.Floor((double)((fileLength – startBytes) / pack)) + 1; for (int i = 0; i < maxCount; i++) { if (_Response.IsClientConnected) { _Response.BinaryWrite(br.ReadBytes(pack)); Thread.Sleep(sleep); } else { i = maxCount; } } } catch { return false; } finally { br.Close(); myFile.Close(); } } catch { return false; } return true; }

⑤ ASP.NET MVC简单编程篇

ASP NET MVC概念

ASP NET MVC 是微软官方提供的MVC模式 说白了 ASP NET MVC知识开发ASP NET Web

应用程序的一个框架而已 而且其只是一个表示层框架 同时也是微软的第一个开源项目

使用ASP NET开发web应用程序方式

WebForm方式

Asp Net MVC 方式

注意 WebForm方式和Asp Net MVC方式是使用开发web应用程序的两种并行方式 mvc(以下简称mvc)的目的并不是取代WebForm 而是web开发的另外一种选择而已

MVC模式简介

MVC模式是一种表现模式 它将web应用程序分成三个主要组件 即 视图(View) 控制器(Controller)和模型(Model)

M Model主要是存储或者是处理数据的组件

Model其实是实现业务逻辑层对实体类相应数据库操作 如CRUD(Create/Retrieve/Update/Delete) 它包括数据 验证规则 数据访问和业务逻辑等应用程序信息

V View是用户接口层组件 主要是将Model中的数据展示给用户

C Controller处理用户交互 从Model中获取数据并将数据传给指定的View

要点

M和V的实现代码分离 从而使吵轿同一个程序可以使用不同的表现形式 C存在的目的则是确保M和V的同步 一旦M改变 V应该同步更新

控制器隔离了业务逻辑和View耦合 使得业务逻辑和数据规则等很容易改变而不影响到芦碰局前台页面

View和Controller都可以直接请求Model 但是Model不依赖View和Controller

Controller可以直接请求View来显示具体页面 View不依赖Controller

第一个Asp Net MVC程序

案例 下面我们通过向EFFirst数据库的Customer表中添加数据数据并且将所有用户信息展示到对应页面的方式 来书写第一个Asp Net MVC应用程序

Customer表结构

CustId(客户编号) 主键自动增长

CustName(客户姓名)

CustAddress(客户地址)

首先创建MVC 的项目

对解决方案点右键 新建项目 如下图

将项目名称命名为MyMVC 然后点击确定 如下图

选择否 点击确定

接下来对项目的目录结构进行剖析

App_Data;在该文件夹下的文件是不同通过URL访问的 起到保护文件的作用

Content:项目用到的素材和样式等的文件夹 例如我们可以将Image文件夹和Css文件夹放到Content文件夹中

Controllers:控制器存储文件夹

Models 模型存放文件夹

Scripts js(javascript)文件存储文件夹

Views 视图存放文件夹

创建控制器UserInfoController

创建视图Register

Register页面对Controller发起请求 请求可以分两种 get和post 所以我们写了两个action 为了方便后续操作 我们可以对action写一个重载 无参的Register()用来处理get请求 带参数的Register(FormCollection collection)用来处理post请求 如下图

然后对无参的Register点右键 选择添陪让加视图菜单项

点击添加按钮 则在Views文件夹中会自动创建出一个名称为UserInfo(和action所在的控制器名称相同)的文件夹 并且在该文件夹下创建一个名称为Register的aspx文件 注意 这里的aspx文件没有后缀名为 cs的文件

在Register中书写代码如下所示

既然是注册页面 必须将用户输入的信息提交到服务器 此时我们可以使用form表单 为其action属性设置属性值为 /UserInfo/Register UserInfo代表的是UserInfoController Register代表UserInfoController下的action 也即是说我们将信息提交到了Register这个action

用户填写完信息后 流程跳转到了UserInfoController 此时我们可以在接收Post请求的action中书写如下代码

说明 return RedirectToAction( Index )作用是跳转到名称为Index的action继续执行

创建action Index和视图Index

用同样的方式对Index点右键 创建View Index

<style type= text/css > th td { text align: center; } </style> <h >微冷的雨 用户详细信息页面</h > <h >由于顾客的数据肯定会出现多条 因此使用table显示</h > <table width= % > <thead> <tr> <td>编号</td> <td>用户姓名</td> <td>用户地址</td> </tr> </thead> <tbody> <% foreach (var item in (IEnumerable<Customer>)ViewData[ Customer ]) {%> <tr> <td><%:item CustId %></td> <td><%:item CustName %></td> <td><%:item CustAddress %></td> </tr> <%} %> </tbody> </table> View Code 最终我们可以实现如下效果 lishixin/Article/program/net/201311/12164

⑥ 关于MVC中多级文件夹路由设置问题

routes.MapRoute("test", // 路由名称"Admin/Manage/MemberManage/BaseInfo/{id}",new { controller = "MemberManage", action = "BaseInfo", id = UrlParameter.Optional });比如你的请求是Admin/Manage/MemberManage/BaseInfo/1它会在你定义好的route表里找出匹配的,然后根据你定义的controller,action去查找视图[action]/Controllers/MemberManageController – > BaseInfo[view]~/Views/{controller}/{action}.aspx

⑦ 请教各位mvc的js打包压缩有关的问题

1.引用js文件,如果有.min.js和.js文件 最好只引用.js文件 而不去引用.min.js文件,因为系统在Release之后会自动去查找相应的.min.js文件的 而在debug时会引用.js文件 这样方便调试2.确定文件是否存在,如果不存在,知道怎么改了吧??3.我发现楼主还不了解BundleConfig的使用方法。new StyleBundle("绑定实例名") 这里明明是名称,但为什么这名称看起来像路径比如你这里的 new StyleBundle("~/Index/css_easyui")为什么会像路径??这是有原因的当你在Release之后 BundleConfig会把你这个Include中的所有文件进行压缩成一个文件,但这个袜余文件的路径是什芹好缓么,就是这个"绑定实例名"也就是说 在这里,当你Release之后 你的嫌模css将会生成 <link type="text/css" rel="stylesheet" href="~/Index/css_easyui?随机数"/>接着说:如果 你的css文件~/Content/Css/themes/icon.css里面有句话:.cls{ background-image:url(../img/xxxx.gif);}发现问题没有呢? 在Release之前这个背景图的路径是:~/Content/Css/img/xxxx.gif而在Release之后 因为你的css文件已经整合到了~/Index/css_easyui?随机数这个文件里面所以Release之后这个图片路径却变成了:~/img/xxxx.gif

⑧ 如何用gzip的格式压缩jQuery的POST数据

这是后端和服务器要考虑的事情,

不同的后端技术还不一样,

对于tomcat服务器,打开conf文件夹下的server.xml 文件

<Connectorport="8080"protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443"/>

修改为

<Connectorport="8080"protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443"compression="on"compressionMinSize="2048"noCompressionUserAgents="gozilla,traviata"compressableMimeType="text/html,text/xml,text/javascript,application/x-javascript,application/javascript,text/css,text/plain"/>

对于node.js服务器,不同的mvc框架有不同的封装

//expressvarcompression=require('compression');varexpress=require('express');varapp=express();app.use(compression());//node。js主要采用zlib

nginx开启gizp

1、Vim打开Nginx配置文件vim/usr/local/nginx/conf/nginx.conf2、找到如下一段,进行修改gzipon;gzip_min_length1k;gzip_buffers416k;#gzip_http_version1.0;gzip_comp_level2;gzip_typestext/plainapplication/x-javascripttext/cssapplication/xmltext/javascriptapplication/x-httpd-phpimage/jpegimage/gifimage/png;gzip_varyoff;gzip_disable"MSIE[1-6].";3、解释一下第1行:开启Gzip第2行:不压缩临界值,大于1K的才压缩,一般不用改第3行:buffer,就是,嗯,算了不解释了,不用改第4行:用了反向代理的话,末端通信是HTTP/1.0,有需求的应该也不用看我这科普文了;有这句的话注释了就行了,默认是HTTP/1.1第5行:压缩级别,1-10,数字越大压缩的越好,时间也越长,看心情随便改吧第6行:进行压缩的文件类型,缺啥补啥就行了,JavaScript有两种写法,最好都写上吧,总有人抱怨js文件没有压缩,其实多写一种格式就行了第7行:跟Squid等缓存服务有关,on的话会在Header里增加"Vary:Accept-Encoding",我不需要这玩意,自己对照情况看着办吧第8行:IE6对Gzip不怎么友好,不给它Gzip了

⑨ 什么是MVCMVC的各个部分都有哪些技术实现

MVC : Model – View – Control 分别代表模型, 视图,控制器。MVC 只是一个编程分层的概念,并不是什么编程技术喊陆,你用培租ASP,PHP,JAVA,.NET 都可配渗兆以实现。其中M 与数据库打交道,封装数据操作,只提供接口给 C C 是路由控制器,负责程序的来龙去脉动,连接 M 与 V V 是视图,负责接收C传过来的参数并显示给用户MVC 只要你写好M,C,用模板技术,如 SMARTY 分离出数据与模板即是一个简单的 MVC 框架,我本身也有写 MVC 框架,前后台分离,但共用类库,M与C 都写在共用的文件夹里,统一调用,前后台有各自的V,用SMARTY 分离实现,多模板,多语言切换

⑩ Web Api及MVC性能提升的几个小技巧

一、缓存为了避免每次请求都去访问后台的资源,我们一般会考虑将一些更新不是很频繁的,可以重用的数据,通过一定的方式临时地保存起来,后续的请求根据情况可以直接访问这些保存起来的数据,这种机制就是所谓的缓存机制。缓存分为页面输出缓存,内存数据缓存和缓存依赖等。从设计原则来说,易变性、敏感性的信息不适合进行缓存,同时缓存的内容也是易丢失的,在代码中不能完全依赖于缓存的数据,需要保证在缓存的数据丢失后也能进行正确的处理。1、页面输出缓存通过对输出的页面好森进行缓存,每次新的用户请求调用相同的 Action 时,相同的内容不需要重新创建一次而直接输出。页面输出缓存的使用非常友闭亩简单,在 Action 上使用 [OutputCache] 特性标记即可生效。页面输出缓存可控制缓存的内容所存储的位置,例如是在服务器端存储缓存的页面内容还是在客户端存储缓存的页面内容;也可使用 Duration 参数控制缓存的失效绝对时间和间隔时间,甚至能使用 VaryByParam 参数对不同的请求参数分别进行缓存。页面输出缓存非常适合于内容比较固定的前端页面的缓存。2、内存数据缓存通常情况下,数据是保存在数据库、磁盘文件等存储介质中的,而应用程序访问这些资源是一项很费时的操作。如果先将这些资源中的数据缓存到内存缓存区中,当应用程序需要这些数据时,直接从缓存区中提取,就可以减少系统开态余销,显著提高可使用的用户并发数等。内存数据缓存需考虑缓存的内容更改失效后如何清空其他已经被缓存的相关联的数据问题。3、EFCache众所周知,NHiberate 提供了二级缓存功能。现在,如果你使用的是 Entity Framework 6 或更高版本的 Entity Framework ,你也可考虑使用 EFCache 组件来为 Entity Framework 提供二级缓存支持,其实质上也是属于内存数据缓存。EFCache 的特点是使用上非常方便,仅需定义如下的代码无需其他复杂的额外的配置即可实现二级缓存。如需定义特定的缓存策略,如缓存的过期时间,控制数据缓存的范围,也仅需继承 CachingPolicy 类并 override 其部分方法即可。你甚至可以通过实现 ICache 接口来实现自定义的缓存模型以替换默认的 InMemoryCache 。二、Stream压缩对响应流进行压缩,其作用是减少网络开销,提高系统的响应速度。目前的浏览器通常都支持 gzip 和 deflate 压缩解压功能,因此你通常无效考虑浏览器的兼容性问题。启用 gzip 和 deflate ,既可通过 IIS 配置实现,在 MVC 中也可通过编写自定义的 ActionFilter 实现。在压缩之前和压缩之后 Stream 的大小差异通常都是惊人的,其压缩率通常都在5-10倍以上。三、js和css文件的压缩和打包1、js 和 css 文件的压缩其实质就是生成较小的文件,减小下载这些文件的网络开销,提供系统的响应速度。压缩 js 和 css 文件还有个好处是通常还可以起到代码混淆的作用。在 YbSoftwareFactory 的 MVC 解决方案中,使用的是 Microsoft Ajax Minifier 组件,可在代码编译的过程中自动对所配置的 js 和 css 进行压缩,基本上文件的大小都可减少一半以上2、js、css文件的打包其目的是进行 js 文件和 css 文件的合并,当前主流浏览器的并发连接数默认情况下通常都是 6 个,如果前端页面同时请求的服务器资源(如 img 文件、js 文件、css 文件以及各类 url 请求等)超过6个,通常就需要进行排队下载。进行 js 文件、css 文件的打包合并,通常可以在一次请求中就完成未打包之前需多次请求才能完成的工作,通过减少前端浏览器的连接请求,在某种意义上也是可提高系统的响应速度的。


赞 (0)