IT 공부/프로젝트 2024. 8. 30.
input 데이터 팝업창 띄워 가져오기
이런 형식으로 사람을 찾아서 넣어 입력해서 input 제출하는 form 작성중임어느정도 데이터가 많고, 기존 데이터에서 골라야 하기에 select 보다 그냥 창띄워서 가져오는게 더 좋다고 생각하여 이렇게 만들었음. div> label for="engineerId">엔지니어:label> input type="text" id="engineerName" name="engineerName" required readonly> input type="hidden" id="engineerId" name="engineerId" required> button ..
IT 공부/프로젝트 2024. 8. 26.
[MyBatis] DB snake_case 를 camelCase 로 자동 변환하기 (Spring Boot)
db 컬럼은 보통 snake case로, Java 객체는 주로 camel case 로 사용하는데서로 이름을 맞춰주지않는다면 가져올수가 없다. 그래서 쿼리문 alias 를 이용하여 맞춰줄수도 있지만 설정한줄을 통해 가능하다 application.yaml 또는 application.properties 에 다음과 같은 설정을 넣어주면 된다. .yamlmybatis: configuration: map-underscore-to-camel-case: true .propertiesmybatis.configuration.map-underscore-to-camel-case=true
IT 공부/프로젝트 2024. 8. 24.
[GitLab-Jenkins] 깃랩 - 젠킨스 연동하여 push Event 발생 (자동 build & 배포)
1. GitLab Access Token 발급 깃랩 로그인 후 ( root 계정 아니여도 됨 ) 우측 상단에서 Preferences 클릭 Access Tokens 클릭 후 토큰 이름, 만료일 입력Select scopes 는 필요한 내용들 클릭 (나는 다 선택함) 후 Create 하여 생성 아래 생성된 토큰 확인하여 복사해둠. 2. 젠킨스 설정 젠킨스 로그인 후 Jenkins 관리 - Plugins 에서 우선 gitlab 플러그인 설치 이외에 Jenkins 관리 - Tools 에서 JDK 및 Gradle 등의 버전을 설정할 수 있는데.. 나는 스크립트쉘로 빌드돌릴거라 안했음 2. Credientail 생성 Jenkins 관리 - Credentials 클릭하여 위 화면 접근아래 Stores scope..
IT 공부/프로젝트 2024. 8. 20.
[GitLab] 깃랩 계정가입 및 프로젝트 멤버 초대 방법
1. 접속 Register now 클릭 2. 정보 입력 후 Register 버튼 클릭 3. root 계정으로 승인 4. 좌측 상단 메뉴에서 Admin 클릭 5. Overview - Users 탭 클릭 후 대기중인 Pending approval 클릭 User administration 항목에서 Approve 를 클릭하여 가입신청을 승인한다. 프로젝트 멤버 1. 프로젝트로 들어간 후 Project information - Members 클릭 2. 우측 상단 Invite members 클릭 3. 항목 입력 후 Invite
IT 공부/프로젝트 2024. 7. 29.
[Spring] 게시판 만들기 15 - 댓글 알람 추가하기 (WebSocket, AOP)
이전 포스팅 마지막 jsp (list.jsp) 를 보면 레이아웃 수정이 있었는데 다른페이지들도 그렇게 맞추면된다. 그럼 댓글을 달았을 때 웹소켓을 사용하여 알람이 나오도록 한번 만들어 본다. 1. build.gradle 에 아래 내용을 추가한다. implementation 'org.springframework.boot:spring-boot-starter-websocket'//웹소켓용 implementation 'org.springframework.boot:spring-boot-starter-aop' implementation 'org.aspectj:aspectjweaver:1.9.19'//AOP 용 알람을 보낼 websocket 과, 특정 로직을 처리할때 (댓글이 달릴때) 사용하기 위한..
IT 공부/프로젝트 2024. 7. 24.
[Spring] 게시판 만들기 14 - 권한 관리 2
Role 추가에따라 dao 도 Post, User 둘다 수정이 있었다.특히 User는 Role 직접적인 CRUD 내용도 추가하였다. package com.example.post.dao;import java.util.HashMap;import java.util.List;import java.util.Map;import org.mybatis.spring.SqlSessionTemplate;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Repository;import com.example.post.model.Category;import com.example.post.model.Po..
IT 공부/프로젝트 2024. 7. 23.
[Spring] 게시판 만들기 13 - 권한관리 1
권한을 안넣어서 약간 이빨빠진채로 만들어둔 유저와 게시판카테고리를 통합시켜 보자.. 1. 페이지 작성 role_management.jsp%@ page contentType="text/html;charset=UTF-8" language="java" %>%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>a%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>DOCTYPE html>html lang="en">head> meta charset="UTF-8"> title>권한 관리화면title> sec:csrfMetaTags /> script src..
IT 공부/프로젝트 2024. 7. 23.
[Spring] 게시판 만들기 12 - 게시판 카테고리 관리기
그럼 이어서 게시판 카테고리와 권한을 만든다. 우선 게시판 카테고리 생성및 수정 1. 페이지 만들 board_management.jsp%@ page contentType="text/html;charset=UTF-8" language="java" %>%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>DOCTYPE html>html lang="en">head> meta charset="UTF-8"> title>게시판 관리화면title> sec:csrfMetaTags /> script src=..
IT 공부/프로젝트 2024. 7. 22.
[Spring] 게시판 만들기 11 - 계정 생성하기 (Spring Security 3)
권한, 게시판(카테고리)를 만들기 이전에 해당 기능들을 이용할 수 있는 계정부터 만들 수 있게 페이지를 생성한다. 1. WEB-INF/jsp/admin 아래 페이지 생성 우선 계정관리 페이지를 하나 만든다user_management.jsp%@ page contentType="text/html;charset=UTF-8" language="java" %>%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>DOCTYPE html>html lang="en">head> meta charset="UTF-8"> ..
IT 공부/프로젝트 2024. 7. 20.
[Spring] 게시판 만들기 10 - Spring Security 2
로그인까지 했으니 이제 로그아웃.계정, 권한 만들기,admin 페이지를 만들어 보겠다. 1. 로그아웃 하기 우선 로그아웃 기능을 추가한다.이전에 만든 SecurityConfig 에 내용을 추가한다. http .sessionManagement((auth) -> auth .sessionFixation().changeSessionId() //세션공격 보호 .maximumSessions(1) //세션 최대 개수 .maxSessionsPreventsLogin(false) //다중 로그인 시 처리방법 treu : 신규로그인차단, false : 기존세..
IT 공부/프로젝트 2024. 7. 19.
[Spring] 게시판 만들기 9 - Spring Security 등록하기 1
이제 로그인 절차를 위해 스프링 시큐리티를 사용해본다. 스프링 시큐리티외에 그냥 해도 되긴 하지만 (예전에 포폴은 그냥만든듯) 스프링 시큐리티를 사용해서 로그인 구현을 해보자. User 관리도 로그인/로그아웃, 회원가입, 권한관리, 회원설정 변경등 다양한 기능이 있지만..우선 로그인부터하고, 회원설정은 나중에 봐서 추가. 일단 스프링 시큐리티는 Spring Boot 들어오기전 앞단 Filter 에서 처리해준다고 한다. 이런 인증절차를 가지고 있고, 이 인증절차는 Spring MVC 앞에서 수행된다고 한다. Spring Security 로그인 절차 등록 1. 의존성 추가 implementation 'org.springframework.boot:spring-boot-starter-security..
IT 공부/프로젝트 2024. 7. 16.
[Spring] 게시판 만들기 8 - 파일 업로드/다운로드
게시판 기능에 파일업로드도 추가해보도록 한다. @Autowired FileService fileService; private static String UPLOAD_FOLDER = "D:/logs/"; private static final long MAX_FILE_SIZE = 10 * 1024 * 1024; // 10MB @PostMapping("/Modify") public ModelAndView modifyPost(HttpServletRequest request, HttpServletResponse response, @RequestParam("file") MultipartFile file) throws UnsupportedEncodingException { ..
IT 공부/프로젝트 2024. 7. 11.
[Spring] 게시판 만들기 7 - 댓글 기능 2
VS Code 에서 바로복사하면 예쁘게해주는지 이제 처음 알았음.. 코드블럭 안쓸래 이제 PostController 내용 추가 @Autowired CommentService commentService; @GetMapping("/Content") public ModelAndView viewPost(HttpServletRequest request) { String num = request.getParameter("num"); Post post = postService.getPost(num); mav.setViewName("Post"); mav.addObject("post", post); ListComment>..
IT 공부/프로젝트 2024. 7. 10.
[Spring] 게시판 만들기 6 - 댓글 기능 1
게시판에 댓글을 추가해본다. 대댓글은 나중에 해보고 우선 댓글부터.. 우선 model 객체를 하나 만든다. model 패키지에 Comment.java 로 하나만들었음.package com.example.post.model;import lombok.Data;@Datapublic class Comment { private String commentId; private String contents; private String author; private String postId; private String date;} 댓글id (번호 자동생성), contesnt : 댓글내용author : 작성자postId : 댓글이 작성된 글 번호date : 작성시각 Comment.postId 와..
IT 공부/프로젝트 2024. 7. 4.
[Spring] 게시판 만들기 5 - 삭제
마지막으로 삭제기능 PostController.java 에 아래 Delete 메서드 작성 @GetMapping("/Delete") public ModelAndView deletePost(HttpServletRequest request) throws IOException { postService.deletePost(request.getParameter("num")); mav.setViewName("redirect:/"); return mav; } PostService 에 이어서 Service 작성 public void deletePost(String num) throws IOException { postDao.deletePost(n..
IT 공부/프로젝트 2024. 7. 3.
[Spring] 게시판 만들기 4 - 조회 및 수정
이어서 게시글 조회 및 수정 기능을 추가해 본다. Post.jsp 라는 페이지에서 조회와 수정을 두개 다 할수있게 만들었기에 묶었음. 이전과 동일하게 먼저 Controller 에 Content GetMapping 시켜준다. @GetMapping("/Content") public ModelAndView viewPost(HttpServletRequest request) { String num = request.getParameter("num"); Post post = postService.getPost(num); mav.setViewName("Post"); mav.addObject("post", post); mav.addObject(..
IT 공부/프로젝트 2024. 7. 1.
[Spring] 게시판 만들기 3 - 글쓰기 Write
지난번 게시글 리스트 출력을 했으니 (Select)실제로 내용이 들어갈 게시글 CRUD 를 작성해본다. 글쓰기부터 1. controller 생성 만들어둔 PostController 에 우선 Create (Write) 를 만들어본다. @GetMapping("/Write") public ModelAndView writePost(HttpServletRequest request){ mav.setViewName("Write"); return mav; } @PostMapping("/Write") public ModelAndView writePost(@ModelAttribute Post post, HttpServletResponse response){ ..
IT 공부/프로젝트 2024. 6. 29.
[Spring] 게시판 만들기 2 - 게시글 리스트 출력 및 페이징
이번에 구현할 기능 목표 게시글 리스트 출력 및 페이징 1. 테이블 생성 게시글을 저장하기 위한 테이블생성이 필요하다.dbeaver, workbench 등 db에 접속해서 query 를 날릴 수 있는 상태를 만들어 둔다. 직접 접속해도되고 객체 테이블 생성은 GPT 도움받으니 편하네.. CREATE TABLE Posts ( num INT IDENTITY(1,1) PRIMARY KEY, title NVARCHAR(255) NOT NULL, author NVARCHAR(100) NOT NULL, contents NVARCHAR(MAX) NOT NULL, date DATETIME DEFAULT GETDATE()); IDENTITY 가 sequence 개념으로 알아서 1씩 증가시켜준..
IT 공부/프로젝트 2024. 6. 27.
[Spring] 스프링으로 게시판 만들기 1
1. 환경설정 VS code 로 진행할것이기에 Extention 에서 필요한 확장팩들을 설치한다. 이외에 Gradle, Lombok 등 필요한것들을 설치. Install 만 누르면 알아서 설치됨 이외에 자바같은건 알아서 설치 2. 프로젝트 생성 Crtl+Shift+P 누르면 검색창 나오는데 이곳에 Spring Initializr gradle Project 로 생성버전은 3.3.1, Java, War, gradle, Java 17로 생성하였고 패키지 및 프로젝트 명은 임의로 지정 마지막에 dependencies 를 골라야하는데Lombok, Spring boot DevTools, Spring Web, MyBatis Framwork 를 골랐음. 3. 기본 폴더(패키지) 생성 게시판을 만들것이기에 pos..