当前位置: 首页 > 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>

相关文章:

SpringMVC之国际化上传下载

spring项目中的国际化 1&#xff09;提供中英两种资源文件 i18n_en_US.properties i18n_zh_CN.properties 2&#xff09;配置国际化资源文件&#xff08;在spring配置文件中添加&#xff0c;例如spring-mvc.xml&#xff09; <bean id"messageSource" class&quo…...

TigerVNC自动设置密码脚本

新建sh脚本&#xff0c;复制以下命令。设置ssh终端密码和vncserver密码后&#xff0c;运行ssh脚本&#xff0c;即可设置修改vncserver密码。 #!/bin/bash vncpwd"vncserver密码" sshpwd"ssh终端密码"expect << EOFset timeout 10spawn ssh root127.…...

什么是美体SDK?美摄美颜美体SDK对接开发指南

在当今的数字世界中&#xff0c;人们对自我表达和形象展示的需求越来越高。美体SDK应运而生&#xff0c;为用户提供了一种全新的美颜美体体验&#xff0c;让每一个人都能享受到个性化的美丽与自信。 一、美体SDK的特点 轻量级&#xff1a;美体SDK体积小巧&#xff0c;不会对用…...

【Java集合中各种数据结构的方法汇总】

文章目录 Java集合中各种数据结构的方法汇总数组 ArrayList 、LinkedList链表 LinkedList栈 Stack队列 ArrayQueue、LinkedList哈希表 HashMap堆 PriorityQueue Java集合中各种数据结构的方法汇总 获取大小&#xff1a;fun.size(); 判断是否为空&#xff1a;fun.isEmpty(); …...

算法通过村第十四关-堆|白银笔记|经典问题

文章目录 前言在数组中寻找第K大的元素堆排序原理合并K个排序链表总结 前言 提示&#xff1a;想要从讨厌的地方飞出来&#xff0c;就得有藏起来的翅膀。 --三岛由纪夫《萨德侯爵夫人》 这里我们主要看一下经典的题目&#xff0c;这三个题目来说都是堆的热点问题。重点再理解处理…...

如何正确维护实验室超声波清洗器?

实验室一直被视为一个严谨而严肃的场所&#xff0c;实验应遵循一定的步骤&#xff0c;使用的设备也经历了详细的选择&#xff0c;如实验室超声波清洗机&#xff0c;其特点远强于一般类型的清洗机。专门负责采购的实验室人员一般对优质服务的实验室超声波清洗机印象深刻&#xf…...

DID赛道前列的生物识别技术,开启Web3时代的大门—MXT

互联网发展的十字路口 互联网从上世纪90年代初发展至今&#xff0c;历经30年&#xff0c;她改变了整个人类的生活方式、沟通形式以及社会发展模式&#xff0c;她的影响早已渗透到了世界的各个角落。而如今&#xff0c;我们似乎正站在一个新的十字路口&#xff0c;一个互联网将…...

Java基础面试-final

final&#xff08;最终的&#xff09; 修饰类&#xff1a;表示类不可被继承修饰方法&#xff1a;表示方法不可被子类覆盖&#xff0c;但是可以重载修饰变量&#xff1a;表示变量一旦被赋值就不可以更改它的值 修饰成员变量 如果final修饰的是类变量&#xff0c;只能在静态初始…...

全波形反演的目标和技术

本篇文章主要讲述了全波形反演的目标和可能用到的方法&#xff0c;对其概念进行解释&#xff0c;以加深理解。若有不正确的地方&#xff0c;欢迎批评指正。 一. 全波形反演的目标: 1. 如何保障模型的拟合能力? 2. 如何保障模型的泛化能力? 3. 如何使结果 (速度模型) 满足物理…...

【SA8295P 源码分析】105 - QNX MISC分区读写、切换A/B启动槽、读取开机次数命令 swdl_utils 介绍 及 祼分区读写 代码实现

【SA8295P 源码分析】105 - QNX MISC分区读写、切换A/B启动槽、读取开机次数命令 swdl_utils 介绍 及 祼分区读写 代码实现 一、切换 A/B 槽启动分区二、读取开机次数三、写 MISC 信息四、Dump Misc 信息五、misc 祼分区读写 代码实现系列文章汇总见:《【SA8295P 源码分析】00…...

Grade 5 Math

数形结合 5 2 3 https://download.csdn.net/download/spencer_tseng/88431286...

简易的慢SQL自定义告警实战经验(支持多数据源)

背景 对于慢SQL相信大家都不陌生了,一旦遇到后,相信大家会很快的提供出来对应的优化方法、索引优化建议工具使用等等,对于此我相信大家已经熟悉的不能再熟悉了,但是比较不尽人意的是:在此之前我们往往是花费了大量时间才发现造成系统出现问题的是慢SQL引起的,风险自然而…...

【Springboot】Filter 过滤器的使用

一、基本介绍 过滤器 Filter 作为 Java 三大器之一&#xff0c;在 Java Web 的使用中有很高的地位。所谓过滤器&#xff0c;就是实现了 javax.servlet.Filter 接口的服务器端程序&#xff0c;就是对事物进行过滤的。在 Web 中的过滤器&#xff0c;当然就是对请求进行过滤&#…...

力扣-461.汉明距离

Method 1 直接比较x&#xff0c;y二进制中的每一位&#xff0c;如果不同则cnt加一&#xff0c;并且x&#xff0c;y每次右移一位 class Solution { public:int hammingDistance(int x, int y) {int cnt 0;while(x > 0 && y > 0) {if((x & 1) ! (y & 1)…...

GEE 18:基于GEE平台的土地荒漠化监测与分析【论文复现】

Desertification 1. 研究背景1.1 参考论文1.2 参数获取1.2.1 NDVI1.2.2 Albedo1.2.3 Normalizing indices1.2.4 Calculating the quantitative relationship1.2.5 Calculating DDI2. GEE2.1 数据2.2 GEE code2.2.1 Study region2.2.2 Reomove cloud for Landsat-82.2.3 Calcula…...

平台系统老板驾驶舱的重要性,我选云表

平台系统老板驾驶舱的重要性在于它是一个集成的管理和分析工具&#xff0c;能够提供对平台系统运行情况的全面和实时的监控、分析和管理功能。以下是平台系统老板驾驶舱的重要性&#xff1a; 老板驾驶舱 该表单可供老板实时把控企业运营情况&#xff0c;包括销售业绩、…...

【SpringMVC篇】探索请求映射路径,Get请求与Post请求

&#x1f38a;专栏【SpringMVC】 &#x1f354;喜欢的诗句&#xff1a;天行健&#xff0c;君子以自强不息。 &#x1f386;音乐分享【如愿】 &#x1f384;欢迎并且感谢大家指出小吉的问题&#x1f970; 文章目录 &#x1f33a;请求映射路径⭐报错原因⭐解决方法 &#x1f33a;…...

vqvae简单实战,利用vqvae来提升模型向量表达

最近CV领域各种大模型在图像生成领域大发异彩&#xff0c;比如这两年大火的dalle系列模型。在这些模型中用到一个基础模型vqvae&#xff0c;今天我们写个简单实现来了解一下vqvae的工作原理。vqvae原始论文连接https://arxiv.org/pdf/1711.00937.pdf 1&#xff0c;代码 首先我们…...

idea禁用双击ctrl

Run anything | IntelliJ IDEA Documentation Disable double modifier key shortcuts...

记使用docker部署项目出现问题

我的docker-compose.yml内容如下&#xff1a; version: "3" services:my_server:build: .restart: alwaysdepends_on:mysql:condition: service_startedports:- 9999:9999links:- mysqlmysql:image: mysql:latest # mysql:oraclerestart: alwayscontainer_name: mys…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

HTML 列表、表格、表单

1 列表标签 作用&#xff1a;布局内容排列整齐的区域 列表分类&#xff1a;无序列表、有序列表、定义列表。 例如&#xff1a; 1.1 无序列表 标签&#xff1a;ul 嵌套 li&#xff0c;ul是无序列表&#xff0c;li是列表条目。 注意事项&#xff1a; ul 标签里面只能包裹 li…...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文&#xff5c;DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色&#xff0c;华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型&#xff0c;能助力我们轻松驾驭 DeepSeek-V3/R1&#xff0c;本文中将分享如何…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...

在 Spring Boot 中使用 JSP

jsp&#xff1f; 好多年没用了。重新整一下 还费了点时间&#xff0c;记录一下。 项目结构&#xff1a; pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...

【C++】纯虚函数类外可以写实现吗?

1. 答案 先说答案&#xff0c;可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...

HTML前端开发:JavaScript 获取元素方法详解

作为前端开发者&#xff0c;高效获取 DOM 元素是必备技能。以下是 JS 中核心的获取元素方法&#xff0c;分为两大系列&#xff1a; 一、getElementBy... 系列 传统方法&#xff0c;直接通过 DOM 接口访问&#xff0c;返回动态集合&#xff08;元素变化会实时更新&#xff09;。…...