728x90

정말 간단한거지만..

그래도 나는 모르고 있었기에, 이번에 알았기에 메모한다.


예외처리를 할때 try-catch문을 쓰게되는데,

이때 catch문에서 잡힌 에러 메시지를 확인하고자 할땐

e.getMessage()를 이용하거나 e.toString()을 이용하여 확인할 수 있다.

728x90
728x90

나의 경우 톰캣 7.0.16버전을 설치했을때

전자전부프레임워크(스프링)이 부분적으로 정상적으로 구동되지 않아 애를 먹었다.


"Invalid byte tag in constant pool"같은 에러만 계속뜨고...
해서 2~3시간 동안 계속 삽질을 하다 혹시 톰캣 최신버전으로 깔아보자 해서 기존꺼 지우고 새로 설치했더니 말끔하게 구동되었다.

기존버전은 7.0.16버전이고, 이번에 새로 설치한 버전은 7.0.69버전이다.


728x90
728x90




개요. 

어노테이션에 대한 이해와 세션에 대한 이해가 부족하여 발생한 버그이다.


상황.

B수정페이지로 들어갔다가 바로 A수정페이지로 들어갔더니 A수정페이지에 없는 첨부파일이 보여지고 있었다.


원인.

1. 컨트롤러 상단에 @SessionAttributes으로 첨부파일에 대한 세션을 담아놓은 상태

2. 수정페이지를 보여주는 메소드 내에서는 첨부파일데이터가 null일때 모델에 아무것도 담지 않음.

3. 뷰단에서는 첨부파일 모델값이 비어있으니 세션에 있는 값이 보이게되었다.


해결.

컨트롤러의 수정페이지를 보여주는 메소드내에서 첨부파일 데이터가 null일때 빈 첨부파일VO를 모델에 담아 넘겨주었다.

아래는 해결소스의 일부를 각색하였다.

@SessionAttributes({"FileVo"}) 


    ---- 중간 생략 ----


FileVo fileVo = fileService.selectFile(컨텐츠idx);

if( fileVo!= null ) {

    model.addAttribute("FileVO",fileVo);                //fileVO값이 있으면 있는대로 데이터를 넣고,

} else {

    model.addAttribute("FileVO",new FileVo());        //없으면 없는대로 빈 객체를 넣어주었다.

}




728x90
728x90

이전동안 주로 쓰던 데이터베이스가 오라클이어서 새로 이직한 회사에서 실수가 잦은것 같다..

이곳에서는 오라클, MYSQL, MSSQL등등 다 쓴다.



이번에는 MSSQL에 대해서 자동증가값과 관련한 실수였다.

보통 오라클의 경우

INSERT INTO 컬럼명 VALUE 시퀀스.NEXTVAL();

의 쿼리를 써서 IDX를 준다.

하지만 MSSQL에서는 컬럼 자체에 자동증가설정을 한뒤, 쿼리부분에서 그 컬럼 부분을 빼버린다.

만약 테이블의 컬럼이 IDX, MY_NAME두개인 테이블에 데이터를 INSERT한다고 한다면,

INSERT INTO 테이블명 (MY_NAME) VALUES ('YJ')

라고 하면 되는것이다.



728x90
728x90

개요.

스프링에 대한 이해가 현저이 떨어질때, 혹은 자바에 대한 기본이해가 많지 않아 발생시킨 버그다(...)


상황.

리스트의 날짜 검색부분에서 검색버튼을 클릭하면 결과는 목록에 표시가 되는데, 내가 검색했던 날짜값이 없어진다.


원인.

뷰에서 컨트롤러안으로 리퀘스트를 받아오는 VO가 있었다. (이 VO를 A_VO라 하겠다.)

이 A_VO는 검색한 결과값을 가지고 다니다가 목록에 표시할 작업이 완료되면 그 값을 다시 A_VO에 담아 뷰페이지에 리스폰스를 하는 역활이다.

이 컨트롤러에 새로운 기능을 추가해야 해서 리턴값이 A_VO형태인 새로운 메소드를 만들었다.

그리고 나는 A_VO에 그 새로운 메소드의 결과값을 덮어씌워버렸다.(...)

이게 말로는 설명이 조금 애매하고... 예를 들어서 소스를 코딩하자면,

 
 @RequestMapping("/dir1/mappingTxt.do")
 public mappingTxt(HttpServletRequest request, @ModelAttribute("searchVO") A_VO a_VO,ModelMap model) throws Exception {
    //exMethod의 리턴형이 A_VO형이어서 그냥 파라메터로 들어온 a_VO에 넣어버렸다..
    a_VO = exService.exMethod();

    //그리고 그것을 다시 모델에 담아 뷰페이지로 보냈다.(...)
    model.addAttribute("searchVO", a_VO);

    return "dir/mappingTxt";
 }

이런식으로 작업을 해버린것이다.


해결.

이는 아래의 방법으로 버그를 처리했다.

 
 @RequestMapping("/dir1/mappingTxt.do")
 public mappingTxt(HttpServletRequest request, @ModelAttribute("searchVO") A_VO a_VO,ModelMap model) throws Exception {
    //새로이 A_VO형 객체 a_VO2에 exMethod메소드의 결과를 담았다.
    A_VO a_VO2 = exService.exMethod();

    //그리고 a_VO2의 get메소드로 결과데이터를 가져와서 파라메터 a_VO객체의 set메소드로 데이터를 넣어주었다.
    a_VO.setParameter(a_VO2.getParameter());

    model.addAttribute("searchVO", a_VO);
    return "dir/mappingTxt";
 }





728x90

+ Recent posts