데이터베이스에 값을 입력하는 중 에러가 발생했다...
정확히는 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' 카테고리의 다른 글

[Java] java.lang.IndexOutOfBoundsException: No group 2  (0) 2018.10.14
회원가입을 진행하던 중 HTTP 403 에러가 발생하였다.

Spring Security 3.2  이후 버전에서는 적절한 CSRF 토큰을 포함시켜주지 않으면 에러를 발생하게끔 되어있다.

관련 로그
2018-10-14 18:10 [DEBUG] /user/register.do at position 1 of 14 in additional filter chain; firing Filter: 'SecurityContextPersistenceFilter'
2018-10-14 18:10 [DEBUG] HttpSession returned null object for SPRING_SECURITY_CONTEXT
2018-10-14 18:10 [DEBUG] No SecurityContext was available from the HttpSession: org.apache.catalina.session.StandardSessionFacade@4f72f029. A new one will be created.
2018-10-14 18:10 [DEBUG] /user/register.do at position 2 of 14 in additional filter chain; firing Filter: 'ConcurrentSessionFilter'
2018-10-14 18:10 [DEBUG] /user/register.do at position 3 of 14 in additional filter chain; firing Filter: 'WebAsyncManagerIntegrationFilter'
2018-10-14 18:10 [DEBUG] /user/register.do at position 4 of 14 in additional filter chain; firing Filter: 'HeaderWriterFilter'
2018-10-14 18:10 [DEBUG] /user/register.do at position 5 of 14 in additional filter chain; firing Filter: 'CsrfFilter'
2018-10-14 18:10 [DEBUG] Invalid CSRF token found for http://localhost:8080/jedu/user/register.do


CSRF 토큰을 (쉽게) 포함시키기 위해 선행되어야 하는 작업으론..
  1. spring security taglib 선언
  2. ajax를 사용하는가?

in jsp....
<%@ taglib  uri="http://www.springframework.org/security/tags"  prefix="sec" %>

위 처럼 jsp에 taglib를 선언한다.



ajax를 사용하지 않고 form을 submit 하는 방식이라면 아래처럼..

<form class="m-0 sky-form" name="regForm" method="post" enctype="multipart/form-data">
    <sec:csrfInput />
    .........
</form>

만약 ajax를 사용한다면 <head> 태그 아래에...

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<sec:csrfMetaTags />

CSRF 정보를 추가하는 방법이 각각 다르므로 유의해야 한다..

ajax 호출시에는 header 정보에 CSRF 정보를 넣어주어야 하는데 아래 코드와 같다.
var csrfParameter = $("meta[name='_csrf_parameter']").attr("content");
var csrfToken = $("meta[name='_csrf']").attr("content");
var csrfHeader = $("meta[name='_csrf_header']").attr("content");
var headers = {};
headers[csrfHeader] = csrfToken;

$.ajax({
    url: '<c:url value="/user/register.do" />',
    type: "POST",
    headers: headers,
    data: formData,
......
});



2018년 6월 30일 오전.. 축구하던 중... 무릎이 뒤틀리는걸 느끼고 119에 실려 갔다.. 


한번도 느껴본 적 없는 고통이라 예삿일이 아니라 생각되었고 결국 당일 MRI까지 촬영을 했다. 

(119를 통해 간 병원은 응급의학과 소견으로 타박상이 아닐까 말하지만 정확한 원인을 알아야 하기에 의뢰서 발급받아 2차 병원으로 이동함)


MRI를 촬영했지만 토요일이다보니 당일 판독이 불가능하여 월요일까지 기다린 후 1차 판독을 받아보니.... 

동그랗게 그린 부분이 전부다 피더라.. 무릎에 피가 고이니 움직이는게 제한되고 아프고 그런 것...

이건 주사기로 빼야됨. 그래야 그나마 움직일 수 있음.


동그라미 친 부분이 반월상 연골 부분인데 파열이다.. 

반대쪽(좌측)과 비교해보면 확연히 구분된다.


위 사진은 전방 십자인대인데... 아래쪽 무릎에서 나오는 검은색이 위쪽 무릎과 연결이 되어야 하는게 맞다.
근데 위쪽에서 떨어져 나간게 보인다... 고로 파열.... 

1차 판독시에도 십자인대가 제자리에 없네? 였다.... 


후방 십자인대는 다행이 잘 붙어 있다. 

저렇게 위아래 연결되어 있어야 하는건데 십자인대는 가출해버린 것... 


수요일 2차 판독 겸 대학병원으로 갔는데 아니나 다를까 수술 결정.

그런데 수술을 바로 하지 않고 대퇴사두근에 힘주는 연습을 한 후에 수술을 해야 한단다.
그 이유는 힘주는 걸 안하게 되면 재활 속도에 차이가 심해서 수술 전 재활을 먼저 하고 수술을 진행..

근데 십자인대를 다치니까 진짜 대퇴사두근에 힘이 안들어감 ㄷㄷ
아침 저녁으로 열심히 하니까 겨우 힘이 들어가긴 하는데 왼쪽 다리와 비교하면 차이가 심한 걸 알 수 있다.


어쨋든.. 최소 9개월은 운동 못함... 젠장


'정보 > 건강' 카테고리의 다른 글

전방십자인대 파열 및 반월상 연골 파열  (0) 2018.07.15

+ Recent posts