Maison  >  Article  >  Java  >  Introduction à l'internationalisation de pages et au téléchargement de fichiers dans SpringMVC (avec code)

Introduction à l'internationalisation de pages et au téléchargement de fichiers dans SpringMVC (avec code)

不言
不言avant
2018-09-28 15:53:232026parcourir
Cet article vous présente une introduction à l'internationalisation des pages et au téléchargement de fichiers dans SpringMVC (avec code). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

En fait, l'internationalisation des pages dans SpringMVC est fondamentalement la même que l'internationalisation de la vérification dans le chapitre précédent.

1. Internationaliser la page

1) Tout d'abord, nous ajoutons la configuration internationalisée du bean au fichier de configuration Spring

<!-- 注册国际化信息,必须有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) Ajoutez ensuite notre fichier de ressources. Le préfixe de ce fichier de ressources doit être le même que la valeur du bean que nous avons configuré ci-dessus.

Nous écrivons le contenu que nous avons besoin d'internationaliser dans le fichier de ressources

Puis quand nous passons à la page Internationalisé les ressources doivent être chargées

@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";
    }

Nous pouvons utiliser les informations d'internationalisation des données de la balise jstl ou spring dans la page. La balise form au printemps est utilisée pour saisir les informations d'invite après une erreur de vérification du printemps (mentionnée dans le chapitre précédent). ) (réussi)

<%@ 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" %>

Ensuite, les informations d'internationalisation dans notre page peuvent être affichées

<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>

Nous pouvons également compléter une fonction de changement de langue. Nous ajoutons deux super Link, lors de la réception d'un. requête, SpringMVC recherchera un analyseur local dans le contexte et l'utilisera pour obtenir les informations de type de localisation correspondant à la requête. SpringMVC vous permet également d'assembler un intercepteur qui modifie dynamiquement le type de localisation, afin que vous puissiez contrôler la localisation. type d’une requête unique en spécifiant un paramètre de requête.

<a href="login?locale=zh_CN">中文</a>
<a href="login?locale=en_US">英文</a>

Après avoir reçu la demande, SpringMVC déterminera d'abord s'il existe ce paramètre, il sera ajouté à la session. S'il n'y a pas de tel paramètre, il le recherchera. dans la session. S'il n'est pas trouvé dans la session, il le lira par défaut.

2. Téléchargement de fichiers

Le téléchargement de fichiers de SpringMVC est très simple. Il fournit directement une prise en charge directe. l'interface MultipartResolver. Spring utilise sa classe d'implémentation CommonsMultipartResolver pour implémenter cela. Il n'y a pas d'assembly automatique dans le contexte SpringMVC, nous devons donc le configurer manuellement. Nous allons directement implémenter ici un téléchargement multi-fichiers. Si vous pouvez télécharger plusieurs fichiers, avez-vous peur de télécharger un seul fichier ?

Avant la configuration, nous importons d'abord les packages jar pour le téléchargement de fichiers. Ces packages ne sont pas disponibles dans notre printemps.

Ensuite, nous configurons manuellement le Bean

<!-- 配置文件上传 -->
    <bean id="multipartResolver"
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 指定默认的编码格式 -->
        <property name="defaultEncoding" value="UTF-8" />
        <!-- 指定允许上传的文件大小,单位Byte -->
        <property name="maxUploadSize" value="512000" />
    </bean>

Vous pouvez également définir le type et ainsi de suite dans ce bean , vous pouvez lire le code source si nécessaire.

<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" Notez que cela doit être ajouté lors du téléchargement de fichiers, et il doit s'agir d'une demande de publication.
Voyons ensuite comment notre serveur reçoit le fichier. Utilisez MultipartFile[] pour télécharger plusieurs fichiers et assurez-vous d'ajouter l'annotation @RequestParam("file") avant le paramètre, sinon un l'erreur sera signalée. Pour le téléchargement d'un seul fichier, nous devons uniquement utiliser un objet MultipartFile et aucune annotation n'est requise.

/**
     *    单文件上传 :  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";
    }

Trions les méthodes couramment utilisées par MultipartFile :

isEmpty() : Déterminez s'il faut soumettre le fichier

getContextType() : Récupère le type de fichier

getName() : Récupère le nom de l'élément de formulaire

getOriginalFilename() : Récupère le nom du fichier

getSize() : Récupère le fichier size

getBytes() : Récupère un tableau d'octets

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer