본문 바로가기

기록

spring프로젝트_0920

mybatis 사용중 db 계정정보를 변경 이후 생긴 오류

1.  table is not exist  > mysql은 대소문자를 구분하여 필드명 대소문자 변경해주니 테이블 확인됨 

2. mapper 내 resultType이 boolean 인 select 쿼리가 작동하지 않음 

SELECT 
    IF(COUNT(member_id) = 1, 1, 0)AS userCheck
FROM member	
WHERE member_id = BINARY(#{id}) AND member_pw = #{pw}
>> where 조건절의 id/pw 일치하는 member_id 수가 1 이면 true(1)/ false(0)
>> mybatis에서 boolean 타입은 true를 0으로 false 를 1로 반환함

>  쿼리문제가 아니고 테이블 데이터 insert 가 안되어 있었음 

> 기존 계정의 테이블 데이터 insert 문 추출해서 새 계정의 복사된 테이블에 적용후 내용 확인함

----------------------------------------------------------------------------------------------------------------------------------------------------------------

location.href / location.replace 차이

  location.href location.replace 
 기능

새로운 페이지로 이동

기존페이지를 새로운 페이지로 덮어씌움
형태 속성 

메서드 

 
주소 히스토리

기록O / 뒤로가기 O 기록x / 뒤로가기 X


 문법

location.href='abc.php'  location.replace('abc.php') 

> 둘다 리다이렉트 목적이지만 location.replace 의 경우는 이전페이지로 접근이 필요없는 경우 사용하면 될 것

---------------------------------------------------------------------------------------------------------------------------------------------------------------

Controller 리턴타입

String > mapping에 작성해놓은 주소와 상관없이 return 에 작성된 주소의 view를 리턴

@RequestMapping("pension")
@Controller
public class PensionController {

    @RequestMapping(value = "logout", method = RequestMethod.GET)
    public String logout(HttpSession session) {
        session.invalidate();
        return "redirect:/member/login";
    }
}
>> redirect:/member/login return

void와 같은경우 mapping에 작성해놓은 주소의 view를 리턴함 

@RequestMapping("pension")
@Controller
public class PensionController {

    @RequestMapping(value = "request", method = RequestMethod.POST)
        public void regRequest(@RequestBody PensionVO vo) {
            service.createRequest(vo);
        }
    }

>> pension/request return

ModelAndView : 데이터를 전송시킬 수 있는 리턴 타입

@RequestMapping("pension")
@Controller
public class PensionController {

	@RequestMapping(value = "reqList", method = RequestMethod.GET)
    public ModelAndView reqList() {
        ModelAndView mav = new ModelAndView("pension/reqList");
        mav.addObject("list", service.findPensionList());
        return mav;
    }
}

>> modelAndView로 리턴시에는 매핑된 경로랑 보여주고자 하는 페이지가 같아도
   void 타입처럼 생략이 불가하기때문에 꼭 값을 넣어주어야 함
  1. setViewName : 어떤 페이지를 보여줄 것인지
  2. addObject : key와 value를 담아 보낼 수 있는 메서드

참조 https://ande226.tistory.com/101 

 

---------------------------------------------------------------------------------------------------------------------------------------------------------------

JSON.parse / JSON.stringify 

JSON.parse : 서버 > 클라이언트에게 전달하는 데이터를 파싱

JSON.stringify : 클라이언트 > 서버에게 데이터를 전송

++ ajax 통신할때 송신할 data속성에 key-value 쌍 여러개 들어갈때는 꼭 콤마 구분자 넣을 것

구분자 빠져있으면 HTTP 상태 405 – 허용되지 않는 메소드 오류 발생함

---------------------------------------------------------------------------------------------------------------------------------------------------------------

ajax로 put 요청 + put매핑된 컨트롤러 통신 시 404 오류 

> sts 콘솔창에 jdbc.sqlonly  로그로 수행된 쿼리문은 보이는데 jdbc.resultsettable  로그 안보임

> ajax에 담아 보낸 데이터가 mapper 까지 타서 db에 반영은 되는데 success 함수를 안탐 

+ put 요청의 경우 별도의 리턴 없이 update 반영하니까 void 로 리턴했는데 생각해보니 controller에서는 void의 의미가 단순 값 리턴 없음이 아니라 해당 메서드에 매핑된 uri로 포워딩하는 의미이기 때문에 페이지 404를 보여줌

+ 리턴 타입을 아래와 같이 @ResponseBody String 하고 @ResponseBody 를 붙이면 리턴을 jsp 페이지로 인식하지 않고 문자열 그자체로 응답하기 때문에 보고자하는 문자열을 넣어줌

+ 수정 확인

@RequestMapping(value = "/modReq", method = RequestMethod.PUT) 
public @ResponseBody String modify(@RequestBody PensionVO vo) { 
        service.modRequest(vo); 
        System.out.println(vo.getId());
        System.out.println(vo.getMemberID());
    return "success";
}

>> 리턴타입에 @ResponseBody 가 빠진 상태로 문자열을 리턴하고 있었음
>> 해당 어노테이션 추가 후 success 함수 내 location.href = "경로"; 이동 확인

참조 https://www.ionos.com/digitalguide/hosting/technical-matters/error-405-method-not-allowed-explanation-and-solutions/

**Hypertext Transfer Protocol(줄여서 HTTP)은 연결된 웹 서버에서 수행할 수 있는 가능한 작업을 나타내는 메서드

  • GET: 특정 URL 리소스와 관련된 정보 검색
  • HEAD: URL 리소스와 연결된 헤더 정보 검색
  • POST: 데이터를 웹 서버로 전송(예: 양식 데이터)
  • PUT: 특정 URL의 데이터를 클라이언트가 전송한 새로운 데이터로 교체
  • DELETE: 해당 URL 뒤에 있는 데이터 삭제

---------------------------------------------------------------------------------------------------------------------------------------------------------------

url 패턴 참고 https://lng1982.tistory.com/97

 

'기록' 카테고리의 다른 글

spring프로젝트_0929  (0) 2022.09.29
spring프로젝트_0921  (0) 2022.09.21
spring프로젝트_0919  (0) 2022.09.19
spring프로젝트_0916  (0) 2022.09.16
spring프로젝트_0915  (0) 2022.09.15