SpringMVC 학습―국제 화+업로드+다운로드 상세 설명

12140 단어 springmvc국제 화
하나의 소프트웨어,하나의 제품,모두 조금씩 개발 되 고 완 선 된 것 입 니 다.기능 이 점점 많아 지고 성능 이 강해 지 며 사용자 체험 이 점점 좋아 집 니 다...................................................프랑스 인 용 등 은 이 제품 이 이미 국제 화의 큰 무대 에 올 랐 다 고 할 수 있다.인도의 친구 들 이 url 방문 제품 을 입력 할 때 화면 에'환영 합 니 다,삼 형'이 뜨 면 친구 들 은 그 자리 에서 동 그 라 미 를 칠 것 입 니 다.이때 국제 화 는 운 에 따라 생 겨 났 다.
국제 화 라 는 요 리 를 만 들 려 면 정말 생각 보다 복잡 하지 않 고 오히려 간단 합 니 다.믿 지 않 습 니 다.보 세 요.
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 가방 을 도입 해 야 합 니 다.
  • jackson-annotation-2.1.5.jar
  • jackso-core-2.1.5.jar
  • jackso-databind-2.1.5.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.파일 다운로드
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기