본문 바로가기

자바스크립트 replaceAll을 하고 싶을때 let str = 'ab,cd,d,e';위와 같은 문자열에서 ','을 모두 공백으로 치환하고 싶을 때, /*** 맨 앞 하나만 바뀐다. 결과: abcd,d,e */ let newStr1 = str.replace(',', '');--> 원하는 결과가 나오지 않는다./*** 원하는 결과: abcdde */ let newStr2 = str.replace(/,/gi, '');--> 정규식을 사용해야 한다. ------------------------- 수정정규식을 모른다면, 이게 제일 속 편한 것 같다value.split('.').join('');
input 태그 name name값은 겹쳐도 상관없다. 1. 하나의 객체에 바인딩 하려고 한다면, 배열처럼 인덱스를 지정해줘 해당 name을 가진 property로 리스트형태로 받을 수 있고,2. 만약 한 페이지에 전송해야 할 폼이 n개 존재하고, 바인딩 시켜줘야 할 객체도 n개일 때,두 객체가 같은 이름의 property를 가졌다고 해도, name과 일치만 하면 바인딩을 시켜주기 때문에 신경쓰지 않아도 된다. 초반에 name은 무조건 고유한 값을 가져야 한다는 강박을 가졌었는데, 혹시나 나와같이 쓸데없는 고민을 하는 사람이 없었으면 한다.
mybatis selectKey 사용시 주의점(MAX() 사용 관련) 아래와 같이 사용해야 한다. (아래는 MySQL, 다른 DBMS는 찾아서 보시면 됩니다.) SELECT LAST_INSERT_ID() 아래와 같이 사용하면 데이터가 꼬일 수 있다. SELECT MAX(seq) FROM CS_ORDER 결론:각 DBMS의 가장 최근 pk값을 가져오는 함수를 써야 한다. 참고: https://stackoverflow.com/questions/3180510/last-insert-id-vs-select-maxid
logger 변수 private static final 선언이유? 보통 아래와 같이 무의식적으로 logger를 선언한다.private static final Logger logger = LoggerFactory.getLogger(ThisClass.class); 스택오버플로우를 보면, - private: 다른 클래스에서 가로채 사용하지 못하도록- static: 인스턴스당 하나만 필요하므로, 또한 직렬화를 피하기 위해- final: 변경될 일이 없으므로 라고 되어있는데, 영어라서 자세한 이유는 모르겠지만, 여러가지 이유로 static은 제외할 것을 권장한다고 한다.따라서 아래와 같이 선언하면 될 것 같다.private final Logger logger = LoggerFactory.getLogger(getClass()); 참고:https://stackoverflow.com..
@PathVariable .(dot, 점) 포함된 값 받기 @PathVariable로 값을 보낼때, email과 같이 .을 포함한 값을 보내면url이 점을 데이터로 해석하지 않고, 도메인의 .으로 인식하는지 점 이전의 값만 넘어와서 한참 헤멨다. 해결법은 아래와 같다.@RequestMapping(value = "/checkEmailDupl/{email:.+}")
jQuery ajax 동기식으로 사용하기 ajax를 사람이 직관적으로 생각했을때 그대로 사용하면 아래와 같은 문제가 발생한다. 가령 아래와 같은 경우이다./** * 폼 전송 */ function submitForm(formClass) { .......... // ajax 아이디 중복검사 if (validationResult == true) /** * 비동기식 ajax 함수 * async: true(defalut) */ checkIdDupl(); .......... // 최종 폼 전송 if ((validationResult = setFinalValidationResult(formClass)) == true) { /** * checkIdDupl()가 끝나기 전에 먼저 실행되어버린다. * --> 코드가 복잡해지면 파악하기 힘듦 */ printForm..
유효성 검증 1. 백엔드 + 프론트-> 프론트 귀찮다2. 백엔드-> 간편하다. 틀이 있다. -> 화면 깜빡임, 서버 리소스3. 프론트-> 말도 안된다.
스프링 classpath가 가리키는 곳 리소스 관련 설정을 할때 classpath:~~~~~와 같은 설정을 많이 한다. classpath가 가리키는 루트 디렉토리가 어디일까 생각해봤을때,빌드 전 디렉토리를 보면 이해가 안 갈수가 있다. 가령 위와같은 디렉토리에서 mybatis 설정파일을 읽어온다고 했을때,classpath:mybatis/mybatis-config.xml 와 같이 설정을 해 준다. 그냥 어딘가에 resourses를 루트로 바라보게 해놨겠지..라고 생각을 했는데 사실은 빌드된 타겟 폴더에서classes를 루트로 잡고 있다고 한다.