안녕하세요 상훈입니다.

이번에 한빛미디어"나는 리뷰어다" 도서 서평단 활동을 통하여 내용을 작성하게 되었습니다.

오늘 소개할 도서는 [혼공자] 혼자 공부하는 자바(링크) 인데요, 해당 내용은 Java 언어의 입문자를 위한 책이라고 볼 수 있습니다.

혼공자 도서 전면

 

 

목차

 

1. 요약

별점: ★★★★☆

"혼자 공부하는 자바"는 자바 프로그래밍을 처음 시작하는 사람들을 위한 입문서입니다.
자바의 기본 개념부터 객체 지향 프로그래밍까지 체계적으로 다루고 있습니다.

→ 저는 객체지향 프로그래밍 부분에 대해 다시 학습이 필요한 것 같아 이 도서를 신청하였고, 기본기를 다시 학습할 수 있었습니다.

 

2. 단점

아쉽게도 해당 책은 입문도서로서, 상세한 실무 프로젝트나 고급 주제는 다루지 않습니다.

그렇기 때문에 중급이상이신분들은 다른 책을 찾아보시는게 좋을 것 같습니다.

 

3. 장점!

혼공자에서는 매 챕터의 상세 항목마다 자세한 설명과 예제가 있어 이를 통해 자바를 쉽게 이해할 수 있습니다. (물론 연습은 필요하지만요 ㅎㅎ)
책은 과외 선생님이 알려주듯 친절하게, 그러나 핵심적인 내용만 콕콕 집어줍니다. 이로 인해 자바를 처음 배우는 입문자도 쉽게 따라갈 수 있습니다.

 

단계별 학습

7단계에 걸쳐 자바의 핵심 내용을 반복 학습하면서 자연스럽게 머릿속에 기억되도록 구성되었습니다.
핵심 키워드와 시작하기 전에를 통해 각 절의 주제에 대한 대표 개념을 워밍업한 후,
본격적인 자바 핵심 이론과 실습을 거쳐 마무리에서는 핵심 포인트와 확인 문제로 한번에 복습합니다.

Beta 리더 검증

26명의 Beta 리더와 함께 구성하여 입문자에게 맞는 난이도, 분량, 학습 요소 등을 적극 반영했습니다.
어려운 용어와 개념은 한번 더 풀어 쓰고, 복잡한 설명은 눈에 잘 들어오는 그림으로 풀어냈다고 봅니다.
또한 해당 도서는 저자 직강 동영상과 학습 사이트를 통해 언제 어디서든 가볍게 자바를 학습할 수 있습니다.

 

4. 결론! ✈️

"혼자 공부하는 자바"는 자바 입문자들을 자바의 세계로 잘 이끌어주는 책입니다.
기초를 탄탄하게 다지고, 이후 더 전문적인 자바 수준으로 나아가기에 좋은 디딤돌이 될 것입니다.
이 책은 자바를 처음 배우는 분들에게 추천드리며, 자바 프로그래밍에 관심이 있는 분들에게도 유용한 자료입니다.
(초보자도 충분히 따라하실 수 있도록 예제도 있습니다.)

 

객체지향프로그래밍

"한빛미디어 서평단 <나는리뷰어다> 활동을 위해서 책을 제공 받아 작성된 서평입니다."

 

이상입니다.

반응형

[글작성일자: 2024.01.16] 안녕하세요 상훈입니다.

이번에 프로젝트를 통해 타임리프를 사용하게 되었는데, 생각보다 신기하고 간단하더라구요.
하나씩 공부하는 입장으로서 작성중에 있습니다.

 

1. 타임리프

타임리프는 아래 링크에 소개드립니다. 만약 보신적이 없으시다면 간단하게 훑는걸로 봐주세요!

https://www.thymeleaf.org/index.html#natural-templates

 

Thymeleaf

Integrations galore Eclipse, IntelliJ IDEA, Spring, Play, even the up-and-coming Model-View-Controller API for Java EE 8. Write Thymeleaf in your favourite tools, using your favourite web-development framework. Check out our Ecosystem to see more integrati

www.thymeleaf.org


2. text, utext 무슨 차이인데?

딱 필요한부분만 말하자면, 문자 내에 html 태그를 사용할 수 있는가 없는가의 차이입니다.

예시)

//Java
model.addAttribute("testText", "<b>utext를 통하여 Escaped문자열을 사용할 수 있다.</b>");
  //HTML
  utext 를 사용할 경우:   <span th:utext="${testText}">testText</span><br/>
  utext 를 사용하지 않았을 경우: <span th:text="${testText}">testText</span>

이렇게 다른 결과를 볼 수 있습니다.

다른말로는 Escape 문법을 사용하여 화면에 렌더링을 시킬 수 있는가 정도.


 

html inspect 를 살펴보면, <b> 태그로 위에는 들어가있는 반면,  => Escaped
아래는 문자열로 들어가지는 모습을 볼 수 있습니다.

 

 

반응형

안녕하세요 상훈입니다.

 

현재 동작중인 포트를 확인하고, 종료하는 방법에 대한 포스팅을 하겠습니다.

Window 기준으로 작성하였습니다.

 

0. Wind + R  -> cmd 창을 켜줍니다.

 

1. 8080포트를 찾기

netstat -ano | findstr 8080

 

2. 찾은 포트의 pid 를 입력하여 삭제

taskkill /F /pid [pid]

 

이상입니다.

 

최근 spring 프로젝트를 자주 기동하게되었는데, IDE를 그냥 종료했을 때 (InteliJ) 같이 종료되지 않더라구요. 그래서 자주 찾아보다가 메모를 남깁니다.

에러 내용은 아래와 같습니다.

Identify and stop the process that's listening on port 8080 or configure this application to listen on another port.

 

 

자주 참고

 

Error - Port 8080 was already in use

Port 8080 was already in use 에러와 원인과 해결 방법 메시지 *************************** APPLICATION FAILED TO START *************************** Description: Web server failed to start. Port 8080 was already in use. Action: Identify and stop th

7942yongdae.tistory.com

 

반응형

안녕하세요 상훈입니다.

Spring, MyBatis 에서 여러 가지의 쿼리를 만들어놓고 부품처럼 이거 쓰고 저거 쓰고 할 때 사용하는 방법입니다.

1. 메인 기능 설정

<select id="selectListPage" 
    parameterType="a.b.c.ABCDTO"			
    resultType="a.b.c.ABCDTO"
    >			
        <include refid="COMMON.pagingPreSQL" />
        <include refid="listPage" />
        <include refid="COMMON.pagingPostSQL" />
</select>

여기서 주의할 점!

include refid = "" 작성시,

1. 같은 파일 내의 쿼리를 작성하면 listPage 와 같이 작성.
2. 다른 파일 내의 쿼리를 가져다가 사용하려면, 해당 mappernamespace 를 체이닝으로 작성해주세요. COMMON.pagingPreSQL 와 같이 작성

 

2. 각 기능 설정

/*기본 목록 조회 */	
<sql id="listAdmUserBas"	>			
    SELECT USER_ID	/* 사용자아이디 */
         , DESIG_IP	/* 지정IP주소 */
         , USER_PWD	/* 사용자비밀번호 */
      FROM 테이블명	
     WHERE 1=1	
    <if test='userId != ""'> <!-- 사용자 아이디가 있을 경우 -->
        AND USER_ID LIKE CONCAT('%',#{userId},'%')
    </if>
    <if test='desigIp != ""'> <!-- 지정 아이피가 있을 경우 -->
        AND DESIG_IP LIKE CONCAT('%',#{desigIp},'%')
    </if>
    <if test='brofcCd != ""'> <!-- 코드가 있을 경우 -->
        AND BROFC_CD LIKE CONCAT('%',#{brofcCd},'%')
    </if>
</sql>

각 기능을 담당하는 쿼리는 메인 쿼리로직과는 다른점이 있는데요,

1. 각 기능에 대한 쿼리는 모두 <sql> 태그로 설정
2. parameterType, resultType 을 작성하지 않습니다.

 

이상입니다.

도움이 되셨다면, 여유롭게 커피 한 잔 사주시면 감사합니다~

반응형

안녕하세요 상훈입니다.

 

✔️ What To Do?

자바 (Java) 에서 비밀번호를 검증하는 공통코드를 작성하려고 합니다.

비밀번호 정책에 따른 비밀번호 검증
[ 영문대문자, 영문소문자, 숫자, 특수문자 ]  4종류 조합으로 생성하도록 한다.
   ㄴ 2종류 조합시 10자리 이상, 3종류 조합시 8자리 이상으로 한다.
//패턴
private static final String PATTERN_SPECIAL_CHAR = "[!@#$%^&*()+=-]";
private static final String[] PSWD_COMBI_PATTERNS = {"[0-9]", "[a-z]", "[A-Z]", PATTERN_SPECIAL_CHAR};
//길이
private static final int PWSD_COMBI_2_MIN_LENGTH = 10;
private static final int PWSD_COMBI_3_MIN_LENGTH = 8;
    
/**
 * @param pswd 입력한 비밀번호
 * @return 검증 여부 (성공: true, 실패: false)
 */
private static boolean isValidByPasswordPolicy(@NonNull final String pswd) {
    int matchCnt = 0;
    for (String iter : PSWD_COMBI_PATTERNS) {
        Pattern pattern = Pattern.compile(iter);
        Matcher matcher = pattern.matcher(pswd);
        if (matcher.find()) {
            matchCnt++;
        }
    }

    if (matchCnt == 2 && PWSD_COMBI_2_MIN_LENGTH <= StringUtils.length(pswd)) {
        return true;
    } else if (matchCnt >= 3 && PWSD_COMBI_3_MIN_LENGTH <= StringUtils.length(pswd)) {
        return true;
    }
    return false;
}

 

이상입니다.

 

여유롭게 커피 한 잔 사주시면 감사합니다~

반응형
gradlew Permission Denied

에러 발생

내용인즉슨 권한이 없어 거부됨

chmod 명령어로 권한 할당

chmod +x gradlew

반응형

안녕하세요 상훈입니다.

 

✔ 에러 환경 / 내용

FrontEnd(Javascript, Vue.js) → BackEnd(Java)
비동기 통신 axios, post 방식으로 전송하였는데, 아래와 같은 에러가 발생하였습니다.

.w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported]

에러문구

경고이긴하지만, 데이터가 안들어왔으니 결함이 되겠지요?

 

✔ 이유

- application/x-www-form-urlencoded
- charset=UTF-8

컨트롤러(Controller) - 어노테이션 @RequestBody 에서 인식하지 못하기 때문입니다.

이전
parameter 부분의 @RequestBody를 삭제

 

✔ 결과

그래서 간단하게 RequestBody 어노테이션을 삭제해주었더니 정상적으로 데이터가 받아졌습니다.

결과 데이터

 

이상입니다.

감사합니다.

 

 

Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported for @RequestBody MultiValueMap

Based on the answer for problem with x-www-form-urlencoded with Spring @Controller I have written the below @Controller method @RequestMapping(value = "/{email}/authenticate", method = RequestMe...

stackoverflow.com

 

반응형

안녕하세요. 상훈입니다.

 

✔ 발생 환경

Java - springfox 를 의존성 주입하여 프로젝트 git에 push 한 것을 pull 받아 바로 구동하려고하는데 

환경 : VSCode.

빨간줄 ㅠㅠ

빨간줄이 떠버렸습니다.

The import springfox cannot be resolvedJava(268435846)

이런 안내문구와 함께요.

 

✔ 오류 발생 원인 

😢 이 에러가 발생한 건 Build 때문입니다.

 

✔ 해결 방법

Build를 진행하도록 하겠습니다.

Reload Project

build.gradle  > 우클릭  > Reload Projects 를 해주세요.

 

build 시작

이렇게 새로운 빌드가 되는것을 보실 수 있습니다.

build가 완료되면 에러표시가 사라진것을 보실 수 있습니다.

만약 그래도 안사라지시면, vscode를 한 번 종료 후, 재구동 시켜서 build를 진행해주세요!

 

이상입니다.

 

The import org.springframework cannot be resolved - Java(268435846)

I'm trying to use the Spring Framework in my project, but I have a problem with the import. I'm working with Gradle for builds, React JS for the front end and Java for the back end. The weird th...

stackoverflow.com

 

 

도움이 되셨다면 광고 한번 클릭해주세요. 블로그 운영에 큰 힘이 됩니다. 감사합니다.

반응형

+ Recent posts