Un logiciel et un produit sont développés et améliorés petit à petit, avec de plus en plus de fonctions, des performances plus fortes et une meilleure expérience utilisateur ... l'amélioration de chaque indicateur nécessite des choses pratiques. Par exemple, votre produit est devenu plus grand et plus de gens l'utilisent, non seulement pour les Shanghai, les gens de Pékin, mais aussi pour les Indiens, les Français, etc. On peut dire que ce produit est entré sur la scène internationale. Lorsque les copains indiens entrent dans l'URL pour accéder au produit, "Bienvenue, le troisième frère" apparaît sur l'interface, et je suppose que les copains sont confus sur place. À l'heure actuelle, l'internationalisation a vu le jour.
Pour faire des plats internationaux, ce n'est vraiment pas aussi compliqué que vous le pensez. Au lieu de cela, c'est très simple. Si vous ne le croyez pas, vous pouvez voir ...
1. Injecter ResourceBundleMessageSource
Ajouter BeanResourceBundlMessagesource pour le traitement international dans springmvc.xml
<bean id = "MessageSource"> <propriété name = "basename" value = "i18n"> </ propriété> </bant>
Le nom de la propriété ici est le même que le nom de la propriété dans la classe d'injection. La valeur ici détermine le nom du fichier d'internationalisation ultérieur. N'oubliez pas que c'est i18n, et vous verrez son utilisation immédiatement.
2. Créer des documents internationaux
Au total, trois fichiers d'attributs internationaux doivent être créés
i18n.properties - Fichier international par défaut
i18n_en_us.properties - Document internationalisé pour l'environnement anglais
i18n_zh_cn.properties - Document internationalisé pour l'environnement chinois
Remarque: Pourquoi les noms des fichiers commencent-ils par i18n? Parce que dans le fichier de configuration de Springmvc.xml au premier point, la valeur configurée est i18n
Le contenu des fichiers i18n.properties et i18n_en_us.properties est le même que
i18n.userName = usernamei18n.password = mot de passe
i18n_zh_cn.properties
i18n.username = / u7528 / u6237 / u540di18n.password = / u5bc6 / u7801
3. Créez une nouvelle page
Créez deux nouvelles pages, l'une est i18n.jsp, qui affiche le nom d'utilisateur, et il y a un hyperlien pour passer à i18n2.jsp, et l'autre est i18n2.jsp, qui affiche le mot de passe, et il y a un hyperlien pour passer à i18n.jsp.
i18n.jsp
<% @ Page Language = "Java" ContentType = "Text / Html; Charset = UTF-8" Pageencoding = "UTF-8"%> <% @ Taglib Prefix = "FMT" URI = "http://java.sun.com/jsp/jstl/fmt"%> <! Doctype html public "- // w3c // DTD" HTML 4.01 Transitional // en "" http://www.w3.org/tr/html4/loose.dtd"><html><head><meta http-equiv = "contenu-type" contenu = " key = "i18n.username"> </ fmt: message> <br> <br> <a href = "i18n2"> i18n2 </a> </ body> </html>
i18n2.jsp
<% @ Page Language = "Java" ContentType = "Text / Html; Charset = UTF-8" Pageencoding = "UTF-8"%> <% @ Taglib Prefix = "FMT" URI = "http://java.sun.com/jsp/jstl/fmt"%> <! Doctype html public "- // w3c // DTD" HTML 4.01 Transitional // en "" http://www.w3.org/tr/html4/loose.dtd"><html><head><meta http-equiv = "contenu-type" contenu = " key = "i18n.password"> </ fmt: message> <br> <br> <br> <a href = "i18n"> i18n </a> </ body> </html>
En même temps, nous devons évidemment ajouter une entrée dans index.jsp et un lien vers la page i18n.jsp, comme suit
<a href = "i18n"> i18n </a>
Afin de pouvoir cliquer directement et lier directement sans avoir besoin de traiter et de passer à la vue via le gestionnaire, nous devons ajouter des balises dans springmvc.xml
<Mvc: View-Controller Path = "/ i18n" View-Name = "i18n" /> <Mvc: View-Controller Path = "/ i18n2" View-Name = "i18n2" />
Cela vous permet d'accéder directement aux pages i18n.jsp et i18n2.jsp dans la barre d'adresse.
Petite fosse: Si la méthode de codage dans i18n.jsp et i18n2.jsp adopte le "ISO-8859-1" par défaut, la page affichera le code brouillé.
Lorsque le codage est modifié en "UTF-8", il peut être affiché normalement
Ce qui précède est la méthode de base de l'internationalisation. Si je veux toujours faire un i18n.jsp qui n'a pas besoin d'accéder directement à i18n.jsp, mais qui est présenté après le traitement des gestionnaires, ou je veux aussi faire un plat international qui n'a pas à être aussi gênant et doit changer de langue, est-ce possible? Bien sûr, continuons à voir ...
1. Ajouter des balises pour l'accès i18n.jsp directement dans springmvc.xml avant de commenter
<! - <Mvc: View-Controller Path = "/ i18n" View-Name = "i18n" /> ->
2. Ajouter une interface de traitement dans la classe de traitement Hanlder SpringmvCTest
@AutowiredPrivate ResourceBundleMessageSource MessageSource; @RequestMapping ("/ i18n") public String Testi18n (Locale Locale) {String Val = Messagesource.getMessage ("i18n.Username", null, locale); System.out.println (Val); retour "i18n";}Notez que la classe de traitement internationalisée ResourceBundleMessageSource est injectée ici, et la valeur de propriété internationalisée est obtenue à l'aide de sa méthode GetMessage.
Démarrer le service Tomcat et voir
Et si vous affichez les informations de la langue correspondante dans différents environnements linguistiques en fonction de vos propres paramètres?
1. Configurer SessionLocaleResolver et LocalEchangeInterceptor
<! - Configurer SessionLocaleResolver -> <Bean id = "Localierresolver"> </Ebring> <! - Configurez LocalEChangeInterceptor -> <MVC: Interceptors> <Eban> </EAN> </MVC: Interceptors>
Le localChangeInterceptor ici est principalement utilisé pour analyser les demandes avec des informations locales dans un objet régional et obtenir un objet LocalereResolver.
Après cela, le SessionLocalResolver convertira ici l'objet localResolver ci-dessus en une propriété de session et éliminera cette propriété, c'est-à-dire l'objet local, et le renvoie à l'application.
2. Ajouter un hyperlien dans index.jsp
<a href = "i18n? Locale = en_cn"> chinois </a> <br> <br> <a href = "i18n? Locale = en_us"> anglais </a>
De cette façon, nous pouvons voir les résultats
Après avoir parlé d'internationalisation, parlons du soutien de SpringMVC à JSON.
Dans le processus de développement traditionnel, notre gestionnaire, c'est-à-dire la couche de contrôleur, suit généralement la routine de se tourner vers une vue JSP; Cependant, ces scénarios ne peuvent pas répondre à toutes les exigences. Par exemple, nous n'avons souvent qu'à renvoyer des données, plutôt qu'une page JSP. Ensuite, à l'heure actuelle, le @ResponseBody et @Responsentity de Spring MVC3 prennent en charge de telles fonctions. Le contrôleur renvoie les données directement (nous parlerons des données JSON ici), plutôt que de pointer directement la vue spécifique. Voici un exemple simple de téléchargement et de téléchargement.
1. Téléchargement de fichiers
1.1 Implémentez la demande Ajax dans index.jsp en utilisant jQuery
<% @ Page Language = "Java" ContentType = "Text / Html; charSet = UTF-8" Pageencoding = "UTF-8"%> <! Doctype HTML Public "- // W3C // DTD HTML 4.01 Transitional // en" "http://www.w3.org/tr/html4/loose.dtd"><html><head><meta http-equiv =" contenu-type "contenu =" Text / html; charset = utf-8 "> <Title> insert le titre ici </ title> <script type =" text / javascript " src = "scripts / jQuery-1.9.1.min.js"> </cript> <script> $ (function () {$ ("# testjson"). Cliquez (fonction () {var url = this.href; var args = {}; $ .Post (url, args, function (data) {for (var i = 0; i <data.Length; i ++) Data [i] .ID; id = "testjson"> testjson </a> </ body> </html>Le noyau ici est une demande ajax écrite en jQuery
L'URL demandée est le HREF défini;
Les données sont les données renvoyées après la réponse de la demande;
Dans des circonstances normales, nous devons demander des informations à tous les employés, et grâce à la traversée ici, nous obtiendrons toutes les informations de chaque employé tel que ID, LastName, etc.
1.2. Ici, nous devons introduire trois packages en pot
Ces trois sont principalement utilisés plus tard dans la conversion des données de retour.
1.3. Ajouter une interface dans le gestionnaire SpringmvCTest
@ Réponsebody @ requestmapping ("TestJson") Collection publique <Lesyeee> testjson () {return Employeedao.getall ();}Ma compréhension personnelle ici est de renvoyer toutes les informations des employés interrogées via Employeedao à l'interface en réponse, et enfin d'obtenir un formulaire de données JSON via une série de traitements, puis de traverser et d'analyser dans la page de premier plan. Et tout est fait grâce à l'annotation @ResponseBody.
Plus précisément, il existe des convertisseurs internes pour effectuer ces conversions, des points de rupture dans la méthode d'interface et entrer le débogage.
Sélectionnez DispatcherServlet, trouvez ce-> Handleradiapters-> ElementData, recherchez la mise en place de la mise en forme de Handleradapter dans ce tableau, cliquez pour trouver MessageConverters, et vous pouvez voir qu'il y a 7 convertisseurs au total
Le 7e MappingJackson2HttpMessageConverter ici est le convertisseur dans lequel nous avons chargé après avoir ajouté les trois packages JAR ci-dessus. Comme on peut le voir, il y a suffisamment de convertisseurs pour différents types de données à traiter.
1.4 Ajouter un lien dans index.jsp
<form action = "testfileupload" metheth = "post" EncType = "multipart / form-data"> file: <input type = "file" name = "file" /> desc: <input type = "text" name = "desc" /> <input type = "soumed" value = "soumed" /> </ form> <br/>
Le résultat de téléchargement final est le suivant
2. Téléchargement de fichiers
2.1 Préparez-vous à télécharger la source
Créez un nouveau répertoire de fichiers sous WebContent, mettez AAA.txt comme source de téléchargement
2.2 Ajouter un hyperlien dans index.jsp comme portail de téléchargement
<a href = "testResponseentity" id = "testjson"> testResponseentity </a> <br/>
2.3 Ajout d'interface dans le gestionnaire SpringmvCTest
@RequestMapping ("TestResponseentity") Public ResponseEntity <Byte []> TestResponseentity (HttpSession Session) lève IOException {Byte [] body = null; ServletContext servletContext = session.getServletContext (); InputStream dans = servletContext.getResourceSstream ("/ files / aaa.txt"); corps = nouveau octet [in.available ()]; in.read (corps); En-têtes httpheaders = new httpheaders (); headers.add ("contenu-disposition", "attachement; filename = aaa.txt"); Httpstatus statuscode = httpstatus.ok; ResponseNtity <Byte []> Response = nouvelle réponse <> (corps, en-têtes, statutCode); retour de réponse;}Démarrez Tomcat et nous pouvons voir que aaa.txt peut être téléchargé ~~~
Ok, jusqu'à présent, qu'avons-nous fait
1. Soutenir l'internationalisation
2. Téléchargement de fichiers
3. Téléchargement de fichiers
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.