当前位置: 首页 > news >正文

微信平台微网站开发设计网站源码

微信平台微网站开发,设计网站源码,做网站可以用什么数据库,泉州seo培训1 概述Spring Boot上传文件,根据官方uploadfile示例修改的,可以打成war放到服务器上(笔者使用的是Tomcat).主要步骤是创建异常类,属性类,接口类与控制器类,最后进行少量修改打包部署到服务器上.2 环境win10Tomcat 9.0.30IDEA 2019.03Spring boot 2.2.2 RELEASE3 新建工程选择sp…1 概述Spring Boot上传文件,根据官方uploadfile示例修改的,可以打成war放到服务器上(笔者使用的是Tomcat).主要步骤是创建异常类,属性类,接口类与控制器类,最后进行少量修改打包部署到服务器上.2 环境win10Tomcat 9.0.30IDEA 2019.03Spring boot 2.2.2 RELEASE3 新建工程选择spring initializer:改一下包名,打包选项这里可以jar可以war,选jar的话可以在build的时候再生成war.这里用的是模板引擎Thymeleaf,选择spring web与Thymeleaf.最后点击finish.4 新建包4个包,service,properties,controller,exception.5 exception处理两个异常,分别是存储异常与存储文件找不到异常.5.1 StorageExceptionpackage 5.2 StorageFileNotFoundExceptionpackage 这个构造函数中的cause是引起这个异常的异常,允许空值,如果是空值则表示这个引起这个异常的异常不存在或者未知.6 properties新建StorageProperties.java,设定存储文件的位置,就是location的值,可以使用../../这样的值,什么也不加的话会在项目路径下新建文件夹,若有同名的文件夹会被删除再重新创建.注意一下权限的问题,后面部署到Tomcat上面时可能会因为没有写权限而不能写入文件,要确保文件夹拥有写权限.package 这里使用ConfigurationProperties会报红,提示没有EnableConfigurationProperties:可以先不管,后面会在Main类中添加EnableConfigurationProperties(StorageProperties.class).7 service先加一个StorageService接口:package 然后新建一个FileSystemStorageService实现该接口:package 7.1 initOverride 使用java.nio.file.Files.createDirectories()创建存储目录,可以建立多级目录.7.2 deleteAllOverride 使用工具类FileSystemUtils的方法递归删除文件与文件夹.参数是一个File. 下面是方法源码:public 首先判断根是否为空,不为空的话判断是否是目录,不是目录的话直接删除,是目录的话,利用listFiles()获取所有文件及文件夹,判断是否为空并进行递归删除.7.3 loadOverride Path.resolve(String)返回相对于this的路径,具体来说,等于执行cd rootLocation 返回pwd的值.7.4 loadAllOverride Files.walk遍历目录,返回一个StreamPath,返回的Stream包含打开的一个或多个目录的引用,会在Stream关闭时关闭,第二个参数1表示遍历的最大深度.然后对这个Stream进行filter过滤,这里是把与rootLocation不相等的Path留下,注意是不相等,就是留下filter()中条件为真的Path,不是把条件为真的Path给删去.最后进行map,relativize返回参数相对于调用者的路径,这里是返回Stream中的每个Path相对于rootLocation的路径. 对于relativize,无论什么情况下:Path 都有a为真.7.5 loadAsResourceOverride 这里的Resource是org.springframework.core.io.Resource,是一个接口,可以通过它访问各种资源,实现类有UrlResource,InputStreamResource等,这里利用Path.toUri()把file转换为Resource后,判断这个源是否存在或者是否可读并返回,否则抛出存储文件找不到异常.7.6 storeOverride getOriginalFilename()获取文件原名字,然后通过StringUtils.cleanPath()将其标准化,.处理掉.与..,然后判断文件是否为空与是否包含相对路径,没有的话利用Files.copy()进行复制,resolve获取filename相对于rootLocation的值,复制选项是REPLACE_EXISTING. StandardCopyOption有三个可选值: - ATOMIC_MOVE:原子性的移动操作,一般在移动文件或目录时使用. - COPY_ATTRIBUTES:复制属性,可以保留源文件或源目录的属性. - REPLACE_EXISTING:替换已存在的文件.8 controller新建FileUploadController.package 8.1 listUploadedFilesGetMappingGetMapping是RequestMapping(method RequestMethod.GET)的简化写法,将HTTP GET路径映射到特定的处理方法上. 方法的参数是spring MVC中的Model,Model实质上是一个Map,添加的key可以在视图中用${key}获取值,比如,这里添加了files作为key,则在视图中可用 ${files}获取值.MvcUriComponentsBuilder可以为Controller指定uri,fromMethod简单地说就是会调用FileUploadController的serveFile(),参数是path.getFileName().toString(),由于serveFile()返回的是StreamPath,利用Stream的collect将其转换成List添加到model中,然后返回uploadForm,表示这是视图的名称,会到resource/templates下寻找.这里说一下RequestMapping与Model:8.1.1 RequestMapping可以用RequestMapping()来映射URL,可以映射到某个类或某个具体方法.RequestMapping常用的有以下属性: value:请求的URL路径,支持URL模板,正则表达式.method:HTTP请求方法,如GET,POST,PUT,DELTE等.consumes:允许的媒体类型,如consumesapplication/json.对应于HTTP请求的Content-Type.produces:相应的媒体类型,如producesapplication/json,对于HTTP请求的Accept. params:请求参数,如paramsactionupdate. - headers:请求头.Spring提供了简化的RequestMapping,提供了新的注解来标识HTTP方法: - GetMapping - PostMapping - PutMapping - ...所以这里的GetMapping是简化了的RequestMapping.8.1.2 Model可以向Model添加视图所需要的变量,Model主要有以下方法:Model addAttribute()添加一个变量,对于两个参数的,使用name作为变量名称,后面的是值,对于只有一个Object的,变量的名字就是类名字首字母小写后转为的java变量. addAttributes()添加多个变量,如果变量存在则覆盖,其中参数为Collection?的方法添加变量名时与addAttribute(Object)的命名规范类似. mergeAttributes()也是添加多个变量,不过变量已存在的话会忽略. containAttributte()判断是否存在变量.8.2 serveFileGetMapping这里的GetMapping用来表示显示的用来供下载的文件名,ResponseBody表示直接返回内容而不是视图名,因为默认返回的是视图名称,ResponseBody对于String直接返回,否则默认使用Jackson进行序列化.PathVariable表示这是GetMapping中的参数的值,可以省略,默认同名,就是形参的名字与GetMapping中的名字一样,从中取值赋给形参,通过filename加载资源后,作为ResponseEntity的请求体. ResponseEntity从HttpEntity继承而来,ResponseEntity.ok()是一个静态方法,表示构建一个状态为ok的ResponseEntity,然后添加请求头.HttpHeaderscontent_disposition表示文件是直接在浏览器打开还是下载,attachment表示是要下载,文件名为file.getFilename().8.3 handleFileUploadPostMappingPostMapping()与GetMapping()类似,只不过方法不是GET而是POST.RequestParam表示请求参数,里面的是请求参数的名字,使用MultipartFile来处理文件上传. RedirectAttributes是用于重定向使用的,可以附带参数,RedirectAttributes有两种带参的形式:addAttributeaddAttribute()相当于直接在重定向的地址添加name这样的形式,会将参数暴露在重定向的地址上.而addFlashAttribute()隐藏了参数,只能在重定向的页面中获取参数的值,用到了session,session跳转到页面后就会删除对象. handleFileUpload首先保存文件,然后添加一个保存成功的信息,由于Controller中重定向可以返回以redirect:或以forward:为前缀的URI,因此返回redirect:/,重定向到根.8.4 handleStorageFileNotFoundExceptionHandlerExceptionHandler()注解会处理Controller层抛出的所有StorageFileNotFoundException类及其子类的异常,ResponseEntity.notFound()相当于返回404标识码.9 mainpackage 在原来的基础上添加EnableConfigurationProperties与Bean EnableConfigurationProperties可以为带有ConfigurationProperties注解的Bean提供有效的支持,将带有Configuration注解的类注入为Spring的Bean,在这里是使StorageProperties的ConfigurationProperties生效,如果没有这一行会报红:Bean标注在方法上,等价于spring的xml配置文件的bean,注册bean对象. CommandLineRunner接口用于应用初始化后去执行一段代码逻辑,这段代码在整个应用周期只执行一次.10 application.properties这里可以设置一些环境配置属性,Spring Boot允许准备多个配置文件,在部署时可以指定那个配置文件覆盖默认的application.properties.这里是有关上传文件的设置:默认如下:springenabled表示允许上传,file-size-threshold表示上传文件超过一定长度就先写入临时文件,单位MB或KB,location是临时文件存放目录,不设定的话使用web服务器提供的临时目录.max-file-size表示单个文件最大长度,默认1MB,max-request-size为单次HTTP请求上传的最大长度,默认10MB,resolve-lazily表示文件和参数被访问的时候再解析成文件.在这里只需把max-size调大一点即可.11 测试这是在本地进行的测试.直接在IDE上点击运行应用,然后打开浏览器输入:localhost:12 打包部署到Tomcat上Spring Boot通常打成jar包或war包,这里部署到Tomcat上的是打成war包.12.1 改变打包方式pom.xml中,packaing改成war:12.2 去除Tomcat依赖Spring Boot默认自带了一个嵌入式的Tomcat,需要把Tomcat依赖方式改为provided. pom.xml中,在dependencies添加:dependency12.3 修改Main类修改Main类,让其继承SpringBootServletInitializer,重载configure(),同时main()保持不变.SpringBootApplication 12.4 路径问题这个很重要,设置不当的话就无法访问了,主要就是四个路径: - action:GetMappingPostMappingredirect12.4.1 action这个是绝对路径,要加上/war项目名./war项目名/上传路径名比如这里war项目名是kr,上传路径名是upload.12.4.2 GetMapping这个是相对路径,相对于当前项目的路径,不用加上/war项目名./上传路径名这里是upload.12.4.3 PostMapping与GetMapping一样,上传路径名./上传路径名12.4.4 redirect这个是返回的重定向的路径名,相对路径,与上两个一样,也是上传路径名./上传路径名12.5 设置打包名字在build中添加finalName,指定打包出来的war名,注意这个要与上面的war项目名一样,这里设置的是kr.12.6 Maven打包运行mvn 即可打包,对于IDEA,可以在IDEA右侧栏的Maven中,打开Lifecycle,选择package:12.7 打包完成打包后的war默认放在target下,名字默认为artifactIdversion.12.8 上传到服务器上传的话笔者用的是密钥认证的scp:id_rsa kr.war usernameip:/usr/local/tomcat/webapps放到服务器的Tomcat下的webapps目录.12.9 开启Tomcat进入到Tomcat目录的bin下:cd /usr/local/tomcat/bin ./startup.sh如果正在运行的话就不用启动了,因为会自动检测到webapps目录的变化,把新的war自动解包.12.10 测试略,与本地测试类似,不过要注意的是上传的文件夹是在tomcat/bin下,想要修改的话可以修改StorageProperties的location.13 源码github码云14 参考1.ConfigurationProperties2.CommandLineRunner3.RedirectAttribute
http://www.huolong8.cn/news/29088/

相关文章:

  • 做网站顺序百度引擎入口官网
  • 网站机房建设做个网站 多少钱
  • 网站开发公司如何拓展业务网站插件模块原理
  • 深圳网站快速排名优化用中文版wordpress建英文站
  • 怎么看一个网站做没做优化能看建设动漫黄图的网站
  • 火车头采集做网站赚钱岳阳网站优化
  • 网站打不开怎么做移动商城型网站开发
  • 常平镇网站建设公司国外设计网站dooor
  • 广州站停运最新消息网络热词缩写
  • 免费游戏网站建设游戏后台做网站标准步骤
  • 深圳网站设计收费标准html购物网站源码
  • 长沙网站制作哪怎么做搜索网站
  • 企业网站怎么做推广做网站用语言
  • 上传文档网站开发平台公司实体化转型
  • 大型网站开发人员广州seo排名外包
  • 政务网站建设情况汇报河北一建停考
  • 秦皇岛工程建设信息网站水果网站开发所需的成本
  • 像饿了码的网站建站有吗网站建设中标签导航的特征
  • 北镇网站建设网站开发 发表文章
  • 专业网站建设技术网站建设的定位
  • 网站上面的头像怎么做的安康做网站公司
  • 网站和网页有什么区别汇鑫小学网站建设
  • 叫别人建个网站多少钱wordpress单页制作
  • 网站忘记备案做一个公众号多少钱
  • 查信息的网站有哪些郑州全域静态管理
  • 亚马逊中国官网网站济南建站价格
  • 做门户网站代码质量方面具体需要注意什么百度付费推广
  • 海南旅游网站开发背景重庆地推团队外包
  • 常州个人网站建设建站行业消失了吗
  • 湖南省建设工程造价总站网站中瑞网络网站建设流程