반응형


 1. <tx:method> 태그의 속성 중에서 트랜잭션 전파 규칙을 설정하는 속성은 무엇인가?

1.propagation
2.isolation
3.read-only
4.rollback-for [5점]  
  
 제출답안

 
 
    2. 스프링은 특수문자를 그대로 출력하기 위해 어떤 컨텍스트 파라미터를의 값을 false로 지정하면 된다. 어떤 컨텍스트 파라미터인가? 

1.SessionStatus
2.defaultHtmlEscape
3.defaultMessage
4.errorCode [5점]  
  
 제출답안

 
    3. 스프링은 다양한 상황에 알맞게 사용될 수 있는 Controller 구현 클래스를 제공하고 있다. 이들 클래스 중 여러  페이지에 걸쳐서 데이터를 입력하는 경우, 입력 폼의 흐름을 제어하고 입력한 데이터를 처리할 때 사용되는 클래스는 무엇인가?

1.AbstractWizardFormController
2.SimpleFormController
3.MutliActionController
4.AbstractCommandController [5점]  
  
 제출답안

 
 
 4. EJB3 버전에 포함되어 있는 API로서, 하이버네이트와 마찬가지로 ORM을 지원하는 API이다. EJB3 버전에 포함되어 있기는 하지만 EJB 컨테이너가 없어도 사용할 수 있기 때문에 하이버네이트와 함께 점차 사용이 늘어나고 있다. 또한, 하이버네이트와 달리 Sun에서 제시한 표준 규약이기 때문에 JEE5 컨테이너가 지원한다는 장점이 있는 이것은 무엇인가? [5점]  
  
 제출답안
JPA (Java Persistence API) 
 
 
 
    5. 메서드가 아닌 특정 타입에 속하는 메서드를 Pointcut으로 설정할 때 사용되는 명시자는 무엇인가? [5점]  
  
 제출답안
within 
 
 
 
    6. SessionLocaleResolver는 어디에 Locale 정보를 저장하는가? [5점]  
  
 제출답안
HttpSession에 locale정보를 저장 
 
 
 
 7.
스프링 MVC의 주용 구성요소에 대해서 설명하시오.

[15점]  
  
 제출답안
DispatcherServlet : 클라이언트의 요청을 전달받는다. 컨트롤러에게 클라이언트의 요청을 전달하고 컨트롤러가 리턴한 결과값을 view에 전달하여 알맞은 응답을 생성하도록 한다.
HandlerMapping : 클라이언트의 요청 URL을 어떤 컨트롤러가 처리할지를 결정한다.
컨트롤러: 클라이언트의 요청을 처리한 뒤, 그 결과를 DidspatcherServlet에 알려준다. 스트럿츠의 action과 동일한 역할을 한다.
ModelandView : 컨트롤러가 처리한 결과 정보 및 뷰 선택에 필요한 정보를 담는다.
ViewResolver : 컨트롤러의 처리 결과를 생성할 뷰를 결정한다.
뷰 : 컨트롤러의 처리 결과 화면을 생성한다. 
 
  
  
 
 
    8.
ACID에 대해서 설명하시오.
 
  
 제출답안
ACID: 트랜잭션을 설명할때 4가지 특징을 이야기한다.

Atomic : 트랜잭션은 한 개 이상의 동작을 논리적으로 한 개의 작업 단위로 묶는다. 원자성은 트랜잭션 범위에 있는 모든 동작이 모두 실행되거나 또는 모두 실행이 취소됨을 이야기한다.
Consistent: 트랜잭션이 종료되면, 시스템은 비지니스에서 기대하는 상태가 된다. 서적 구매 트랜잭션이 성공적으로 실행되면 결제 내역, 구매내역, 잔고정보가 비지니스에 맞게 저장되고 변경된다.
Isolated: 트랜잭션은 다른 트랜잭션과 독립적으로 실행되어야 하고, 서로 다른 트랜잭션이 동일한 데이터에 동시에 접근할 경우 알맞게 동시 접근을 제어해야한다.
Durable: 트랜잭션이 완료되면, 그 결과는 지속적으로 유지되어아한다. 현재의 어플리케이션이 변경되거나 없어지더라도 데이터는 유지된다. 
 
 
 
 9.
다음은 referenceData 메서드를 이용하여 <select> 태그에서 사용될 옵션 목록을 전달할 예이다.
  ...
 @SuppressWarnings("unchecked")
 @Override
 protected Map referenceData(HttpServletRequest request) throws Exception {
  List<String> loginTypes = new ArrayList<String>();
  loginTypes.add("일반회원");
  loginTypes.add("기업회원");
  loginTypes.add("헤드헌터회원");

 

  Map reference = new HashMap();
  reference.put("loginTypes", loginTypes);
  return reference;
 }

 

<form:select> 커스텀 태그를 통해 HTML 태그가 생성된 예이다.
...
<select id="loginType" name="loginType">
   <option value="일반회원">일반회원</option>
   <option value="기업회원">기업회원</option>
   <option value="헤드헌터회원">헤드헌터회원</option>
</select>

 

<form:select> 커스텀 태그를 이용하여 위에 <select> 태그를 생성하도록 작성하시오.
<%@ page contentType="text/html; charset=EUC-KR" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<form:form commandName="login">
<form:errors />
<p>
 (①  ....                             

 


      )
}
</p>
...
</form:form>

 

정확한 코드 작성(80%)
프로그램 구조 이해 (20%)

[20점]  
  
 제출답안
<form:select path="loginType">
<form:option value ="일반회원"/>
<form:option value ="기업회원">기업</form:option>
<form:option value ="헤드헌터회원" lavel="헤드헌터"/>
</form:select> 
 
 
    10.
validate() 메서드를 적용하여 id와 password를 검사하고, 에러정보를 저장하도록  작성하시오.
package kame.spring.chap04.controller;

 

import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;

 

public class LoginCommandValidator implements Validator {

 

 @SuppressWarnings("unchecked")
 @Override
 public boolean supports(Class clazz) {
  if (LoginCommand.class.isAssignableFrom(clazz))
   return true;
  return false;
 }
  (①  ....                             

 

      )
 }

 

 private boolean isEmpty(String value) {
  if (value == null || value.length() == 0) {
   return true;
  }
  return false;
 }

 

}


 제출답안
public void validate(Object target, Errors errors){
LoginCommand command = (LoginCommand) target;
if(isEmpty(command.getId())){
errors.rejectValue("id", "required");
}
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "password", "required");
if(isEmpty(command.getLoginType())){
errors.rejectValue("loginType", "required");
}

 
 

반응형

+ Recent posts