상황 : "모바일인지 아닌지 확인하여 페이지 분기하라"

js,jsp에서 스크립트로 해도 되나 상황에 따라서 자바코드로 해야할 경우가 있다.

@RequestMapping(value="/login.do")
public String loginPage(Model, model, HttpServletRequest request) {
	String userOS = request.getHeader("user-agent");
    Pattern userAgent = Pattern.compile("(Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini)", Pattern.CASE_INSESITIVE);
    Matcher matcher = userAgent.matcher(userOS);
    if(matcher.find()){
    	return "redirect:/mobilePage.do?";
    }
}

> HttpServletRequest로 요청헤더에 접속정보(user-agent)를 변수에 저장

> Pattern 클래스로 원하는 패턴을 생성

> Matcher 클래스로 생성된 Pattern객체에서 요청헤더 값과 매칭하는 값을 찾아서 저장.

> Matcher클래스의 .find()함수로 boolean값 반환. 

해당 클래스패스 상위 폴더 직접 등록해줌. 

잘됨.

구글링, 쥐피티 다 검색해보면 같은 에러 다른 해결책이 너무 많다. 나는 이렇게 해결했다.

도움이 되기를 바란다.

구글에 검색하면 쭈르륵 나오는 에러.
이클립스 콘솔에 로그가 안뜨는 현상
1.ctrl+shift+h > staticloggerbinder > 해당클래스  jar파일 확인. (본인은 다른 프젝 lib폴더에 scp4j-1.2.0.jar이 있음)
2. 해당 파일 로그 안 뜨는 프젝 webContent > lib 경로에 붙여넣기 > 프로젝트 리프레쉬
3. 서버 재기동
♡ 로그 잘 뜬다.

ex) id 값이 널인지 확인 하려면 

id.equals(null) > 위 에러 발생

=> 확인 하려는 값이 널인지 확인 하려면 첫번째 자리에 들어가면 안됨.

id==null or "null".equals(id)

네트워크 ( : 웹서버에 연결하는 클라이언트)를 통해 작동하는 서버시스템 및 응용프로그램간에 인증 및 데이터 암호화를 제공하는 암호화 프로토콜입니다.
출처: https://smartits.tistory.com/209 [Smart ITs] // <more1>

계속 까먹게 되어 남겨야 될 것 같다. 

toString()메서드

toString() :  1. 값을 문자열로 리턴해준다. 2. 입맛대로 재정의해서 사용할 수 있다. <more1><more2>

 

 

 

%d%s -> printf -> PrintWriter -> PrintStream-> Writer -> System -> native

PrintWriter는 출력스트림 클래스이고 PrintStream에 있는 메서드를 모두 구현하고 Writer 클래스를 상속받는다.

 - PrintWriter 클래스에는 print, println, printf, apend메서드 등이 있다

 - printf 호출 방식 : out.printf(format, args)

1. %d : 정수 출력 2. %s : 문자열 출력 3. %c : 문자 출력 4. %f : 실수 출력

ex>
System.out.printf("문자열 출력 : %s", "hello world");
System.out.printf("숫자 출력 : %d", 1243);
Printwriter out = response.getWriter();
out.append(String.format(">name:%s >age:%b " , name, age);

native : 자바에서 다른 언어로 구현된 것을 사용할 수 있게 해주는 키워드 <more>https://fors.tistory.com/80

 

 

· initializer 초기화 instantiated 인스턴스화

자바 디컴파일러 설치

http://java-decompiler.github.io/
아파치-라이브러리-.jar안에 class파일을 열어본 모습

학원에서 DB 수업에 들어가면서 가장 많이 사용되는 오라클 DB툴인 SQL을 설치를 하였다. 그러나 자바 16버전은 SQL툴에서 선호하지 않는 툴이라며 경고메세지를 준다..물론 실행은 된다.

SQL툴은 자바8/11을 지원하고, 이클립스는 자바 11이상을 지원한다.

자바 11버전 이상을 선호하는 이클립스 최신버전

그동안 자바 16버전을 사용해오다 자바 11을 다시 설치하여 이클립스 설정이 필요하다.

 간단하다 이클립스가 설치된 폴더에서 eclipse.ini 파일을 열어 기존의 16버전으로 설정되어 있던 파일경로를 새로 설치한 자바 파일 경로로 바꿔주면 된다. 처음엔 아마 밑에 주소에서 jdk-16으로 되어 있었겠지...

-vm
C:\Program Files\Java\jdk-11.0.12\bin\javaw.exe
-vmargs

이제 저장하고 이클립스를 실행해주고 다시 설정을 해줘야 한다.

프로젝트명 우클릭 - Properties
Java Build Path-Libraries탭-JRE System Library더블클릭-해당 버전으로 설정후 Finish
이어서 Java Compiler - 빨간 동그라미 부분 해당 버전 숫자로 설정
이어서 Project Facets - java - 자바 버전 선택 후 Apply and Close
설정이 끝나고 컴파일 돌렸을 때 나오는 톰켓 에러
하단에 톰켓 서버 더블클릭 - 좌상단 Runtime Environment 클릭 - JRE하단 박스에 버전에 맞는 jdk 클릭후 finish 

서버 시작하고 컴파일 해보면 잘 돌아간다.

'JAVA' 카테고리의 다른 글

out.printf ("%s, %d", "문자열", 숫자);  (0) 2021.11.11
JD-GUI 디컴파일러 설치 & 사용  (0) 2021.11.09
cmd에서 javac가 먹통일 때  (0) 2021.10.06
상수와 리터럴  (0) 2021.10.02
==연산자와 equals 메서드  (0) 2021.10.02

밑에 클릭되어있는 파란색 경로 더블클릭
정상적일땐 이렇게 뜨지만 
나는 위에 화면이 안 뜨고 이 화면만 계속 떳다. 
<고치기 전에 위에 시스템 변수 편집-변수값에 저장되어있던 나의 변수값>

빨간표시에 있는 쌍따옴표... 어떠한 과정에서 들어간지는 모르겠지만.. 쌍따옴표를 지우고 나니 해결되었다. 세미콜론도 2개였으니 하나는 지워줬다

이제야 잘 나온다.

'JAVA' 카테고리의 다른 글

JD-GUI 디컴파일러 설치 & 사용  (0) 2021.11.09
[소소한 설정] 자바 버전 변경에 따른 이클립스, 톰캣 설정  (0) 2021.10.06
상수와 리터럴  (0) 2021.10.02
==연산자와 equals 메서드  (0) 2021.10.02
네트워크 기초  (0) 2021.09.28

+ Recent posts