Programming/JPA ⁄Spring 50

MAXIMUM SESSIONS OF 1 FOR THIS PRINCIPAL EXCEEDED 해결하기

MAXIMUM SESSIONS OF 1 FOR THIS PRINCIPAL EXCEEDED 해결하기 Spring Security를 사용해 로그인 인증 처리를 하고 있습니다. 정상적으로 로그인, 로그아웃이 이루어지고 있는데 특정 시점마다 자꾸 로그인이 제대로 되지 않는 문제가 있었습니다. Session의 에러 메시지를 확인 하니 MAXIMUM SESSIONS OF 1 FOR THIS PRINCIPAL EXCEEDED 문제 였고, 해결을 위해 선생님을 찾아 갔습니다. spring security 를 관리하는 xml 파일입니다. 아래의 max-sessions = 1 부분에서 최대 세션을 1개로 제한하고 있는데, 세션을 추가로 생성하려고 했기 때문에 생겼던 문제 입니다. 서버에서는 해당 회원은 이미 로그인이 되어..

Programming/JPA ⁄Spring 2021.06.10 (2)

Eclipse에서 Tomcat 프로젝트 Context Path 변경하기.

ContextPath가 https://localhost/gaia 로 잡혀 있습니다. 나중에 배포를 하더라도 gaia.co.kr 이런식으로 되어야지 gaia.co.kr/gaia 로 도메인 하위 contextPath를 잡는 사람은 아무도 없겠죠? 저희팀에서 만들고 있는 프로젝트는 URL을 네비게이션 처럼 사용 할 수 있게 하고 pathVariable을 적극적으로 사용하고 있는데요, kkobuk 이란 아이디가 생성한 testproject 에서 issue 들을 열람 하면 아래와 같이 kkobuk/testproject/issue의 URL 주소를 갖습니다. Restful API 까지 활용하며, 하위로 /1 까지 하면 1번 이슈를 조회 하게끔 했습니다. 확대해서 보면 주소가 아래와 같습니다. ContextPath를 ..

MyBatis update 조건에 따른 동적 쿼리 작성하기 , Unable to convert type java.lang.Integer of 12 to type of java.lang.CharSequence 해결 방법

MyBatis update 조건에 따른 동적 쿼리 작성하기 및 Unable to convert type java.lang.Integer of 12 to type of java.lang.CharSequence 오류 해결 방법 UPDATE KANBAN_CARD UPDATE KANBAN_CARD SET KB_CARD_PRIV_NO = #{kb_card_priv_no,jdbcType=NUMERIC} ,MEM_NO = #{mem_no,jdbcType=NUMERIC} ,KB_COL_NO = #{kb_col_no,jdbcType=NUMERIC} ,ISSUE_SID = #{issue_sid,jdbcType=NUMERIC} ,KB_CARD_CONT = #{kb_card_cont,jdbcType=VARCHAR} ,KB_C..

서블릿에서 한글 쿠키 사용하기. An invalid character [32] was present in the Cookie value 해결하기.

Cookie에 간단하게 String 데이터를 넣는데 에러가 발생했습니다. SEVERE: Servlet.service() for servlet [springDispatcherServlet] in context with path [/gaia] threw exception [Request processing failed; nested exception is java.lang.IllegalArgumentException: An invalid character [32] was present in the Cookie value] with root cause java.lang.IllegalArgumentException: An invalid character [32] was present in the Cookie v..

Programming/JPA ⁄Spring 2021.06.04 (1)

org.apache.ibatis.reflection.ReflectionException:There is no getter for property named 해결하기

org.apache.ibatis.reflection.ReflectionException: There is no getter for property named ' kb_card_priv_no' in 'class best.gaia.vo.KanbanCardVO' at org.apache.ibatis.reflection.Reflector.getGetInvoker(Reflector.java:374) at org.apache.ibatis.reflection.MetaClass.getGetInvoker(MetaClass.java:164) at org.apache.ibatis.reflection.wrapper.BeanWrapper.getBeanProperty(BeanWrapper.java:162) at org.apach..

특정 문자 변경하는 Filter 만들기

제가 지금 준비중인 Project에서는 Markdown 문법을 지원하고 있습니다. 그런데 xss 방어용으로 등록한 lucy-xss-servlet-filter가 > 를 일괄적으로 > 로 변경해버리는 바람에 markdown 에서 많이 쓰는 문자중 하나인 '>'를 사용하지 못하는 상황이 되어 버렸습니다. lucy-xss-servlet-filter 에서 특정 문자를 제외하는 방법을 엄청 찾아봤는데 그건 없어서.. Custom Filter를 하나 더 추가 해서 Lucy 필터 다음에 위치하도록 하고, >를 모두 >로 변경하도록 해 보았습니다. CustomWrapper를 먼저 만듭니다. package best.gaia.utils.filter; import javax.servlet.http.HttpServletRequ..

Eclipse java 코드 변경시 톰캣 자동 재시작 방지

서버를 켜둔채로 Code를 작성하다 보면 자꾸 서버가 재시작 되어서 불편합니다. 그렇다고 서버를 끄고 작업하자니, 가벼운 jsp 파일 변경도 확인하려면 서버를 새로 켜줘야 하는 불편함이 있습니다. 그래서 서버는 계속 켜 두고, 필요할때만 서버를 재 시작 하기 위해 자동 재시작을 막아두려고 합니다. 이클립스의 Servers 탭에서 해당 서버를 더블클릭 해줍니다. 그러면 서버 설정 창이 나오는데요, Modules auto reload by default 가 체크가 되어있는데, 체크를 없애야 합니다. 그 후에 하단에 Modules를 클릭합니다. 수정할 Project 를 선택 하고 Edit 버튼을 누릅니다. Auto reloading enabled 를 비활성화 시킨 후 OK 를 누릅니다. 수정을 했으면 윈도우면..

Mybatis 에서 multiple select key 사용하기. Could not set property , Error selecting key or setting result to parameter object 에러 해결하기. 마이바티스

Mybatis 에서 multiple select key 사용하기. Could not set property , Error selecting key or setting result to parameter object 에러 해결하기 Mybatis의 Select key 를 쓰다 보면 한번에 여러개의 값을 select 해와야 할 때가 있습니다. 저의 경우에는 issue 라는 테이블에 저장되는 넘버 값이 1. 전체 프로젝트에서 해당 issue 의 넘버 2. 해당 issue 가 속한 프로젝트에서의 해당 issue 넘버 이렇게 두개의 넘버 값이 저장 됩니다. 테이블 구조는 아래와 같습니다. 그러다 보니 select key 에서 issue_sid, issue_no 값을 받아오고 난 후에 insert 를 해야 하는데요,..

<!DOCTYPE html> 에 Uncaught SyntaxError: Unexpected token '<' 뜰때 해결하기

Controller에서 일정 패턴으로 URL을 맵핑 시키고 있었습니다. PathVariable을 적극적으로 이용해서 심플한 url 패턴을 만들어보자! 해서 localhost/project이름/로그인사용자닉네임/사용모듈 ... 으로 depth 구조를 만들어서 Controller에서도 정규식을 이용해 맵핑을 시키고 있었는데요. 기여코 이 에러를 또 다시 마주하고야 말았습니다. 결론부터 말씀드리자면, .css 나 .js 같은 파일들 마저 Controller 가 잡아서 제멋대로 html 데이터로 응답을 하다 보니 해당 에러가 발생 한 것 입니다. 이걸 힌트로 해결 할 수 있는 분들은 해결 하시면 되고, 저와 같은 문제인 분들은 아래 이어질 해결 방법을 따라가시면 됩니다. servlet-context.xml에 m..

Spring Junit 테스트시 Caused by: java.io.FileNotFoundException: ServletContext resource [/WEB-INF/tiles/tiles.xml] cannot be resolved to URL because it does not exist 오류 해결

java.lang.IllegalStateException: Failed to load ApplicationContext at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:124) ~[spring-test-4.3.25.RELEASE.jar:4.3.25.RELEASE] at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:83) ~[spring-test-4.3.25.RELEAS..

JDBC 와 MYSQL 연동하기 9) Semantic UI 적용해보기 (BootStrap 대안)

최종 프로젝트를 할때 모든 팀이 BootStrap을 이용할 것 으로 보여 너무 획일화 된 디자인의 웹 사이트들이 나오지 않을까 싶어 다른 대안들을 몇개 찾아보았습니다. 그러던중 Semantic UI가 요즘 트렌드에도 맞아 보이고 BootStrap과 기능이나 사용상의 차이는 그닥 커보이지 않아서 Semantic UI를 써보려고 합니다. semantic-ui.com/introduction/getting-started.html Getting Started | Semantic UI semantic-ui.com 위의 사이트에서 다운받습니다. 본인의 취향에 맞게 바꿔가면서 쓰려면 Building Tool을 설치해서 한다는데, 아직 기본적인 것도 사용해 보지 않았으니, 일단 기본적인 Default Theme 을 써보..

JDBC 와 MYSQL 연동하기 8) log4jdbc 적용하기

기존에 oracle에서 쓰던 설정을 그대로 가져왔더니 log4 설정이 제대로 먹히지 않았습니다. 그래서 몇가지 수정이 필요했습니다. 1. pom.xml 에 dependency 추가 org.bgee.log4jdbc-log4j2 log4jdbc-log4j2-jdbc4 1.16 위의 log4jdbc를 사용합니다. 2. 데이터베이스 접속 정보 수정 #driverClassName=com.mysql.cj.jdbc.Driver driverClassName=net.sf.log4jdbc.sql.jdbcapi.DriverSpy #url=jdbc:mysql://localhost:3306/jsp url=jdbc:log4jdbc:mysql://localhost:3306/jsp 위의 주석 처리된 부분들이 각각 log4jdbc 적..

JDBC 와 MYSQL 연동하기 7) MyBatis 적용하기

Mybatis란? Mybatis는 Java Persistence Framework 입니다. SQL 문장을 XML 혹은 어노테이션을 이용해 Object에 저장하도록 해줍니다. ORM ( Object Relational Mapping) 혹은 Sql Mapper Framework 로 불립니다. Transaction 도 관리해주며, class loader 형태로 접근(절대경로)합니다. Ibatis가 발전해 MyBatis가 되었는데요, Apache Project 팀에서 google code 팀으로 이동하며 명칭이 변경되었습니다. MyBatis와 Ibatis는 몇가지 차이점이 있습니다. - IBatis는 JDK 1.4 에서 사용이 가능합니다. MyBatis로 넘어오며 요구사항이 JDK 1.5 이상으로 바뀌었습니다...

JDBC 와 MYSQL 연동하기 6) MVC 패턴 적용하기

1. 필요한 VO(Value Object) 객체를 제일 먼저 만들어 줬습니다. package kr.or.ddit.vo; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; @Data @EqualsAndHashCode(of="al_id") @ToString public class AlbaVO { private String al_id; private String al_name; private Integer al_age; private String al_zip; private String al_addr1; private String al_addr2; private String al_hp; private String gr_co..