SpringMVC 학습―국제 화+업로드+다운로드 상세 설명
국제 화 라 는 요 리 를 만 들 려 면 정말 생각 보다 복잡 하지 않 고 오히려 간단 합 니 다.믿 지 않 습 니 다.보 세 요.
1.Resource BundleMessageSource 주입
SpringMVC.xml 에 국제 화 처리 에 사용 할 beanResourceBundlMessageSource 를 추가 합 니 다.
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="i18n"></property>
</bean>
이 property 의 name 은 주입 클래스 의 속성 명 과 계속 되 어 있 습 니 다.이 value 는 뒤의 국제 화 파일 의 이름 을 결정 합 니 다.i18n 으로 기억 하 십시오.곧 사용 방법 을 볼 수 있 습 니 다.2.국제 화 파일 만 들 기
모두 세 개의 국제 화 속성 파일 을 만들어 야 합 니 다.
i18n.properties-기본 국제 화 파일
i18n_en_US.properties-영어 환경 에 사용 되 는 국제 화 파일
i18n_zh_CN.properties-중국어 환경 에 사용 되 는 국제 화 파일
메모:여기 서 왜 파일 의 이름 이 i18n 으로 시작 합 니까?첫 번 째 springmvc.xml 설정 파일 에서 설정 한 value 값 이 i18n 이기 때 문 입 니 다.
i18n.properties 와 i18nen_US.properties 파일 의 내용 은 같 습 니 다.다음 과 같 습 니 다.
i18n.username=UserName
i18n.password=Password
i18n_zh_CN.properties
i18n.username=\u7528\u6237\u540D
i18n.password=\u5BC6\u7801
3.새 페이지각각 두 페이지 를 새로 만 들 었 습 니 다.하 나 는 i18n.jsp 입 니 다.사용자 이름 을 표시 하 는 동시에 i18n 2.jsp 로 넘 어 가 는 하이퍼링크 가 있 습 니 다.다른 하 나 는 i18n 2.jsp 입 니 다.비밀 번 호 를 표시 하 는 동시에 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="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<fmt:message 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="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<fmt:message key="i18n.password"></fmt:message><br><br>
<a href="i18n">i18n</a>
</body>
</html>
또한 index.jsp 에 입 구 를 추가 하고 i18n.jsp 페이지 에 연결 해 야 합 니 다.다음 과 같 습 니 다.
<a href="i18n">i18n</a>
handler 를 통 해 처리 하고 보기 로 넘 어 갈 필요 가 없 는 링크 를 직접 클릭 하기 위해 서 는 springmvc.xml 에 탭 을 추가 해 야 합 니 다.
<mvc:view-controller path="/i18n" view-name="i18n"/>
<mvc:view-controller path="/i18n2" view-name="i18n2"/>
이렇게 하면 주소 표시 줄 에서 i18n.jsp 와 i18n 2.jsp 페이지 를 직접 방문 할 수 있 습 니 다.작은 구덩이:i18n.jsp 와 i18n 2.jsp 의 인 코딩 방식 이 기본'ISO-8859-1'을 사용 하면 페이지 에 난 코드 가 표 시 됩 니 다.
인 코딩 을"UTF-8"로 바 꾸 면 정상적으로 표시 할 수 있 습 니 다.
이상 은 국제 화 라 는 요리 의 기본 적 인 방법 입 니 다.만약 에 제 가 i18n.jsp 를 직접 방문 하지 않 고 handler 처 리 를 통 해 보 여 준 i18n.jsp 를 만 들 고 싶 거나 귀 찮 지 않 고 언어 를 바 꾸 는 국제 화 요 리 를 만 들 고 싶 습 니 다.가능 합 니까?물론 입 니 다.이어서 보 겠 습 니 다.
1. 설명 하기 전에 springmvc.xml 에 i18n.jsp 에 직접 접근 하 는 탭 을 추가 합 니 다.
<!--
<mvc:view-controller path="/i18n" view-name="i18n"/>
-->
2.Hanlder 처리 클래스 SpringMVCTest 에 처리 인터페이스 추가
@Autowired
private ResourceBundleMessageSource messageSource;
@RequestMapping("/i18n")
public String testI18n(Locale locale){
String val = messageSource.getMessage("i18n.username", null, locale);
System.out.println(val);
return "i18n";
}
국제 화 처리 류 인 리 소스 BundleMessageSource 를 주입 하고 getMessage 방법 으로 국제 화 된 속성 값 을 가 져 옵 니 다.tomcat 서 비 스 를 시작 하면 볼 수 있 습 니 다.
그렇다면 자신의 설정 에 따라 언어 환경 에 해당 하 는 언어 정 보 를 표시 한다 면?
1. Session Locale Resolver 와 Locale Change Interceptor 설정
<!-- SessionLocaleResolver -->
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver"></bean>
<!-- LocaleChangeInterceptor -->
<mvc:interceptors>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"></bean>
</mvc:interceptors>
이곳 의 Locale Change Interceptor 는 locale 정보 가 있 는 요청 을 Locale 대상 으로 해석 하고 Locale Resolver 대상 을 얻 는 데 사 용 됩 니 다.이후 이 곳 의 Session Local Resolver 는 위의 Local Resolver 대상 을 Session 의 속성 으로 바 꾸 고 이 속성,즉 Locale 대상 을 꺼 내 응용 프로그램 에 되 돌려 줍 니 다.
2.index.jsp 에 하이퍼링크 추가
<a href="i18n?locale=zh_CN"> </a>
<br><br>
<a href="i18n?locale=en_US"> </a>
이렇게 하면 우 리 는 결 과 를 볼 수 있다.국제 화 를 말 하고 SpringMVC 가 json 에 대한 지 지 를 말 합 니 다.
전통 적 인 개발 과정 에서 우리 의 handler 즉 controller 층 은 보통 JSP 보기 로 전환 해 야 하 는 방식 을 따른다.그러나 이런 장면 은 모든 요 구 를 만족 시 킬 수 없다.예 를 들 어 우 리 는 JSP 페이지 가 아니 라 데이터 만 되 돌려 주면 된다.그렇다면 이때 SPRING MVC 3 의@Response Body 와@ResponseEntity 는 이러한 기능 을 지원 한다.Controller 는 구체 적 인 보 기 를 직접 가리 키 는 것 이 아니 라 데 이 터 를 직접 되 돌려 줍 니 다.업로드 와 다운로드 의 예 를 간단하게 들 어 보 겠 습 니 다.
1.파일 업로드
1.1 jquery 를 사용 하여 index.jsp 에서 ajax 요청 을 실현 합 니 다.
<%@ 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="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="scripts/jquery-1.9.1.min.js"></script>
<script>
$(function(){
$("#testJson").click(function(){
var url = this.href;
var args = {};
$.post(url, args, function(data){
for(var i=0; i<data.length; i++){
var id = data[i].id;
var lastName = data[i].lastName;
alert(id + ": " + lastName);
}
})
return false;
})
})
</script>
</head>
<body>
<a href="emps">list all employees</a><br/><br/>
<a href="testJson" id="testJson">testJson</a>
</body>
</html>
여기 서 핵심 은 jquery 로 쓴 ajax 요청 입 니 다.요청 한 url 은 정 의 된 href 입 니 다.
data 는 응답 을 요청 한 후 돌아 오 는 데이터 입 니 다.
정상 적 인 상황 에서 저 희 는 모든 직원 에 게 정 보 를 요청 하고 이 곳 을 통 해 모든 직원 의 모든 정 보 를 얻 을 수 있 습 니 다.예 를 들 어 id,lastName 등 입 니 다.
1,2.여기 세 개의 jar 가방 을 도입 해 야 합 니 다.
1.3.handler SpringMVCTest 에 인터페이스 추가
@ResponseBody
@RequestMapping("testJson")
public Collection<Employee> testJson(){
return employeeDao.getAll();
}
여기 서 제 개인 적 인 이 해 는 employee Dao 를 통 해 조회 한 모든 직원 정 보 를 응답 으로 인터페이스 에 되 돌려 주 고 최종 적 으로 일련의 처 리 를 통 해 json 의 데이터 형식 을 얻 은 다음 에 프론트 페이지 에서 분석 하 는 것 입 니 다.이 모든 것 을 완성 한 것 은 주해@Response Body 덕분이다.구체 적 으로 말 하면 내부 의 일부 converter 가 이러한 전환 을 하 는 것 이다.인터페이스 방법 에서 정지점 을 찍 고 디 버 깅 에 들어간다.
Dispatcher Servlet 을 선택 하여 this->handleradapters->element Data 를 찾 으 십시오.이 배열 에서 Request Mapping HandlerAdapter 를 찾 으 면 message Converters 를 찾 으 면 총 7 개의 converters 가 있 습 니 다.
여기 서 일곱 번 째 Mapping Jackson 2HttpMessage Converter 는 우리 가 상기 세 개의 jar 가방 을 추가 한 후에 야 불 러 온 converter 입 니 다.서로 다른 데이터 형식 처리 에 대한 변환기 가 충분 하 다 는 것 을 알 수 있다.
1.4 index.jsp 에 링크 추가
<form action="testFileUpload" method="POST" enctype="multipart/form-data">
File: <input type="file" name="file"/>
Desc: <input type="text" name="desc"/>
<input type="submit" value="Submit"/>
</form><br/>
최종 업로드 결 과 는 다음 과 같 습 니 다.2.파일 다운로드
2.1 다운로드 준비
웹 콘 텐 츠 에 files 디 렉 터 리 를 새로 만 들 고 aaa.txt 를 다운로드 소스 로 넣 습 니 다.
2.2 index.jsp 에 하이퍼링크 를 다운로드 입구 로 추가
<a href="testResponseEntity" id="testJson">testResponseEntity</a><br/>
2.3 handler SpringMVCTest 에 인터페이스 추가
@RequestMapping("testResponseEntity")
public ResponseEntity<byte[]> testResponseEntity(HttpSession session) throws IOException{
byte[] body = null;
ServletContext servletContext = session.getServletContext();
InputStream in = servletContext.getResourceAsStream("/files/aaa.txt");
body = new byte[in.available()];
in.read(body);
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Disposition", "attachment;filename=aaa.txt");
HttpStatus statusCode = HttpStatus.OK;
ResponseEntity<byte[]> response = new ResponseEntity<>(body, headers, statusCode);
return response;
}
tomcat 를 시작 하면 aaa.txt 를 볼 수 있 습 니 다.정말 다운로드 할 수 있 습 니 다~~자,여기까지 우리 뭐 했 어?
1.국제 화 지원
2.파일 업로드
3.파일 다운로드
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
springmvc application/octet-stream problemmistake: Source code: Solution: Summarize: application/octet-stream is the original binary stream method. If the convers...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.