안녕하세요👋오늘은 프로젝트에서 로그 메시지에 대한 내용을 수정하기 위한 작업을 해볼 예정입니다. 로그 메세지를 왜 수정해야 할까요? 이미 스프링부트 환경에서는 자동으로 로그메세지도 제공해주고,Error 면 Error, Info 면 Info 알아서 나오지 않나요? 라는 생각을 할 수 있습니다. 하지만 로그도 하나의 코드라는 생각으로 스프링에서 제공해주는 일반적인 로그가 아닌내가 알아보기 편한, 즉 가독성(=읽기 편한) 로그를 만들어주는 것 또한 중요하다고 생각합니다. 실질적으로 서비스를 운영하면, 다양한 환경에서 Error 및 Info 로그를 체크해야 할 일이 많습니다. 그 로그들을 편리함,가독성, 팀원 과 공통적인 설정, 여러가지 보안적인 부분 프로젝트 스펙을 클라이언트와 맞추기 위해서 로그 스펙을 ..
안녕하세요 오늘은 스프링 프레임워크에서 세션 및 쿠키를 다루는 방법에 대하여 알아보겠습니다. 세션과 쿠키는 클라이언트와 서버의 연결을 유지하는 방법입니다 우리가 사용하는 웹 브라우저에 서비스는 HTTP 프로토콜을 기반으로 통신을 합니다. 그리고 그 HTTP 프로토콜은 클라이언트와 서버의 관계를 유지 하지 않는 특징이 있습니다. 그 대표적인 특징 2가지가 무상태성 (Stateless) 비연결성(Connctionless) 위 사진을 보면 한번 요청이오고 그 요청에 응답이 오면 바로 연결을 끊는다. 만약에 그러면 로그인을 하는 상황이라면 어떨까요? 로그인을 해서 여러 기능을 이용해야 하면은, API요청을 할 때마다 로그인을 해야할까요? 만약 실제로 그렇다면은...... 엄청나게 귀찮을 겁니다. 매번 요청하고 ..
안녕하세요🖐 오늘은 비밀번호 유효성 검사에 대한 예제를 통하여 TDD에 대해서 공부를 해보았습니다. 비밀번호 유효성 검사 조건 길이가 8글자 이상 0부터 9사이의 숫자를 포함 대문자 포함 - 모든 규칙을 충족하면 STRONG - 2개의 규칙을 충족하면 NORMAL - 1개의 규칙을 충족하면 WEAK 위 조건을 만족하는 테스트 코드를 작성해야 합니다. 암호 검사를 하는 경우를 생각해봤을 때, 가장 쉽거나, 가장 예외적인 상황은 무엇일까? 모든 규칙을 충족하는 경우 모든 규칙을 충족하지 않는 경우 모든 규칙을 충족하지 않는 경우는 모든 조건을 다 걸어야하기 때문에, 로직이 복잡하게 짜인다. 그러나 모든 규칙을 충족하는 경우는 쉽게 테스트를 통과시킬 수 있습니다. 바로 시작해보겠습니다. 1) 모든 규칙을 충족..
안녕하세요🖐 오늘은 제가 토이프로젝트 시작에 앞서, 어떻게 패키지를 구성하고, 파일을 관리할지 고민을 하던 중에 스프링 계층 구조에 대해서 알게되어서 공부하게 되었습니다. 그 내용을 포스팅 해보겠습니다. 저는 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 라는 책을 보며, 스프링 계층구조에 대하여 자세히 알게되었습니다. 위 사진이 대표적인 스프링의 계층 구조라고 합니다. 각각의 계층은 계층마다 독립적으로 분리하여 구현하는 것이 가능해야하고, 각 계층에서 담당해야 할 기능들이 있다. Web Layer(= Presentation Layer) 우리가 흔히 사용하는 Controller와 View 영역입니다. 스프링을 사용하면서 MVC패턴을 들어보셨을 것이라고 생각합니다. 그 중에서 View와 Controlle..
안녕하세요🖐 제가 Springboot + JPA 공부를 하다가 궁금한 점을 포스팅 해보겠습니다. 저는 Dto를 생성할 때 항상 기본 자료형으로 선언을 했습니다 public class DtoA { private long id; private String name; private int age; private String addr; } 이런식으로 Dto를 구성하여도 크게 문제는 없었습니다. 왜냐하면 평소에 ORM은 Mybatis를 위주로 프로젝트를 진행하였고, 대부분 Mybatis를 활용했기 때문 입니다. 실제로 위 필드를 기본자료형으로 해서 생긴 문제 또한 없었습니다.. 그러나 현재 트렌드인 JPA를 공부 중에 모든 Dto 구성 자료형을 기본 타입이 아닌 래퍼 타입으로 구성을 합니다. 왜 그런지 궁금해졌고..
TODO : 검색 로직, 대 댓글 만들기(231107) 개발 환경 : 인텔리제이 --> SpringbootMybatisMini 폼만 작성한 코드를 작성해서 적어두겠습니다 addform.jsp (댓글 등록폼) ; 0}"> ${no} ${dto.subject} ${dto.name} ${dto.readcount} ${dto.likes} 이전 ${pp } ${pp } 다음 content.jsp (댓글 출력폼) ${dto.subject} ${dto.name}(${dto.id}) 조회수 : ${dto.readcount} ${dto.content} 좋아요 ${dto.likes} 답글 수정 삭제 목록 글쓰기 이상으로 답변형 게시판 끝 입니다.
🔔 TODO : 페이징 , 게시글 AJax수정, 삭제 📘 project : 인텔리제이 - SpringBootMybatisMini github : https://github.com/Hyeonqz/SpringBootMybatisMini 스프링부트 동작관정 간단 클라이언트가 JSP 페이지에 데이터를 입력하고 제출합니다. JSP 페이지에서 컨트롤러에게 요청을 보냅니다. 컨트롤러는 요청을 받고 필요한 작업을 수행합니다. 컨트롤러는 서비스로 데이터 처리를 위임합니다. 서비스는 필요한 비즈니스 로직을 실행하고 데이터베이스에서 데이터를 가져옵니다. 서비스가 데이터 처리를 완료하면, 결과를 컨트롤러로 반환합니다. 컨트롤러는 JSP 페이지로 데이터를 전달합니다. JSP 페이지는 데이터를 이용하여 동적 웹 페이지를 생성하고..
인텔리제이 -> springmybatismini 프로젝트 AJAX로 개인 정보 삭제시키기 기본적으로 Ajax 사용에서 datatype을 json으로 받아 올 때는 controller에서 @RestController 어노테이션 선언을 하고 사용해야 한다. controller에서 restcontroller선언하기 싫다면, 선언해야하는 메소드에 @responsebody 어노테이션 설정을 한다. #1 컨트롤러 @GetMapping("/member/deleteme") @ResponseBody public void deleteme(@RequestParam String num, HttpSession httpSession) { String path = httpSession.getServletContext().getRe..
#1) 프로젝트 개발 환경 intellj , java(jdk-11), spring boot2.7.17, mysql , maven, jsp(jstl) #2) 프로젝트 의존성을 추가 Lombok, spring web , spring dev tools, mysql driver, mybatis framewrok 총 5가지를 추가했습니다. #3) 기본 설정 pom.xml jstl jstl 1.2 org.apache.tomcat.embed tomcat-embed-jasper provided 이 두가지를 추가해줍니다. 다음으로는 application.properties를 추가 해 줍니다. 이 설정은 yml 이나 properties 어느 것이든 상관 없습니다. application.properties #server.p..
MVC패턴은 왜 자주 사용되고 왜 나오게 되었을까? Java기반으로 한 웹 개발 발전 순서 1) Servlet 사용 2) Java+Servlet 사용 3) Spring + MVC MVC란? → Model View Controller 디자인 패턴 중 하나인 MVC패턴은 model,view,controller의 줄임말로 어플리케이션을 구성할 때 그 구성요소를 세가지의 역할로 구분한 패턴의 의미한다. 장점 : 사용자 인터페이스로부터 비즈니스 로직을 분리하여 서로 영향없이 고칠 수 있는 설계가능. Controller : 사용자의 요청을 받는 곳 → 어떻게 처리 할지를 정한다.(보통 model로 보냄) Model : DB를 처리하는 영역 View : Model에서 처리 된 것을 사용자에게 직접적으로 보여지는 곳...