Heim  >  Artikel  >  Java  >  Einführung in die Seiteninternationalisierung und den Datei-Upload in SpringMVC (mit Code)

Einführung in die Seiteninternationalisierung und den Datei-Upload in SpringMVC (mit Code)

不言
不言nach vorne
2018-09-28 15:53:232026Durchsuche
Dieser Artikel bietet Ihnen eine Einführung in die Seiteninternationalisierung und das Hochladen von Dateien in SpringMVC. Ich hoffe, dass er Ihnen als Referenz dienen wird.

Tatsächlich ist die Seiteninternationalisierung in SpringMVC im Wesentlichen dieselbe wie die Überprüfungsinternationalisierung im vorherigen Kapitel.

1. Internationalisieren Sie die Seite

1) Zuerst fügen wir der Spring-Konfigurationsdatei eine internationalisierte Bean-Konfiguration hinzu

<!-- 注册国际化信息,必须有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) Fügen Sie dann unsere Ressourcendatei hinzu. Das Präfix dieser Ressourcendatei muss mit dem Wert der oben konfigurierten Bean übereinstimmen.

Wir schreiben den Inhalt, den wir zur Internationalisierung benötigen, in die Ressourcendatei

Wenn wir dann zur Seite „Internationalisiert“ springen Ressourcen müssen geladen werden

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

Wir können JSTL- oder Spring-Tag-Dateninternationalisierungsinformationen auf der Seite verwenden. Das Formular-Tag in Spring wird verwendet, um die Eingabeaufforderungsinformationen nach dem Spring-Überprüfungsfehler (im vorherigen Kapitel erwähnt) einzugeben 🎜>

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

Dann können die Internationalisierungsinformationen auf unserer Seite angezeigt werden

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

Wir können der Seite auch zwei Hyperlinks hinzufügen, nach denen SpringMVC sucht Ein lokaler Parser im Kontext und die Verwendung zum Abrufen der der Anforderung entsprechenden Lokalisierungstypinformationen. Mit SpringMVC können Sie auch einen Interceptor zusammenstellen, der den Lokalisierungstyp dynamisch ändert, sodass Sie einen Anforderungsparameter angeben können eine individuelle Anfrage.

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

Nach Erhalt der Anfrage ermittelt SpringMVC zunächst, ob dieser Parameter vorhanden ist. Wenn dieser Parameter nicht vorhanden ist, wird er zur Sitzung hinzugefügt Wenn es in der Sitzung nicht gefunden wird, wird es standardmäßig in der Sprache des Geräts gelesen und durchsucht.

2. Datei-Upload

Der Datei-Upload von SpringMVC erfolgt direkt durch die Plug-and-Play-Implementierung die

MultipartResolver-Schnittstelle. Spring verwendet zur Implementierung seine Implementierungsklasse CommonsMultipartResolver. Im SpringMVC-Kontext gibt es keine automatische Assembly, daher müssen wir sie manuell konfigurieren. Wir werden hier direkt einen Multi-Datei-Upload implementieren, wenn Sie mehrere Dateien hochladen können, haben Sie dann Angst, eine einzelne Datei hochzuladen?

Vor der Konfiguration importieren wir zunächst die JAR-Pakete für den Datei-Upload. Diese Pakete sind in unserem Frühjahr nicht verfügbar.

Dann konfigurieren wir die Bean manuell

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

Sie können in dieser Bean auch den Typ usw. festlegen, Es gibt Sie können den Quellcode bei Bedarf lesen.

<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" Beachten Sie, dass dies beim Hochladen von Dateien hinzugefügt werden muss und es sich um eine Post-Anfrage handeln muss.
Dann schauen wir uns an, wie unser Server die Datei empfängt. Verwenden Sie MultipartFile[], um mehrere Dateien hochzuladen, und stellen Sie sicher, dass Sie vor dem Parameter die Annotation @RequestParam("file") hinzufügen, andernfalls eine Fehler wird gemeldet. Für das Hochladen einer einzelnen Datei müssen wir nur ein MultipartFile-Objekt verwenden und es sind keine Anmerkungen erforderlich.

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

Lassen Sie uns die von MultipartFile häufig verwendeten Methoden sortieren:

isEmpty(): Bestimmen Sie, ob die Datei gesendet werden soll

getContextType( ): Dateityp abrufen

getName(): Formularelementnamen abrufen

getOriginalFilename(): Dateinamen abrufen

getSize(): Dateigröße abrufen

getBytes( ): Byte-Array

abrufen

Das obige ist der detaillierte Inhalt vonEinführung in die Seiteninternationalisierung und den Datei-Upload in SpringMVC (mit Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen