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>
'프로그래밍 > Spring' 카테고리의 다른 글
10.16( lombok, redirect 메시지 잘 안뜨는 경우 ) (0) | 2020.10.16 |
---|---|
10.15(서버코드 수정 후 톰캣 재기동 없이 반영하기) (0) | 2020.10.15 |
10.13(jdbc & mybatis & dbcp 의존 라이브러리 추가, datasource & mybatis 관련 빈 등록) (0) | 2020.10.13 |
10.12(스프링 특징 : IoC, DI, POJO, PSA, AOP) (0) | 2020.10.12 |
10.08(스프링 인코딩 필터 설정 & 파라미터) (0) | 2020.10.08 |