개발 34

[에러일기]ajax통신 중 error:SyntaxError: Unexpected token 'c' in JSON

@RequestMapping(value = "/joinus/authCheck", method = RequestMethod.POST) public String checkMail(@RequestBody HashMap data) { String email = (String) data.get("email"); String userAuthKey = (String) data.get("userAuthKey"); String result = mailService.checkAuthMail(email, userAuthKey); return result; }​ 백단 소스 $.ajax({ type : "POST", url : "authCheck", data : JSON.stringify({ "email" : email, "u..

개발 2023.10.10

Spring 설정 중 properties파일 xml에서 이용하기

XML파일에서 db나 smtp, aws 설정 등을 해주게 되면 개인정보가 git 등에 노출되지 않도록 조심해야 한다 이 경우 properties파일을 이용한다. properties파일을 사용해야 하는 xml에서 이를 넣어주면 모든 properties파일을 읽어온다. 이번 프로젝트에서는 db와 mail 관련한 정보들을 properties에 넣었다. db.properties db.url=jdbc:oracle:thin:@localhost:1521:xe db.username=db유저이름 db.password=비밀번호 mail.properties mail.username=내아이디@naver.com mail.password=내비밀번호 그리고 사용하려는 xml로 돌아오면... true true true UTF-8 s..

개발 2023.09.24

[에러일기] Path contains invalid character:

노트북 처음 받고 윈도우 설정할 때 아무것도 몰랐던 새내기는 냅다 한글이름 석 자 박고 시작했다 그로 인해 학부 내내 고통받다가 취업한 후까지 고통받을 줄은 꿈에도 모르고.... 아무튼 오늘 노트북으로 스프링 프로젝트 세팅 중 에러가 났다 co m.sun.org.apache.xerces.internal.util.URI$MalformedURIException: Path contains invalid characte 한글 딱 봐도 윈도우 사용자명이 한글이라서 경로가 한글이라 나는 문제같기에 찾아보니 역시나였다. 한글 파싱을 위해 pom.xml에 디펜던시 추가하여 해결 xerces xercesImpl 2.9.1

개발 2023.09.19

CallableStatement로 Stored Procedure 사용하기

개발서버 테스트 중 프로시저 에러가 나서 뜯어봤다 기존엔 이벤트스케줄러에서 바로 프로시저를 호출하는 방법으로밖에 써보지 않아서 자바단에서 sp를 사용하는 코드를 처음 봄 기념으로 정리해본다 CallableStatement란? SQL의 스토어드 프로시저(Stored Procedure)를 실행시키기 위해 사용되는 인터페이스. 스토어도 프로시저란, query문을 하나의 파일 형태로 만들거나 데이터베이스에 저장해놓고 함수처럼 호출해서 사용하는 것이다. 이를 자바에서 사용하면 자바코드에 query문이 들어가지 않으므로 자바 코드가 간결해지고 sql에 독립적이 된다. 스토어드 프로시저를 자바에서 사용하려면, execute를 호출하기에 앞서 registerOutParameter()를 호출해야 한다 sp의 특이한 점은..

개발 2023.09.19

POST방식으로 AJAX를 보낼 때, JSON parse error: Unrecognized token 'postidx'

$.ajax({ type: "post", url: "/board/newreply", data: JSON.stringify({ "postidx" : idx, "reply" : reply }), dataType:'json', async: true, //비동기 여부 contentType: "application/json", success: function (result) { console.log(result); } }) 컨트롤러 // 댓글 작성 @RequestMapping("/board/newreply") public ResponseEntity newReply(@RequestBody HashMap data){ Map map = new HashMap(); String postidx = (String)data.g..

개발 2023.02.13

Mysql : INSERT 후 다른 테이블 UPDATE하는 트리거

결제테이블에 결제가 insert되면 멤버테이블의 결제금액도 update해야 되는 트리거 AFTER INSERT TRIGGER CREATE DEFINER=`admin`@`%` TRIGGER `PAYMENTHISTORY_After_insert` AFTER INSERT ON `PAYMENTHISTORY` FOR EACH ROW BEGIN UPDATE MEMBER SET MEMBERPOINT = MEMBERPOINT + NEW.PAYAMOUNT WHERE MEMBERID = NEW.MEMBERID; END CREATE DEFINER=`admin`@`%` TRIGGER `PAYMENTHISTORY_After_insert` AFTER INSERT ON `PAYMENTHISTORY` FOR EACH ROW BEGIN..

개발 2023.02.06

포스트맨으로 스프링 시큐리티가 적용된 프로젝트 테스트하기

사이트에서 직접 주소를 접근할 땐 잘 나오는데 포스트맨으로 테스트 할 때마다 class java.lang.String cannot be cast to class kr.or.kosa.security.User 에러가 떴다. 포스트맨에서 시큐리티를 사용하는 방법을 찾아보았다 Authorization 탭에서 Type은 Basic Auth를 선택하고 Username과 Password에 DB의 올바른 로그인정보를 입력해준다. 이제 잘 나온다!

개발 2023.02.03

스프링 시큐리티 컨트롤러에서 로그인한 customUser 받아오기

컨트롤러에서 마이 페이지를 조회하는 경우 위와 같이 Principal을 이용해 지금 로그인한 유저의 정보를 받아왔는데, 이때 principal.getName()으로 아이디를 받아오고 이 아이디로 또 dao에서 회원 정보를 조회하는 방식이 조금 이상하게 느껴졌다. 세션을 쓸까 했는데 시큐리티를 쓰는 거 시큐리티에도 분명히 방법이 있을텐데 해서 찾아봤다 https://itstory.tk/entry/Spring-Security-%ED%98%84%EC%9E%AC-%EB%A1%9C%EA%B7%B8%EC%9D%B8%ED%95%9C-%EC%82%AC%EC%9A%A9%EC%9E%90-%EC%A0%95%EB%B3%B4-%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B8%B0 [Spring Security] 현재..

개발 2023.02.02

Mybatis mapper에서 두 개의 파라미터를 받는 법

학생 이름과 학교 코드를 이용해서 검색을 하는 함수를 구현해야 한다 파라미터 두 개를 넣는 방법을 찾아보았다 //특정 회원 조회(이름) public List getMemberByName(@Param("name")String name, @Param("universitycode")String universitycode); dao 인터페이스에서 위와 같이 @Param("")을 붙여준다. SELECT memberid, password, universitycode, NAME, major, email, gender, phone, parentsphone, memberpoint, demerit FROM MEMBER WHERE name= #{name} AND universitycode = #{universitycode}..

개발 2023.01.31

스프링 시큐리티 : resultMap (authmap)

member테이블엔 권한 관련 정보가 없다. 이러한 권한 정보는 memberauth 테이블에 존재한다. mapper에서는 이 member를 member와 memberauth 테이블을 조인해서 가져오기 때문에 resultMap을 사용했다. SELECT m.memberid, m.password, m.universitycode, m.name, m.major, m.email, m.gender, m.phone, m.parentsphone, m.memberpoint, m.demerit, auth FROM MEMBER m LEFT join MEMBERAUTH a ON m.MEMBERID = a.MEMBERID WHERE a.auth = 'ROLE_MEMBER' AND m.UNIVERSITYCODE = #{univer..

개발 2023.01.31