SpringMVC中頁面國際化與文件上傳的介紹(附程式碼)
其實SpringMVC中的頁面國際化與上一章的驗證國際化基本上一致。
1.對頁面進行國際化
1)首先我們在Spring設定檔中加入國際化bean設定
<!-- 注册国际化信息,必须有id,指定资源文件名称,资源文件在src目录下 --> <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> <property name="basename" value="i18n"></property> </bean> <!-- 配置LocalResolver用来获取本地化语言 --> <bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver"></bean> <!-- 配置LocaleChanceInterceptor拦截器 --> <mvc:interceptors> <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" /> </mvc:interceptors>
2)然後加入我們的資源文件,這個資源文件的前綴要與我們上面配置的bean的value相同。
我們在資源文件寫入我們需要國際化的內容
然後我們在跳頁的時候需要載入國際化資源
@RequestMapping(value="login",method=RequestMethod.GET) public String login(Locale locale,Map<String ,Object> map){ String name = messageSource.getMessage("name", null, locale); String pass = messageSource.getMessage("pass", null, locale); String title = messageSource.getMessage("title", null, locale); String submit = messageSource.getMessage("submit", null, locale); map.put("title", title); map.put("pass", pass); map.put("name", name); map.put("submit", submit); map.put("user", new User()); return "login"; }
我們在頁面中可以使用jstl或spring標籤資料國際化訊息,spring中的form標籤是用來輸入spring驗證錯誤之後的提示訊息(上章有提過)
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%> <%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %> <%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
然後我們頁面中的國際化訊息可以這顯示出來
<form:form action="login" method="post" commandName="user"> <fmt:message key="name"/> <form:input path="username"/> <form:errors path="username"/> <br> <fmt:message key="pass"/> <form:input path="userpass"/> <input type="submit" value="<spring:message code="submit"/>"> </form:form>
我們還可以完成一個語言切換功能,我們在頁面上加入兩個超連結,當接收到請求,SpringMVC會在上下文中查找一個本地解析器,找到後使用它獲取請求所對應的本地化類型信息,SpringMVC還允許還允許裝配一個動態更改本地化類型的攔截器,這樣通過指定一個請求參數就可以控制單一請求的本地化類型。
<a href="login?locale=zh_CN">中文</a> <a href="login?locale=en_US">英文</a>
SpringMVC接到請求後首先會判斷有沒有這個參數,如果有這個參數就加入到session裡面,如果沒這個參數會到session裡面去找,session裡面沒有找到會預設讀取瀏覽器的語言。
2.檔案上傳
SpringMVC的檔案上傳非常的簡單,它直接提供了直接的支持,這種支援是透過即插即用的MultipartResolver介面實現的。 Spring用它的實作類別CommonsMultipartResolver來實作。 SpringMVC上下文中沒有自動組裝所以需要我們手動來設定。我們這裡就直接實作一個多檔案上傳,多檔案上傳會了害怕單一檔案上傳不會?
配置之前我們先來導入檔案上傳的jar包,這些包在我們spring中是沒有的。
然後我們手動設定下Bean
<!-- 配置文件上传 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 指定默认的编码格式 --> <property name="defaultEncoding" value="UTF-8" /> <!-- 指定允许上传的文件大小,单位Byte --> <property name="maxUploadSize" value="512000" /> </bean>
這個bean裡還可以設定類型啊什麼的,有需要的可以閱讀原始碼。
<form action="${pageContext.request.contextPath}/upload" method="post" enctype="multipart/form-data"> <input type="file" name="file"/><br> <input type="file" name="file"/><br> <input type="file" name="file"/><br> <input type="submit" value="submit"> </form>
enctype="multipart/form-data" 注意檔案上傳必須加上這個,而且必須是post請求。
然後我們來看下我們伺服器是怎麼接收到檔案的,多重檔案上傳使用 MultipartFile[] 並且一定要在參數前加上註解 @RequestParam("file")否則會報錯。 單一檔案上傳我們只需要使用一個MultipartFile對象,而無需加註解。
/** * 单文件上传 : MultipartFile file * 多文件上传 : @RequestParam("file") MultipartFile[] file * 多文件上传必须加上 @RequestParam("file")注解否则会报错 * @author:MiYa. * @time:2018-9-28 11:50 */ @RequestMapping(value="upload",method=RequestMethod.POST) public String testFileUpload(HttpServletRequest request , @RequestParam("file") MultipartFile[] file){ for (int i = 0; i < file.length; i++) { MultipartFile multipartFile = file[i]; System.out.println(" ContentType: " + multipartFile.getContentType()); System.out.println(" Name: " + multipartFile.getName()); System.out.println(" OriginalFilename: " + multipartFile.getOriginalFilename()); System.out.println(" Size: " + multipartFile.getSize()); //判断是否提交文件,如果没有那么跳过上传 if(multipartFile.isEmpty()){ continue; } // 获取文件的上传路径 String uploadpath = request.getServletContext().getRealPath("uploads"); //获取文件名称 String filename = multipartFile.getOriginalFilename(); //截取文件后缀 String fileext = filename.substring(filename.lastIndexOf(".")); //生成新的随机文件名称 String newfileName = UUID.randomUUID() + fileext; //文件保存路径 File savepath = new File(uploadpath + "/" + newfileName); //上传文件 try { multipartFile.transferTo(savepath); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } return "welcome"; }
整理下MultipartFile常用的方法:
isEmpty():判斷是否提交文件上來
#getContextType():獲取檔案類型
getName():取得表單元素名稱
getOriginalFilename():取得檔案名稱
getSize():取得檔案大小
#getBytes( ):取得位元組數組
以上是SpringMVC中頁面國際化與文件上傳的介紹(附程式碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

SpringBoot和SpringMVC都是Java開發中常用的框架,但它們之間有一些明顯的差異。本文將探究這兩個框架的特點和用途,並對它們的差異進行比較。首先,我們來了解一下SpringBoot。 SpringBoot是由Pivotal團隊開發的,它旨在簡化基於Spring框架的應用程式的建立和部署。它提供了一種快速、輕量級的方式來建立獨立的、可執行

SpringBoot與SpringMVC的不同之處在哪裡? SpringBoot和SpringMVC是兩個非常流行的Java開發框架,用於建立Web應用程式。儘管它們經常分別被使用,但它們之間的差異也是很明顯的。首先,SpringBoot可以被看作是一個Spring框架的擴充或增強版。它旨在簡化Spring應用程式的初始化和配置過程,以幫助開發人

spring和springmvc的區別:1、定位和功能;2、核心功能;3、應用領域;4、擴展性。詳細介紹:1、定位和功能,Spring是一個綜合性的應用程式開發框架,提供了依賴注入、面向切面編程、事務管理等功能,旨在簡化企業級應用程式的開發,而Spring MVC是Spring框架中的一個模組,用於Web應用程式的開發,實現了MVC模式;2、核心功能等等。

SpringBoot和SpringMVC是Java開發中常用的兩個框架,它們都是由Spring框架所提供的,但在功能和使用方式上有一些區別。本文將分別介紹SpringBoot和SpringMVC的特點和區別。一、SpringBoot的特點:簡化配置:SpringBoot透過約定優於配置的原則,大大簡化了專案的配置過程。它可以自動配置專案所需的參數,開發人

springboot和springmvc區別是:1、意義不同;2、配置不同;3、依賴項不同;4、開發時間不同;5、生產力不同;6、實現JAR打包功能的方式不同;7、是否提供批次處理功能;8、作用不同;9、社群和文件支援不同;10、是否需要部署描述符。

攔截器(interceptor)的作用SpringMVC的攔截器類似於Servlet開發中的過濾器Filter,用於對處理器進行預處理和後處理。將攔截器依一定的順序聯結成一條鏈,這條鏈稱為攔截器鏈(InterceptorChain)。在存取被攔截的方法或欄位時,攔截器鏈中的攔截器就會依其先前定義的順序被呼叫。攔截器也是AOP思想的具體實作。攔截器和過濾器區別區別過濾器(Filter)攔截器(Intercepter)使用範圍是servlet規格中的一部分,任何JavaWeb工程都可以使用是Spri

隨著網路的發展,Web服務越來越普遍。 JavaAPI作為一種應用程式接口,也不斷地推出新的版本來適應不同的應用場景。而SpringMVC作為一種流行的開源框架,能夠幫助我們輕鬆地建立Web應用程式。本文將詳細講解在JavaAPI開發中,如何使用SpringMVC進行Web服務處理,包括配置SpringMVC、編寫控制器、使用

解析SpringBoot和SpringMVC之間的異同SpringBoot和SpringMVC是Java領域中非常重要的開發架構。雖然它們都屬於Spring框架的一部分,但在使用和功能上有一些明顯的區別。本文將對SpringBoot和SpringMVC進行比較,解析它們之間的異同。首先,讓我們來了解一下SpringBoot。 SpringBo
