Edit : regexpr
RegExprFilter : [0-9]
소수점도 같이 표현해 주고 싶어서 .을 추가해 주었다.
Edit : regexpr
RegExprFilter : [0-9]
소수점도 같이 표현해 주고 싶어서 .을 추가해 주었다.
1. <tx:method> 태그의 속성 중에서 트랜잭션 전파 규칙을 설정하는 속성은 무엇인가?
1.propagation
2.isolation
3.read-only
4.rollback-for [5점]
제출답안
1
2. 스프링은 특수문자를 그대로 출력하기 위해 어떤 컨텍스트 파라미터를의 값을 false로 지정하면 된다. 어떤 컨텍스트 파라미터인가?
1.SessionStatus
2.defaultHtmlEscape
3.defaultMessage
4.errorCode [5점]
제출답안
2
3. 스프링은 다양한 상황에 알맞게 사용될 수 있는 Controller 구현 클래스를 제공하고 있다. 이들 클래스 중 여러 페이지에 걸쳐서 데이터를 입력하는 경우, 입력 폼의 흐름을 제어하고 입력한 데이터를 처리할 때 사용되는 클래스는 무엇인가?
1.AbstractWizardFormController
2.SimpleFormController
3.MutliActionController
4.AbstractCommandController [5점]
제출답안
1
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");
}
}
DECODE()함수의 Return 값관련 오류사항
Return값 = DECODE(expr, search, result [, search, result ]... [, default ])
- DECODE() 함수의 Return값은 첫번째 result(3번째 인수)의 Datatype에 따라 달라진다.
- 첫번째 result(3번째 인수)가 null 이라면 Return값의 Datatype은 String이다.
- 첫번째 result(3번째 인수)와 나머지 result나 defaut의 Datatype이 다르면
"ORA-01722: 수치가 부적합합니다." 에러가 발생한다.
한사번당 여러 서브페이지를 출력하는 경우
xml 쿼리정의 ->조건정의-> EMPNO = current()/EMPNO
각각의 서브페이지에는 empno를 구해서
주쿼리와 empno를 비교해서 페이지 넘김 처리를 하는 것이다.