사실 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!