728x90
반응형

handler method는 controller에 사용자 요청을 처리하는 메소드를 의미
->@RequestMapping 붙은 메소드 생각하면 됨

 

 

response.sendRedirect와 동일
return "redirect:/demo/devList.do";

 

 

db에는 배열을 처리하기 위한 타입이 없음 (typeHaneder 직접만들기 )
그래서 미리 선처리 한 후 데이터를 넣어줘야함

mybatis-config.xml에 typeHandlers 등록 , typeAliases에 alias추가해서 사용
사용시에는 *-maaper.xml에서 #{lang, typeHandler = strArrTypeHandler} 이렇게 사용
vo에 스트링 배열로 잘 들어가게 하기위해

<resultMap type="dev" id="devMap">
	<result column="lang" property="lang" typeHandler="strArrTypeHandler"/>
</resultMap>

요렇게 작성하면 우리가 만든 typeHandler에서 getter부분 호출해서 알아서 잘 사용해줌

참고로, ORACLE DB에 저장된 '-'은 알아서 camelCasing 처리해서 읽어옴

ex) DB에 저장된 student_no는 resultMap으로 컬럼명 맞춰주지 않아도 알아서 studentNo로 읽힘

 

 

Model은 jsp에 특정값을 전달하기 위해 선언하는것
Model 선언 후 
model.addAttribute("key", value); 이렇게 키벨류 형식으로 작성하여 사용

 

 

@RequestParam을 쓰면 기본적으로 required속성이 true라 값을 안넘기면 요청이 진행 X
유효성 검사 대신해줌
ex) @RequestParam int no

 

@RequestMapping(value = "/demo/updateDev.do", method = RequestMethod.POST)
//post방식만 처리

 

 

msg.jsp대체할 수 있는것!
RedirectAttributes redirectAttr
이건 session에 일회성으로 저장해두고 보여주고 꺼내쓰면 지워짐

redirect이후에도 메시지를 사용자에게 전달가능
redirectAttr.addFlashAttribute("msg", result > 0 ? "Dev 등록 성공!" : "Dev 등록 실패!");
request에 저장된 메세지는 생명주기가 짧아서 redirect하면 없어짐 그래서 session에 저장해놓고
redirect후 msg꺼내쓰도록 할 수 있음 (꺼내쓰면 메세지 없어짐) 

 

 

header.jsp에 msg등록해놓고 사용하기(모든 페이지에서 사용할 수 있도록 header에 등록하기)
msg없으면 출력 X

<script>
	<!-- RedirectAttributes에 등록된 msg값 존재여부 확인 후 출력 -->
	<c:if test="${ not empty msg }">
		alert('${ msg }');	
	</c:if>
	<c:if test="${ not empty script }">
		self.close();	
	</c:if>
</script>
반응형
복사했습니다!