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 타입처럼 생략이 불가하기때문에 꼭 값을 넣어주어야 함
- setViewName : 어떤 페이지를 보여줄 것인지
- 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 = "경로"; 이동 확인
**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 |