728x90

Spring 프로젝트 생성시 Image, JS, CSS 등 정적 resource 파일을 지정된 폴더에서만 사용하도록 설정되어 있음.

(물론, 특별히 지정하면 외부경로 추가도 가능하기는 함)

 

1. 단순히 직접경로 입력하는 방식

 

@GetMapping(
  value = "/get-image-with-media-type",
  produces = MediaType.IMAGE_JPEG_VALUE
)
public @ResponseBody byte[] getImageWithMediaType() throws IOException {
    InputStream in = getClass()
      .getResourceAsStream("/com/baeldung/produceimage/image.jpg");
    return IOUtils.toByteArray(in);
}

 

+

@GetMapping : @RequestMapping(method = RequestMethod.GET) 의 축약형

IOUtils = Apach Commons (commons-io) 라이브러리 (pom에 의존성 추가해야함)

 

 

2. Controller에서 webapp 폴더 경로 찾아서 이미지 제공하는 방식

 

@RestController
public class ImageController {
	@Autowired
	ImageService imageService;

	@GetMapping(value = "/image/{imageName}.{extension}", produces = MediaType.IMAGE_PNG_VALUE)
	public @ResponseBody byte[] getImage(
		@PathVariable(name = "imageName") String imageName,
		@PathVariable(name = "extension", required = false, defaultValue = "png") String extension,
		HttpServletRequest request) throws IOException {
		String imagePath = request.getServletContext().getRealPath("resources/image/" + imageName + "." + extension);
		InputStream imageStream = new FileInputStream(imagePath);
		byte[] imageByteArray = IOUtils.toByteArray(imageStream);
		imageStream.close();

		return imageByteArray;
	}
}

 

 

 

+하다가 막힌 문제

HttpServletRequest의 getServletContext() 메서드 사용 문제 (tomcat이랑 servlet 버전 올리면 됨)

https://blog.naver.com/javaking75/220072102739

==> 이렇게 말고 그냥 'request.getSession().getServletContext().getRealPath'이렇게 써도 됨

 

 

Reference

https://blog.naver.com/k220j/220714945944

https://www.baeldung.com/spring-mvc-image-media-data

https://www.baeldung.com/spring-controller-return-image-file

https://countryxide.tistory.com/45 [배워서 남주자]

https://lazymankook.tistory.com/73

728x90
728x90

 

 

1. 지문인식 기능의 시작

- API 23버전 마시멜로부터 추가된 기능

- 따라서 프로젝트 설정도 마시멜로 이상으로 설정해야 적용 가능

 

2. 지문인식 기능

(1) API 27버전까지 사용하던 FingerprintManager 기능

1. 프로젝트 Manifest 파일에 지문인증 권한을 요청

2. 잠금화면이 고정된 기기에만 지문등록이 가능하므로 잠금화면 설정이 되어 있는지 확인

3. 폰에 하나 이상의 지문이 등록 되어 있는지 확인

4. FingerprintManager 클래의 인스턴스 생성

5. Keystore 인스턴스로 안드로이드 Keystore 컨테이너에 액세스

6. KeyGenerator 클래스로 암호화된 키 생성하여 Keystre에 저장

7. 앞 단계에서 생성된 키를 이용 Cipher 클래스 인터턴스 초기화

8.Cipher 인스턴스를 사용하여 CryptoObject를 만들고 FingerprintManger 인스턴스에 지정

9. FingerprintManager 인스턴스의 authenticate 메소드를 호출

10. 인증 프로세스에 의해 트리거 된 콜백을 처리 메소드 구현

 

[출처] 안드로이드 지문인증 사용하기(1) : Fingerprint Authentication|작성자 코스모스

 

(2) API 28버전부터 통합된 BiometricPrompt방식

 

구글문서

https://developer.android.com/reference/android/hardware/biometrics/BiometricPrompt.html

 

구현방법

https://new-spring-bom.tistory.com/3

 

 

Reference

https://blog.naver.com/cosmosjs/221381903806

https://namget.tistory.com/entry/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EC%A7%80%EB%AC%B8%EC%9D%B8%EC%8B%9D-%EB%B3%80%EA%B2%BD%EC%A0%90

https://source.android.com/security/biometric

https://new-spring-bom.tistory.com/3

https://developer.android.com/reference/android/hardware/biometrics/BiometricPrompt.html

 

728x90
728x90

1. 문제 상황

 

Java compiler level does not match the version of the installed Java project facet.

 

 

2. 원인

컴파일러의 레벨과 Eclipse설정된 버전이 일치되지 않아서 생기는 문제

==> properies 수정 필요

 

 

3. 해결방법

(1) project > properties > java Compiler > java 버전 확인

 

(2) project > properties > Project Facets > Java 를 자신이 사용하고있는 컴파일러 버전과 맞춰야함

 

 

자바버전을 일치시키면 오류가 삭제됨

 

 

Reference

https://dev114.tistory.com/362

http://myblog.opendocs.co.kr/archives/1566

728x90
728x90

 

1. 현상: 프로젝트 셋팅시 일어난 에러

Access restriction: The type BASE64Decoder is not accessible due to restriction on required library 

==> 로컬 이클립스 셋팅 문제.  소스상에 문제는 없음.

      (rt.jar에 있는 특정 클래스 직접 접근하려고 했을 경우 나는 에러)

 

2. 해결방법

2-1.

Window -> Preferences -> java -> Compiler -> Errors/Warnings 들어가서

Deprecated and restricted API 를 활성화 시켜서 Forbidden reference (access rules) 에 Error 로 체크되어 있는걸

Ignore로 바꿔주고 Apply 하면 된다.


 

2-2.


 1. 이클립스에서 Project - Properties에 들어가서 Java Build Path에 있는 Libraries 탭에서 JRE System Library를 remove한다.

2. Add Library를 클릭하여 JRE System Library를 다시 추가한다.

 

 

 

Reference

http://stackoverflow.com/questions/860187/access-restriction-on-class-due-to-restriction-on-required-library-rt-jar/2174607#2174607

https://nota.tistory.com/7

http://myblog.opendocs.co.kr/archives/1566
https://devzeroty.tistory.com/entry/%EC%98%A4%EB%A5%98-The-type-BASE64Decoder-is-not-accessible-due-to-restriction-on-required-library

 

728x90

+ Recent posts