데이터베이스에 값을 입력하는 중 에러가 발생했다...
정확히는 SQL과 파라미터를 조합해 로그를 찍어주는 곳에서...
처음 보는 에러네?
로그...
### Error updating database. Cause: java.lang.IndexOutOfBoundsException: No group 2
에러를 발생한 값...
2018-10-14 20:15 [DEBUG] ******* field value : {bcrypt}$2a$10$Rq1GlJlTVLXL/9GQLohX6.YGkn/yAHa.ZSOLekODrY.wVjTDvE1Sy
비밀번호를 암호화 하게되면 $가 문자열에 포함되게 되는데 이 $가 replace 쪽에서 문제를 일으키는 것...
이럴 땐 좀 복잡하지만 돌아가야 한다...
public class ReplaceTest {
public static void main(String[] args) {
String sql = "This is password : ?";
HashMap<String, String> field = new HashMap<String, String>();
field.put("passwd", "{bcrypt}$2a$10$2ZnW3nw1AVN1jyKpa3uZJO0EhJ71jXDyahxbHTmlBu5MTsLPN3no2");
String regex = "\\?";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(sql);
sql = matcher.replaceFirst(matcher.quoteReplacement("'" + field.get("passwd") + "'"));
System.out.println(sql);
}
}
result : This is password : '{bcrypt}$2a$10$2ZnW3nw1AVN1jyKpa3uZJO0EhJ71jXDyahxbHTmlBu5MTsLPN3no2'
'백엔드 > Java' 카테고리의 다른 글
Couldn't connect to host, port: localhost, 25; timeout -1 (0) | 2019.04.24 |
---|