상세 컨텐츠

본문 제목

Spring & Ibatis framework 5 - 2011.11.12

Work/Study

by 물빛미르 2011. 11. 12. 10:05

본문

728x90

드디어...마지막 시간이다!!!!!

첫 예제는 Annotation 기반 AOP 작업.
AOP로 세션관리를 하는 코드를 생성해 본다.

1. 환경설정
- web.xml 에 servlet 설정을 한다. 이제는 좀 익숙해져가는듯...^^
<servlet>
   <servlet-name>springapp</servlet-name>
   <servlet-class>
    org.springframework.web.servlet.DispatcherServlet
   </servlet-class>
  </servlet> 
 
  <servlet-mapping>
   <servlet-name>springapp</servlet-name>
   <url-pattern>*.do</url-pattern>
  </servlet-mapping>

- springapp-servlet.xml 파일을 생성해준다.
- 필요한 lib 파일을 복사해서 넣어준다.
- DB 연결이 필요한경우 index.html 을 실행해서 Server.xml에  context를 생성해준 뒤 Context 내부에 Resource 설정을 넣어준다.
<Resource auth="Container" driverClassName="oracle.jdbc.driver.OracleDriver" maxActive="100" maxIdle="30" maxWait="10000" name="사용할 이름" password="계정비번" type="javax.sql.DataSource" url="jdbc:oracle:thin:@localhost:1521:XE" username="계정명"/>

2. AOP
- 세션을 요청할 session_req.jsp파일을 생성해 준뒤 세션 값을 가지고 접근하는 경우 링크와 없이 접근하는 경우 링크를 생성해 준다.

- 팩키지를 구분하여 컨트롤러 클래스를 생성한 뒤 @Controller Annotation을 붙여준다. 컨트롤러 내부에 session_req.jsp 에서 링크로 걸어준 .do 파일들에 대한 맵핑을 @RequestMapping 을 붙여 메소드를 생성해준다.
메소드는 ModelAndView를 리턴해야하고, request와 ModelAndView를 파라메터로 가지도록 해야한다.
public ModelAndView session_action(HttpServletRequest request, ModelAndView mav){}

- aop 팩키지를 만들어서 내부에 aop클래스를 생성하는데 인터페이스나 클래스의 상속없이 일반 클래스를 생성하고 클래스명 위에 @Aspect 를 붙여서 Aspect 클래스로 만들어준다.
- 세션 체크는 동작 전에 실행되어야 하므로 @Before 어노테이션을 붙여서 메소드를 생성해 주면서 메소드를 실행할 JoinPoint를 입력해준다. 이번 예제에서는 public 으로 시작하는 메소드 중 리턴여부와 상관없이 session_로 시작하는 파라메터를 가지는 모든 메소드 실행 전에 실행하도록 설정을 넣어주었다.
@Before("execution(public * session_*(..))")

- 메소드는 JoinPoint를 파라메터로 받는데 이 JoinPoint를 통해서 실행 메소드의 파라메터 값을 가져올 수 있다. Object 배열로 joinPoint.getArgs()를 받으면 실행 메소드의 파라메터가 순서대로 객체로 반환된다. 형변환을 통해 파라메터를 변환하고 필요한 정보를 뽑아서 세션 처리를 한다.

@Before("execution(public * session_*(..))")
public void sessionCheck(JoinPoint joinPoint){
  Object[] args = joinPoint.getArgs();
  
  HttpServletRequest request = (HttpServletRequest)args[0];
  ModelAndView mav = (ModelAndView)args[1];
  HttpSession session = request.getSession();

  Object login = session.getAttribute("name");
  
  if(login == null){
   mav.setViewName("session_input.jsp");
  } else {
   mav.setViewName("session_success.jsp");
  }//if - login
}

- 세션 처리에 따라 필요한 jsp 파일을 생성해 준다.

- 가장 중요한 servlet 파일 설정!
이전에 Aop 실습시에는 인터페이스를 하나 생성했었는데, 이유는 무조건 인터페이스를 상속받아야만 프록시가 생성되기 때문이었다. 이번에는 aop의 autoproxy 태그를 선언하여 처리한다.
 <aop:aspectj-autoproxy></aop:aspectj-autoproxy>
 <aop:config proxy-target-class="true"></aop:config>
- 마지막으로 컨트롤러 클래스와 AOP 클래스 빈을 등록하면 끝~!!!

728x90

'Work > Study' 카테고리의 다른 글

2011.9월 BUILD 컨퍼런스 키노트  (0) 2012.02.17
카산드라  (0) 2012.01.30
Spring & Ibatis framework 4 - 2011.11.05  (0) 2011.11.05
아파치 재시작 없이 설정 적용하기!!  (0) 2011.10.31
Spring & Ibatis framework 3 - 2011.10.29  (0) 2011.10.29

관련글 더보기