반응형

웹 개발 273

[Tomcat에러] Invalid byte tag in constant pool

Tomcat을 실행할 때, "Invalid byte tag in constant pool"라는 에러가 발생하며 프로그램이 동작하지 않는 문제가 발생할 수 있습니다. Invalid byte tag in constant pool 원인 이 에러는 프로그램을 빌드한 java 버전과 tomcat이 사용하는 버전이 달라서 발생하는 에러입니다. 만약 19이면 java 9를 사용해야 하는데 java 버전이 그보다 낮아서 생기는 것입니다. Invalid byte tag in constant pool 해결방법 이 문제의 해결방법은 두 가지가 있습니다. 1. tomcat의 java version과 프로그램 빌드 java 버전을 똑같이 맞춰줍니다. 2. tomcat에서 이 문제를 해결한 버전이 있습니다. 해당 버전으로 패치합..

웹 개발 2022.11.16

HTTP에서 localhost 호출 시 CORS 에러 발생하는 이유

개요 ActiveX가 없어지면서 ActiveX 프로그램을 Local Server를 활용한 프로그램으로 변경해야 했습니다. 그런데 HTTPS 서버에서는 localhost를 호출 가능한데, HTTP에서는 CORS 에러가 발생했습니다. 예전에는 분명히 호출이 됐던것 같은데 왜 안되는 것일까요? 원인 에러가 나는 원인에 대한 해답은 크롬 공식 블로그에 있습니다. Chrome is deprecating access to private network endpoints from non-secure websites as part of the Private Network Access specification. The aim is to protect users from cross-site request forgery (C..

웹 개발 2022.10.29

Spring Security에서 접근 권한 해제 방법

Spring Security를 사용할 때, 권한이 없는 페이지에 접근하려고 하면 로그인 페이지로 이동되거나 권한 오류가 리턴됩니다. 이 경우 다음과 같은 방법으로 해제할 수 있습니다. @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(final HttpSecurity http) throws Exception { http.authorizeRequests().antMatchers("/").permitAll(); } } 하지만 이 방법에는 문제가 있습니다. 바로 이렇게 WebSecurityConfigurerAdapter..

웹 개발 2022.07.19

AOP에서의 모든 메서드 로깅과 Custom Annotation을 활용한 No Logging 처리

Spring에서 애플리케이션 서비스들이 공통으로 처리할 기능들은 그 성격과 범위에 따라 인터셉터나 AOP(Aspect Oriented Programing)을 사용합니다. 제가 일하는 회사의 고객사에서 어느 날 프로그램이 어디까지 실행되다 오류가 발생했는지 알기 위해 모든 함수의 시작에는 "START" 로그를, 끝에는 "END"로그를 남겨달라고 했습니다. 그런데 프로그램에서 사용하는 함수가 한두 개도 아닌데, 모든 함수에 "START"와 "END" 로그를 남기는 것은 너무 힘든 일입니다. Spring에서는 AOP를 사용하여 손쉽게 모든 함수에 이런 로그를 남길 수 있습니다. import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.Afte..

웹 개발 2022.05.01

java - mkdir와 mkdirs의 차이

File f = new File("e:/test/test"); System.out.println("result:" + f.mkdir()); System.out.println("result:" + f.mkdirs()); 만약 e 드라이브에 test 폴더가 없다면 mkdir은 false를 리턴하며 실패하고, mkdirs는 true를 리턴하며 폴더도 정상적으로 생성합니다. 즉, mkdir은 경로상 마지막 경로만 생성하기 때문에 중간 경로가 없다면 경로를 생성을 하지 못하고 mkdirs는 전체 경로를 모두 생성하기 때문에 생성 권한만 있다면 정상적으로 경로를 생성합니다. 참고 주소 https://stackoverflow.com/questions/9820088/difference-between-mkdir-and-..

웹 개발 2022.05.01

Spring boot profile 환경별로 설정하는 방법(yaml).

spring boot는 환경 설정을 application.properties 또는 application.yml로 설정합니다. 한편, 개발을 하다 보면 로컬 서버, 개발서버, 운영서버 등에서 프로그램을 실행해야 하는데 매번 이 설정 파일을 수정하는 건 번거롭습니다. 특히 운영서버에서 설정을 바꾸다 잘못되면 심각한 문제가 발생하기도 합니다. 이때, yml의 경우 다음과 같이 파일 내에서 구분자(---)와 profiles 옵션으로 간단하게 처리할 수 있습니다. # local, dev, prod 공통 설정 server: port: 8080 --- spring: profiles: local datasource: url: "jdbc:mysql://local-server/local" username: "dbuser"..

웹 개발 2022.05.01

input, form 태그에 브라우저의 자동완성 기능 해제하는 방법

브라우저에서 input창에 이전에 입력했던 내용에 대해 자동 완성을 제공합니다. 이것을 브라우저에서 해제하는 방법이 있지만, 고객에게 일일이 다 해제하라고 할 수 없습니다. 이때, 약간의 코드 수정으로 이를 해결할 수 있습니다. 이와 같이 html tag의 autocomplete 옵션을 off로 하여 해결할 수 있습니다. 위 예제는 개별로 일일이 지정하는 방법이라 귀찮습니다. 다음과 같이 form tag 지정하여 한번에 해결할 수 있습니다. 단, 이 방법은 google chrome 브라우저에서는 동작하지 않습니다. 그 이유는 구글은 autocomplete 속성을 조작하는 행위가 모든 사용자에게 제공하는 것은 좋지 않다고 판단하기 때문입니다.

웹 개발 2022.04.17
728x90
반응형
loading