2022. 2. 23. 23:49ㆍ비즈니스 탐색/개발
(structs 예시 연습)
Struts2 인터셉터(initerceptor) : Action 총 수행 시간을 인터셉터로 구현
- 이번에는 Action의 전체 수행시간을 확인할 수 있는 인터셉터를 만들어서 두수의 합을 구하는 Action에 붙여보자
#Action의 수행시간 계산을 위한 Timer.java 작성
extends AbstractInterceptor 클래스를 상속.
클래스 변수로 log를 찍어내고 있다. (이 부분은 콘솔창에 빨간색으로 나오는 부분)
이 log는 println보다 출력하는데에 서버에 부담이 덜간다.
intercept가 가지고 있는 ActionInvocation invacation은 컨트롤러에서 액션으로 갈 때 잡히는 부분으로 목적지 액션의 정보를 가지는 것이다.
System.currentTimeMillis()을 log start 현재 시간에 집어넣고.
중간에 invoke()메서드가 있어 컨트롤러에서 액션으로 넘어가는 과정이 끝나고 다시 돌아갈 때에도 동작한다.
invoke를 기준으로 위는 전 인터셉터. 아래는 후 인터셉터라는 점!
# 액션 클래스 작성(SumAction.java)
도메인 오브젝트 / Preparable인터페이스의 prepare 구현 / ModelDriven 인터페이스의 getModel 구현 / result.jsp 에서 sum 값을 참조시키기 위한 .
mytimer가 만들어놓은 인터셉터를 구현.
prepare가 하는 일은 해당 클래스에 있는 sumaction에 있는 prepare메서드 호출.
modelDriven은 getModel을 호출
params는 파라미터를 대입시켜라는 것을 작업으로 한다.
dao생성해서 add dao에 num을 보내고 있다. dto는 파라미터까지 최종적으로 들어가 있는 상태.
+ 꼭 set, get이 함께 있어야하는 것은 아니다. 받기만 하는 값이면 get. 주기만 하는 값이면 set이라는 점 알고있다.
# 실제 비즈니스 로직처리를 위한 SumDAO.java
get num1과 get num2를 더한 값.
# model 역할을 하는NumberForAdd.java 를 생성하고,
# add.jsp / result.jsp 생성
num1과 num2가 add.action으로.
# add.jsp 를 실행하자.
브라우저에는 두수와 그 결과가 출력되지만 이클립스의 콘솔 창에서는 다음과 같이 Action이 수행된 시간이 출력된다.
정보: Action 수행 시간 >>>>> 2ms
기존에 만들었던 위 폼을 재수정해보자.
# 더해지는 두수를 입력하지 않은 경우
staticParam으로 두수를 “0”으로 초기화를 시키면
<action name="add" class="interceptor1.action.SumAction">
<param name=”num1”>0</param>
<param name=”num2”>0</param> //값이 입력되지 않으면 0이 출력.
★ 이것이 staticParams!
staticParams Interceptor는 struts.xml의 액션설정에서 params요소로 입력한 값들을 ValueStack의 객체에 세팅하는데 상단에 Action이 있으므로 Action의 Property를 세팅하게 되는 것이다. 이는 HTTP 요청파라미터와 같은 효과를 나타내는데 staticParams Interceptor를 params Interceptor 앞에 붙이면 staticParams Interceptor에서 설정한 파라미터를 같은 이름이라면 params Interceptor에서 다시 세팅하게 된다.
즉 staticParams Interceptor에서 세팅하는 값은 default value의 성격을 갖게 된다.
★ <interceptor-ref name="staticParams"/>
파람스보다 위에 있어야한다.
이 경우 form을 서브밋하지 않아도 NumberForAdd 객체의 두수가 static 파라미터로 초기화 된다.
staticParams Interceptor의 다른 기능은 Parameterizable 인터페이스를 구현한 Action에 parameter Map을 세팅한다. Parameterizable 인터페이스에는 3개의 메소드가 있는데
staticParams Interceptor는 setParams() 메소드를 통해 Parameter Map을 세팅 한다.
'비즈니스 탐색 > 개발' 카테고리의 다른 글
[struts/servletConfig] 인터셉터(initerceptor) – servletConfig (0) | 2022.02.23 |
---|---|
[spring/framework] 스프링, 파일업로드 한 개일 때와 다수의 파일 업로드 시키는 방법에 대해서! (0) | 2022.02.23 |
[struts/framework] 인터셉터 개요 및 사용자 입력값 처리 (0) | 2022.02.23 |
[spring/framework] Struts1 과 Struts2의 Action 비교 (0) | 2022.02.23 |
[이클립스 오류 해결] Server Tomcat Server at localhost failed to start. (0) | 2022.02.23 |