XML설정

advice 클래스

public class Advisor {

public String returner(ProceedingJoinPoint joinPoint, HttpServletRequest req) throws Throwable  {

String URI = req.getRequestURI();

String contextPath = req.getContextPath();

joinPoint.proceed();

System.out.println("after");

System.out.println(URI);

System.out.println(contextPath);

String returnURI = URI.substring(contextPath.length()); 

return returnURI;

}

}

advice를 등록한다.

<bean id="myAdvice" class="com.zxy.Advisor" >

AOP-Config설정을 한다

<aop:config>

<aop:aspect ref="myAdvice">

<aop:pointcut id="myPointCut" expression="execution(* test..*Controller.*(..)) and args(req)" />

<aop:around method="returner" pointcut-ref="myPointCut" />

</aop:aspect>

<aop:aspect ref="myAdvice">

<aop:pointcut id="myPointCut2" 

expression="execution(* test..*(javax.servlet.http.HttpServletRequest, String)) and args(req, ctg)" />

<aop:around method="returner3" pointcut-ref="myPointCut2" />

</aop:aspect>

</aop:config>

<aop:aspect>태그의 ref는 참조할 advice bean id

<aop:pointcut> aspect적용 지점
     expression : 적용할 메서드 경로
execution은 메서드 전체 형식으로 지정한다.
접근제한자 반환타입 패키지를 포함한 메서드명 (인자)
<aop:around> method는 aspect로 동작할 메서드
   pointcut-ref는 참조할 pointcut id


HttpServletRequest를 받아서 URI를 받아 쓰고 싶은 경우가 생길 것이다.

파라메터를 받아 쓰고 싶은 경우는

execution에서 지정한 메서드 인자를 (..) 대신 타입을 패키지를 포함해서 써주고 args()도 추가해 주어야 한다.

(javax.servlet.http.HttpServletRequest, String) and args(req, ctg)

args()의 인자는 변수명을 쓴다.


전통적인 폭포수 개발방법 부터  최근의 애자일 방법론 등 소프트웨어 공학으로 이미 정립된 방법론이 많이 있지만

이미 있을지도 모르지만 나만의 개발 방법론을 정립해야겠다.


viewController


필요한 정보를 뿌려줄 경로 매핑


필요한 정보

title : 페이지 이름
model : 혹은 맵, 요청 정보가 담긴 객체로 주로 맵을 사용
     페이징 처리를 한다면 페이징 객체도 담음

메서드 이름을 어떻게 정해서 구분할 것인가?
DB하나의 튜플만 보여주는 경우와 list를 보여주는 경우
하나의 투플만 보여줄 경우 - 페이징 처리가 필요 없다.
메서드를 구분할 것인가 컨트롤러를 나눌 것인가?
예) 회원 목록을과 회원 정보, member 테이블에 member객체들
selectMember, selectMemberOne, selectOneMember
selectMemberList, selectListMember
아무래도 메서드 구분을 쉽게 하려면 one이나 list를 select다음에 붙이는게 좋지만
회화적으로는 뭔가 어색
정규식 표현
select*List, select*One, selectList*,selectOne*



항상 예상대로 개발 속도가 나질 않는다.

도와주는 사람은 아무도 없고 기간 압박은 커지고 스트레스만 쌓인다


09월21일 공부

redirect에 modelAttribute를 넘겨 주려면?


Model대신에 RedirectAttributes나 RedirectAttributesModelMap을 쓴다.

메소드는 addFlashAttribute를 사용해야 수신 컨트롤러 ModelAttribute와 충돌이 일어나지 않는다.


spring:message에는 다음 7가지가 있습니다.

code:         fmt:message의 key에 해당

arguments:                리소스 번들의 메시지에 {0}, {1} 같은 기호 자리에 들어갈 값을 나열

argumentSeparator:    arguments 속성에 값을 구분하는 기호, 기본은 콤마(',') 

text:                          code에 해당하는 메시지가 리소스 번들에 없을 때 사용될 메시지

message:                  MessageSourceResolvable 인터페이스를 구현한 객체 또는 MessageSourceResolvable를 나타내는 spel 식. 에러 메시지를 표시하려고 한다면 필요하겠죠.

htmlEscape:              true일 때 HTML 엔티티를 인코딩

javaScriptEscape:      true일 때 자바스크립트 문자열로 인코딩 

var:                           fmt:message와 동일

scope:                      fmt:message와 동일



'학습일기' 카테고리의 다른 글

네비게이션 관리를 효율적으로 하고 싶다.  (0) 2017.11.10
9월 21일 학습일기  (0) 2017.09.21
09월15일 학습일기  (0) 2017.09.15
08월21일 학습일기  (0) 2017.08.21
08월07일 학습일기  (0) 2017.08.07
08월02일 학습일기  (0) 2017.08.03

+ Recent posts