웹 개발 272

java logging framework(log4j, log4j2, slf4j)

Logging이란? 시스템 동작 시, 시스템 상태/작동 정보를 시간의 경과에 따라 기록하는 것을 logging이라고 하고 그 기록을 log라고 합니다. 이 log를 통해 사용자의 패턴이나 시스템 동작 자체의 분석에 사용될 수 있으며, 해킹 등의 사고가 발생한 경우 비정상 동작의 log를 통해 추적을 할 수 있습니다. System.out.println을 사용하면 안 되는 이유 개발을 할 때 아무생각 없이 System.out.println을 사용하는 경우가 많습니다. 라이브러리도 추가할 필요 없고 sout이나 sysout 등의 단축 명령어로 자동 완성도 할 수 있어 사용하기 좋기 때문입니다. System.out.println을 사용하면 logging framework를 사용할 때처럼 log를 출력한 곳이 어..

웹 개발 2021.12.14

java reflection을 통해 class의 setter method를 호출하는 방법

try { User user = new User(); Method method = User.class.getDeclaredMethod("setName", String.class); method.setAccessible(true); method.invoke(user, "Some name"); System.out.println("user.getName() = " + user.getName()); } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { e.printStackTrace(); } 위 코드의 핵심은 method.setAccessible(true); 입니다. setAccessible()은 필드나 메..

웹 개발 2021.12.13

Spring Boot 시작 시, 코드 실행

개발을 하다보면, 프로그램 시작하자마자 실행되어야 할 코드가 있습니다. 예를 들어, Tomcat의 경우 web.xml에 listener를 등록하는 것 처럼요. Spring Boot에도 그런 것이 있습니다. 아래와 같이 ApplicationReadyEvent를 사용하면 됩니다. @EventListener(ApplicationReadyEvent.class) public void doSomethingAfterStartup() { System.out.println("hello world, I have just started up"); }

웹 개발 2021.12.11

Springboot에서 HTTP encoding charset 설정하는 방법

웹 서비스를 개발하면서 charset은 정말 중요합니다. 클라이언트와 서버가 charset이 맞지 않으면 문자가 제대로 표시되지 않는 문제가 발생할 수 있습니다. 아래와 같이 사용자의 정보를 리턴하는 URL이 있다고 가정해봅시다. @RestController public class TestController { @RequestMapping(name = "/test", produces = "application/json") public User test(HttpServletRequest req) { User user = new User(); user.setUserId("admin"); user.setUserName("홍길동"); return user; } } @RestController가 아닌 @Contr..

웹 개발 2021.12.10

비밀키(암호화 키)를 문자열로 변환 및 반대로 변환

비밀키를 생성했으면 DB나 파일 등에 저장해야 합니다. 다음은 key를 String으로 변환하여 저장하는 방법과 반대로, String으로 key로 변환하는 방법입니다. import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; import java.security.NoSuchAlgorithmException; import java.util.Base64; public class Test { public static void main(String[] args) throws NoSuchAlgorithmException { // create new key SecretKey secret..

웹 개발 2021.12.07

javascript 뒤로가기

모바일 웹의 경우 보통 모든 페이지의 최상단에 뒤로가기(←) 버튼이 존재합니다. 보통의 경우는 상관없지만 때로는 외부에서 child 페이지로 바로 접근하는 경우 가장 많이 알려진 것 중 하나인 history.back()을 사용할 경우 아무런 동작을 하지 않는 문제가 있습니다. 이 경우 document.referrer을 사용하면 해결할 수 있습니다. document.referrer은 링크를 통해 현재 페이지로 이동 시킨, 전 페이지의 URL 정보를 반환합니다. https://developer.mozilla.org/ko/docs/Web/API/Document/referrer Document.referrer - Web API | MDN 페이지로 바로 접근하였을 경우 이 값은 빈 문자열을 반환함.(링크를 통해서..

웹 개발 2021.11.19

HTML class 속성에서 hyphen/dash(-)를 사용하는 이유

인터넷에서 jquery plugin이나 다른 script, css 파일을 보면 css selector의 구분자가 모두 underscore(_)가 아닌 hyphen(-)로 되어있는 것을 볼 수 있습니다. 그런데 이상합니다. user_name같이 understore로 되어있으면 더블클릭 시 user_name이 모두 선택되는데, user-name이면 더블클릭하면 클릭한 쪽의 단어만 선택이 됩니다. 분명히 이렇게 불편한데 왜 hyphen(dash)를 사용하는 것일까요? 여러 가지 이유가 있지만 가장 큰 이유는 css의 공식 구분자가 dash 때문인 것 같습니다. 첫 번째로, 과거에 하위 브라우저를 지원해줘야 하는 일이 있었는데, 특정 브라우저에서 underscore가 포함된 class명을 인식하지 못해서 동작하..

웹 개발 2021.11.19

Can't execute jar- file: "no main manifest attribute"

java -jar "app.jar" 명령어를 이용하여 jar 파일을 실행할 때, 아래와 같은 에러 메시지가 발생하는 경우가 있습니다. no main manifest attribute, in "app.jar" 이 에러 메시지가 발생한 경우는 해당 jar 파일이 "실행 가능한 jar" 파일이 아닐 경우 발생합니다. eclipse의 경우 jar로 export 할 경우 아래 이미지와 같이 "JAR file"과, "Runnable JAR file"이 있는데 "Runnable JAR file"로 export해야 합니다. 더 상세한 내용을 원하시면 아래 링크를 참고하시기 바랍니다. https://stackoverflow.com/questions/9689793/cant-execute-jar-file-no-main-ma..

웹 개발 2021.11.07

jqGrid 무료버전 및 유료 버전

리스트를 표시하기 위한 Grid 제품 중에 jqGrid라는 것을 많이 사용하는데, 이 제품은 버전에 따라 유료/무료가 나뉘어 상업용으로 사용하려는 경우 버전을 꼭 확인하고 사용해야 합니다. 결론부터 말하면, v4.7(포함) 이하의 버전은 무료이고, v4.8부터는 유료입니다. 라이선스 정책 변경 공지 2014년 12월까지 무료로 제공 확인 사용방법은 아래 wiki를 확인하시면 됩니다. jqGrid wiki

웹 개발 2021.10.26
728x90
loading