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

SpringMVC之国际化上传下载

spring项目中的国际化

1)提供中英两种资源文件
i18n_en_US.properties
i18n_zh_CN.properties

2)配置国际化资源文件(在spring配置文件中添加,例如spring-mvc.xml)

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"><property name="basenames"><list> <value>i18n</value></list></property><!-- 不要忘了加上字符编码方式 --><property name="defaultEncoding" value="UTF-8"></property>
</bean>

注:
bean 的id必须为messageSource,属性名称必须为basenames
可在开发阶段使用ReloadableResourceBundleMessageSource它能自动重新加载资源文件

3)配置语言区域解析器

注:解析器类型

  • AcceptHeaderLocaleResolver(基于操作系统)
    Spring采用的默认区域解析器AcceptHeaderLocaleResolver。它通过检验HTTP请求的accept-language头部来解析区域。这个头部是由用户的web浏览器根据底层操作系统的区域设置进行设定。请注意,这个区域解析器无法改变用户的区域,因为它无法修改用户操作系统的区域设置。
  • SessionLocaleResolver(基于会话)
    它通过检验用户会话中预置的属性来解析区域。如果该会话属性不存在,它会根据accept-language HTTP头部确定默认区域
  • CookieLocaleResolver(基于Cookie)
    defaultLocale:默认的语言区域
    cookieName:设置cookieName名称
    cookieMaxAge:设置cookieName有效时间,单位秒
    cookiePath:设置cookie可见的地址,默认是“/”即对网站所有地址都是可见的,如果设为其它地址,则只有该地址或其后的地址才可见
    4)配置国际化操作拦截器
<mvc:interceptors>    <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />
</mvc:interceptors>

5)页面通过标签输出内容
导入t标签

<%@ taglib prefix="t" uri="http://www.springframework.org/tags" %>
<!--使用t标签输出内容,title为国际化资源文件中定义的key-->
<t:message code="title"/>

示例一

将上一节中的index.jsp页面修改为使用国际化资源文件来显示信息(要先将spring配置文件中需要的配置完成)
1)在国际化资源文件定义key
中文:
stu.add=新增学员
stu.upate=修改学员

英文:
stu.add=add student
stu.upate=update student

2)在index.jsp文件中因为国际化支持标签
在这里插入图片描述
1.6 中英文切换
1)国际化资源文件
在中文资源文件中增加定义如下:

language=英语

如果当前显示的是中文,则点击切换到的应该是英文
在英文资源文件中增加配置如下:

language=chinese

如果当前显示的是英文,在点击切换到中文。

2)编写一个controller执行切换

在这里插入图片描述

3)修改页面,执行语言切换
index.jsp页面文件:

文件上传

2.1 导入依赖的包
在pom.xml文件中导入依赖的包:

<dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.3</version>
</dependency>

2.2 配置文件上传解析器

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><!-- 必须和用户JSP 的pageEncoding属性一致,以便正确解析表单的内容 --><property name="defaultEncoding" value="UTF-8"></property><!-- 文件最大大小(字节) 1024*1024*50=50M--><property name="maxUploadSize" value="52428800"></property><!--resolveLazily属性启用是为了推迟文件解析,以便捕获文件大小异常--><property name="resolveLazily" value="true"/></bean>

2.4 数据表

create table t_book_file
(file_id varchar(32) primary key comment '文件ID',real_name varchar(50) not null comment '文件名称',content_type varchar(50) not null comment '文件类型',url varchar(256) not null comment '文件路径'
);

在book表中加入一个字段来保存上传文件的ID,即:与file_id字段对应。

controller

在这里插入图片描述

编辑index.jsp
增加上传链接打开进入上传的页面
在这里插入图片描述
上传页面
在这里插入图片描述
该截图中的代码只是保存了图片,还需要将图片的信息保存到文件数据表中,请自行完善。

  1. 下载
    核心代码:
@RequestMapping(value="/download")
public ResponseEntity<byte[]> download(@RequestParam String fileId){//先根据文件id查询对应图片信息,相关的后台代码省略,自行编写//下载关键代码File file=new File(bookFile.getUrl());HttpHeaders headers = new HttpHeaders();//http头信息String downloadFileName = new String(fileName.getBytes("UTF-8"),"iso-8859-1");//设置编码headers.setContentDispositionFormData("attachment", downloadFileName);headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);//MediaType:互联网媒介类型  contentType:具体请求中的媒体类型信息return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),headers, HttpStatus.OK);}

下载功能链接,示例代码

<!-- 判断是否 存在图片,如果有图片则提供下载 -->
<c:if test="${not empty b.bookImages}">    <a href="${ctx}/bookFile/download?fileId=${b.bookImages}">下载图片</a>
</c:if>
http://www.lryc.cn/news/194792.html

相关文章:

  • TigerVNC自动设置密码脚本
  • 什么是美体SDK?美摄美颜美体SDK对接开发指南
  • 【Java集合中各种数据结构的方法汇总】
  • 算法通过村第十四关-堆|白银笔记|经典问题
  • 如何正确维护实验室超声波清洗器?
  • DID赛道前列的生物识别技术,开启Web3时代的大门—MXT
  • Java基础面试-final
  • 全波形反演的目标和技术
  • 【SA8295P 源码分析】105 - QNX MISC分区读写、切换A/B启动槽、读取开机次数命令 swdl_utils 介绍 及 祼分区读写 代码实现
  • Grade 5 Math
  • 简易的慢SQL自定义告警实战经验(支持多数据源)
  • 【Springboot】Filter 过滤器的使用
  • 力扣-461.汉明距离
  • GEE 18:基于GEE平台的土地荒漠化监测与分析【论文复现】
  • 平台系统老板驾驶舱的重要性,我选云表
  • 【SpringMVC篇】探索请求映射路径,Get请求与Post请求
  • vqvae简单实战,利用vqvae来提升模型向量表达
  • idea禁用双击ctrl
  • 记使用docker部署项目出现问题
  • EDU挖掘
  • 机器人制作开源方案 | 杠杆式6轮爬楼机器人
  • 报错——warning: ignoring JAVA_HOME=/home/jdk/jdk1.8.0_281; using bundled JDK
  • 【Java8】java.time 根据日期获取年初年末、月初月末、日初日末
  • 【LeetCode: 137. 只出现一次的数字 II | 位运算 | 哈希表】
  • 「深入探究Web页面生命周期:DOMContentLoaded、load、beforeunload和unload事件」
  • SpringMVC源码分析(一)启动流程分析
  • ARM 10.12
  • vue-rouer 路由
  • 元数据的前世今生
  • Python实现简易过滤删除数字的方法