>  기사  >  Java  >  SpringMVC의 페이지 국제화 및 파일 업로드 소개(코드 포함)

SpringMVC의 페이지 국제화 및 파일 업로드 소개(코드 포함)

不言
不言앞으로
2018-09-28 15:53:232062검색
이 기사에서는 SpringMVC의 페이지 국제화 및 파일 업로드(코드 포함)에 대해 소개합니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

사실 SpringMVC의 페이지 국제화는 기본적으로 이전 장의 검증 국제화와 동일합니다.

1. 페이지를 국제화합니다

1) 먼저 국제화된 Bean 구성을 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) 그런 다음 리소스 파일을 추가합니다. 이 리소스 파일의 접두사는 다음과 같아야 합니다. 위의 것 구성된 Bean은 동일한 값을 갖습니다.

필요한 국제화된 콘텐츠를 리소스 파일에 작성합니다

그런 다음 페이지로 이동할 때 국제화된 리소스를 로드해야 합니다

@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 태그 데이터 국제화를 사용할 수 있습니다. 국제화 정보 , 스프링의 양식 태그는 스프링 검증 오류(이전 장에서 언급) 후 프롬프트 정보를 입력하는 데 사용됩니다.

<%@ 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는 컨텍스트에서 로컬 파서를 검색하고 이를 사용하여 요청에 해당하는 지역화된 유형 정보를 얻습니다. 현지화 유형 - 요청 매개변수를 지정하여 개별 요청의 현지화 유형을 제어할 수 있습니다.

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

SpringMVC는 요청을 받은 후 이 매개변수가 있는지 먼저 확인하고 해당 매개변수가 없으면 세션에 추가합니다. 세션에서 찾을 수 없으면 기본적으로 브라우저의 언어를 읽습니다.

2. 파일 업로드

SpringMVC의 파일 업로드는 매우 간단합니다. 이 지원은 플러그 앤 플레이 MultipartResolver 인터페이스를 통해 구현됩니다. Spring은 이를 구현하기 위해 구현 클래스 CommonsMultipartResolver를 사용합니다. SpringMVC 컨텍스트에는 자동 어셈블리가 없으므로 수동으로 구성해야 합니다. 여기서는 다중 파일 업로드를 직접 구현하겠습니다. 여러 파일을 업로드할 수 있다면 단일 파일 업로드가 두려우신가요?

구성하기 전에 먼저 파일로 업로드된 jar 패키지를 가져옵니다. 이러한 패키지는 우리 봄에는 사용할 수 없습니다.

그런 다음 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" 참고로 파일 업로드 시 추가해야 하며, 게시 요청이어야 합니다.
그런 다음 서버가 파일을 수신하는 방법을 살펴보겠습니다. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제