본문 바로가기

학원 일기/학원-Spring

스프링0630

인터셉터 사용 / 맵퍼xml에서 inner left값 사용하기

 

인터셉터 사용하기

 

1.config파일에 inerceptor-context.xml 파일생성

 

2.name space에서 mvc라이브러리 적용

 

3.DispatcherServlet의 param-value태그에 해당xml파일 추가

 

4. <bean id="아이디명" class="인터셉터를 시작할 자바클래스파일경로입력"/>

- 해당 자바클래스파일을 bean형태로 만든다

 

5. <mvc:interceptors> 태그안에 <mvc:mapping path:"인터셉터할요청경로"><ref bean="위에생성한빈아이디">

- path에설정한 요청이들어오면 해당요청값을 ref bean이참조하는곳으로 전달한다

 

 

6. interceptor디스패처서블릿이 참조하는 인터셉터(자바클래스)파일 생성

 

6-1) extends HandlerInterceptorAdaptertkdthr

6-2)controller를 들어가기전이라면 preHandle을 나간직후라면 postHandle을 상속

6-3)해당 값을 service호출 맵퍼호출 db접근을통하여 원하는 검증을 실행

6-4)컨트롤러로 요청을 전달하고싶다면 true를 반환 전달하지 않겠다면 false반환 

 

기억해둘것 ) post같은경우 ModelAndView modelAndView객체를 전달받았는데 해당 객체의 변수는

                 컨트롤러의 반환값을 담고있었다 그리고 특별한 함수가 여러가지있었다

                  getModelMap(); 해당값을 ModelMap클래스의 맵형태의 객체로 받을수있다.

                  modelAndView.setViewName("user/userLogin") 처럼 <<이게뭐지?.. 우선이게있어야한다

 

lefte join 활용법

 

해당경우는 특정사용자가 마이페이지를 들어갔을때 본인의 게시글을 볼수있어야하는 상황이였다

데이터의 처리야 똑같았지만 sql문은

 

해당유저 테이블에 댓글테이블을 left join해야하는 특별한상황이 있었다.

 

그래서 유저의 정보를담는 UserVO안에 FreeBoardVO의 객체도 받을수있게 

private ArrayList<FreeBoardVO> userBOadrList;를 추가해줬다.

 

1.  레프트조인의주체인 테이블 VO객체에  조인되는 테이블의 VO객체생성

 

2. xml파일 sql문에 반환값을 resultMap="ㅇㅇ"으로 반환

 

3.<resultMap type="UserVO(만들타입)" id="ㅇㅇ(resultMap의 반환값 이름)" >

 

3-1) 일반객체는 <result property="userId" column="테이블 속성명"/> 으로담는다

- 조회된 테이블속성의 값을 property의 값과 동일한 이름의 객체에 값을저장한다

3-2) <collection property="userBoardList" resultMap="boardList(임의로 지정한이름 아래나온다)"/>

- left join할 테이블의 값을 boardList로 가져와서 userBoardList로 담는다

 

4. <resultMap type="FreeBoardVO(userBoadrList의 클래스타입)" id="boardList(collection태그의 resultMap네임값">

   <result proerty ="FreeBoardVO의 변수명" column="담을속성값"/> 

 

즉 , <resultMap>이란태그를 통해서 Map형식으로 값을 받으며 type은 저장한클래스타입 

     id는 해당값을 돌려줄 resultMap의 값과 동일하게 만들어주면된다.

     위의 과정을 적용해서 select문안에 map을 반환받게끔만들고

     해당 map을반환하는 resultMap태그안에는 FreeBoard를 반환받게끔 

     <select>가아닌 <collection property="" resultMap="">을 이용하여

     <resultMap>의 맵을 저장한다

 

그렇게 되면 해당 select문은 UserVO으로 반환받을값을 맵형식으로 그값중하나는 또맵형식인상태로 받을수있다.

 

그렇게 해당값을 반환을 받으면 반환받는 페이지에서는 left join된 두개의 테이블의 값을 각각조회할수있다

 

ex) ${"전달값이름.userID"} // 이것은 UserVO의 값

ex) ${"전달값이름.boardList.bno"}  // 이것은 UserVO안에있는 FreeBoard타입 객체안의 bno값을 가져온것이다.

'학원 일기 > 학원-Spring' 카테고리의 다른 글

스프링0706  (0) 2021.07.07
스프링 20210705  (0) 2021.07.05
06-29 스프링  (0) 2021.06.29
주요 maven repository  (0) 2021.06.29
스프링10 /with jquery  (0) 2021.06.27