티스토리

코린이 탈출기
검색하기

블로그 홈

코린이 탈출기

myblog1128.tistory.com/m

성장하는 개발자

구독자
1
방명록 방문하기

주요 글 목록

  • [STS]Several ports (8005, 8080, 8009) required by XXX are already in use. 오류 Several ports (8005, 8080, 8009) required by XXX are already in use.The server may already be running in another process, or a system process may be using the port.To start this server you will need to stop the other process or change the port number(s). 서버를 시작했을 때 위와 같은 오류 메세지가 발생했다.이는 8005, 8080, 8009 포트가 이미 사용중이라서 생기는 오류이다.    해결방법1. 관리자 권한으로 CMD 창을 연다. 2. CMD 창에서 아래의 명령어 입력한다.netstat -a -o 3.. 공감수 0 댓글수 0 2024. 8. 27.
  • [Oracle] ORA-28002: 7일안에 비밀번호가 만기될 것입니다. 오류 Oracle 데이터베이스 접속 중 아래와 같은 오류가 발생했다. 해결방법 SELECT resource_name, limit FROM DBA_PROFILES WHERE profile='DEFAULT' AND resource_type = 'PASSWORD'; 위의 쿼리문을 실행시키면 아래와 같이 PASSWORD_LIFE_TIME이 180인 것을 확인할 수 있다. 유효 기간을 무한으로 설정하려면 아래의 쿼리문을 실행하면 된다. ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED; PASSWORD_LIFE_TIME이 UNLIMITED로 변경된 것을 확인할 수 있다. 공감수 0 댓글수 0 2024. 3. 25.
  • [STS] Exception in thread "main" java.lang.NoClassDefFoundError 이전에는 멀쩡했던 코드들이 아래와 같이 빨간줄이 생겼다. 그리고 실행하니까 Exception in thread "main" java.lang.NoClassDefFoundError와 같은 오류가 발생했다. 해결 방법 build.grdle을 refrrsh해주면 된다. 해당 프로젝트 우클릭 > Grdle > Refresh Gradle Project 공감수 0 댓글수 0 2024. 3. 18.
  • [Spring]Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured 프로젝트 생성 후 실행 시 아래와 같은 오류가 발생하면서 프로젝트가 실행되지 않는 문제가 발생했다. 이는 application.properties 또는 application.yml을 설정해주지 않아서 발생한 문제이다. 해결 방법 아래와 같이 설정해주면 정상적으로 프로젝트가 실행된다. - application.properties일 경우 spring.datasource.url=jdbc:[DB명]://localhost:3306/[DB 스키마명] spring.datasource.username=[DB ID] spring.datasource.password=[DB PW] spring.datasource.driver-class-name=[JDBC 드라이버] - application.yml일 경우 spring: da.. 공감수 0 댓글수 0 2024. 3. 16.
  • [MyBatis] Parameter not found. 프로젝트 중 수강 년도에 따라 로그인한 학생의 수강 교과목을 출력하는 과정에서 발생한 문제이다. 나의 작업 환경에서는 정상적으로 동작했지만 깃을 통해 pull을 받은 팀원의 환경에서는 아래와 같은 오류가 발생했다. Parameter 'studentId' not found. Available parameters are [arg2, arg1, arg0, param3, param1, param2] org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: 해결방법 기존 코드 package com.lms.user.classinfo.mapper; import com.lms.user... 공감수 0 댓글수 0 2024. 2. 29.
  • 국비 2차 프로젝트 추가 개발 이전글에서 확인할 수 있다시피 2차 프로젝트를 마무리하지 못하고 수료했다.😭 그래서 추가적으로 개발 진행을 할 수 있는 사람끼리 프로젝트 마무리를 하기로 결정! 원래 초기 기획은 대학교에서 사용하는 웹사이트였지만 이후 개발에 참여할 수 있는 사람이 나를 포함하여 2명밖에 없었기 때문에 시간상 학원에서 사용하는 웹 사이트로 목적이 변경되었다. 회원 페이지 이외의 구현 내용은 이전글을 참고바란다~! 💨 주요 기능 소개 📌 메인 페이지 기존의 학교 로고에서 학원 로고로 변경했다. 로그인을 하면 아래의 페이지에 접근이 가능하다. 📌 나의 정보 (학생 & 강사) 1. 나의 정보 조회 학생과 강사 모두 자신의 정보를 조회할 수 있다. 2. 나의 정보 수정 수정하기 버튼을 누르면 사진, 이메일, 주소, 연락처 등을 .. 공감수 0 댓글수 4 2024. 1. 30.
  • 신입 개발자 면접 준비 - 네트워크, 보안 ❓ 네트워크 및 네트워크 망의 종류에 대해서 설명해주세요. - 네트워크 물리적 전송 매체를 사용하여 서로 연결된 장치 세트를 말합니다. - 네트워크 망의 종류 1. LAN : 한 건물 또는 사무실 내의 호스트들 간에 연결된 소규모 네트워크 2. WAN : LAN과 LAN을 연결하는 대규모 네트워크 ❓ HTTP 프로토콜에 대해서 설명해주세요. HTTP(Hyper Text Transfer Protocol)이란 데이터를 주고 받기 위한 프로토콜이며 서버/클라이언트 모델을 따릅니다. 그리고 HTTP는 상태 정보를 저장하지 않는 Stateless의 특징과 클라이언트의 요청에 맞는 응답을 보낸 후 연결을 끊는 Connectionless의 특징을 가지고 있습니다. 통신 간의 연결 상태 처리나 상태 정보를 관리할 필요.. 공감수 0 댓글수 0 2024. 1. 24.
  • 신입 개발자 면접 준비 - 스프링, JPA ❓ 스프링 프레임워크(Spring Framework)에 대해서 설명해주세요. 자바 개발을 편리하게 해주는 오픈소스 프레임워크를 말합니다. IoC, DI, AOP를 지원하는 지원하는 경량의 컨테이너라고 할 수 있습니다. ❓ 제어의 역전(Ioc)에 대해서 설명해주세요. 컨트롤의 제어권이 사용자가 아닌 프레임워크에 있어서 필요에 따라 스프링에서 사용자의 코드를 호출해서 애플리케이션의 느슨한 결합을 도모하는 것을 말합니다. ❓ 의존성과 의존성 주입(DI = Dependency Injection)에 대해서 설명해주세요. 한 객체가 다른 객체를 사용할 때 의존성이 있다고 할 수 있습니다. 필요한 객체를 직접 생성하는 것이 아닌 외부로부터 객체를 받아서 사용하는 것을 말합니다. 의존성 주입 방법에는 생성자 주입, 필.. 공감수 0 댓글수 0 2024. 1. 22.
  • 신입 개발자 기술 면접 정리 - 데이터베이스 ❓ 데이터베이스와 DBMS에 대해서 설명해주세요.- 데이터베이스 여러 사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합을 말합니다. - DBMS 데이터베이스 관리 시스템으로 다수의 사용자들이 데이터베이스 내의 데이터를 접근할 수 있도록 해주는 응용 프로그램 모음을 말합니다. 데이터는 구조적으로 저장되므로 중복성이 제어되고 필요한 경우 데이터 백업 및 복구를 제공한다는 장점이 있습니다. ❓ RDBMS와 NoSQL에 대해서 설명해주세요.- RDBMS(Scale - up : 수직 확장) 관계형 데이터베이스 관리 시스템으로 데이터베이스에 별도의 테이블에 저장된 관계형 데이터 모델을 기반으로 하며 테이블 간의 관계는 공통 열을 사용하여 나타내는 것을 말합니다. 복잡한 쿼리를 지원하고 ACID.. 공감수 2 댓글수 0 2024. 1. 19.
  • 신입 개발자 기술 면접 정리 - 자료구조/알고리즘 ❓ 컬렉션 프레임워크의 종류에 대해서 설명해주세요. 컬렉션은 복수의 자료형을 저장할 수 있고 가변적 크기를 가집니다. - List : LinkedList, Vector. ArrayList 순서가 있는 데이터의 집합으로 데이터의 중복을 허용합니다. - Set : HashSet, TreeSet 순서를 유지하지 않는 데이터의 집합으로 데이터의 중복을 허용하지 않습니다. - Map : HashTable, HashMap, TreeMap 순서를 유지하지 않으며 키와 쌍으로 이루어진 데이터의 집합으로 키는 중복을 허용하지 않고 값을 중복을 허용합니다. ❓ 배열(Array)과 컬렉션 중 연결 리스트(Linked List)에 대해서 설명해주세요. - 배열 단 하나의 자료형만 저장할 수 있고 인덱스를 가집니다. 데이터를 .. 공감수 0 댓글수 0 2024. 1. 18.
  • 신입 개발자 기술 면접 정리 - JAVA ❓ JAVA에 대해서 설명해주세요. 객체지향 프로래밍 언어를 말합니다. ❓ 객체지향 프로그래밍(OOP)에 대해서 설명해주세요. 순차적 실행이 아닌 객체와 객체의 상호작용을 통해 동작하는 것을 말합니다. ❓ JAVA의 특징은? 1. JVM(자바 가상 머신) 위에서 동작하기 때문에 운영체제에 독립적입니다. 2. 가비지 콜렉터를 통한 메모리 관리를 할 수 있습니다. 3. 멀티 스레드를 지원합니다. 4. 상속, 추상화, 캡슐화, 다형성의 특징을 가집니다. ❓ OOP의 특징에 대해서 설명해주세요. - 상속 부모 클래스의 기능을 자식 클래스에서도 사용해줄 수 있게 해주는 것을 말합니다. - 추상화 객체들의 공통된 특징(데이터 및 기능)을 뽑아내는 것을 말합니다. - 캡슐화 객체가 맡은 역할을 수행하기 위한 하나의 .. 공감수 0 댓글수 0 2024. 1. 17.
  • [Git] error: src refspec master does not match anyerror: failed to push some refs to '...' 오류 프로젝트를 Git에 올릴 때 아래와 같은 명령어를 입력하면 사진과 같은 오류가 발생했다. git push -u origin master 이는 master branch가 없어서 발생한 것으로 아래와 같이 해결 해보자. 해결과정 - "master"라는 브랜치를 생성해서 현재 작업 디렉토리를 이 브랜치로 전환한다. git checkout -b "master" 다시 아래와 같이 명령어를 입력해보자. git push -u origin master 정상적으로 로컬에서 변경한 내용을 원격으로 푸쉬되는 것을 확인할 수 있다. 공감수 0 댓글수 0 2023. 11. 3.
  • [Git] IntelliJ에서 생성한 프로젝트 깃에 올리기 1. Repository 생성하기 Repository name : 리포지토리 이름 Description : 리포지토리 설명 public/private : 공개/비공개 여부 Initialize this repository with add a README file : 리포지토리 생성시 README 파일 생성 여부 README 부분을 체크하지 않으면 위와 같은 창이 뜨는 것을 확인할 수 있다. 파란색 박스로 되어있는 부분을 복사해놓도록 하자. 2. IntelliJ에서 프로젝트 생성한 후 터미널 열기 3. 터미널에서 아래의 명령어 입력하기 - 깃 저장소를 로컬 저장소로 초기화한다. git init - 원격 저장소 remote를 생성하고 GitHub에서 생성한 Repository를 연동한다. git remote .. 공감수 0 댓글수 0 2023. 11. 3.
  • [IntelliJ] Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. 오류 Spring Boot 프로젝트를 생성한 후 최초에 실행할 때 아래와 같은 오류가 발생하면서 정상적으로 실행되지 않았다. 이는 데이터 소스에 대한 url 속성이 지정되지 않았고, 데이터베이스에 대한 드라이버 클래스를 결정하지 못해서 발생한 오류이다. 해결방법 application.properties 파일에서 자신의 데이터베이스 맞게 설정해준다. MariaDB일 경우에는 아래와 같이 설정할 수 있다. # 데이터베이스 연결 정보 spring.datasource.url=jdbc:mariadb://localhost:3306/프로젝트명 spring.datasource.driver-class-name=org.mariadb.jdbc.Driver spring.datasource.username=사용자이름 spring.d.. 공감수 0 댓글수 0 2023. 11. 3.
  • [Git] Git 설치하기 Git - Downloading Package (git-scm.com) Git - Downloading Package Download for Windows Click here to download the latest (2.42.0) 32-bit version of Git for Windows. This is the most recent maintained build. It was released about 2 months ago, on 2023-08-30. Other Git for Windows downloads Standalone Installer 32-bit Git git-scm.com 위의 사이트에서 자신의 컴퓨터에 맞게 설치를 하도록 한다. (Click here to download 클릭) Git.. 공감수 0 댓글수 0 2023. 10. 26.
  • 국비 학원 약 6개월, 수료 후기!! 길다면 길고 짧다면 짧은 약 6개월 기간의 국비 과정을 수료했다.🎉 국비 과정을 시작할 때만 해도 언제 끝이나나 했는데 벌써 프로젝트를 마무리하고 수료까지 했다. 지나고 보면 정말 시간이 금방 지나가는 것 같긴 하다. 국비 학원을 다니면서 꾸준하게 기록하고 블로그에 글을 쓰고 싶었는데 생각보다 힘들었던 것 같다. 그래도 블로그에 어느정도 흔적을 남긴 것 같아서 조금 뿌듯하다.╰(*°▽°*)╯ 일단 학원에 대해서 먼저 끄적여보자면 우리는 강사님이 총 3번 바뀌었다. 프론트 강사님과 백엔드 강사님이 다르다는 것은 알고 있었는데 백엔드 강사님이 2번이나 바뀌었다. ㅎㅎ;; 강사님과의 유대감? 친밀감?이라고 해야하나 나는 개인적으로 이 부분이 중요하다고 생각했다. 왜냐하면 강사님과 친할수록 질문하기도 더 수월하.. 공감수 0 댓글수 0 2023. 10. 26.
  • 국비 2차 프로젝트 회고(2) 💨 EduMasters 학습자 관리 솔루션(대면) 💨 기획 의도 1. 쉬운 접근성 → 학생 및 강사(사용자)들이 교육과정 정보를 손쉽게 접근하고 이해 가능 2. 효율성 증대 → LMS를 통해 교육과정 및 자료를 집중화하고 상호작용을 간소화 3. 정보 공유 → 커뮤니티를 통한 정보 공유 💨 개발 환경 운영체제) Window11 IDE) IntelliJ 데이터베이스) MariaDB 협업 도구) Discord, Github, Notion, Google Drive 서버측 도구 및 기술) java 17.0.7, Apache Tomcat, Gradle, Spring boot 2.3.1, Lombok, MyBatis 클라이언트측 도구 및 기술) HTML, CSS, JavaScript, Ajax, Jquery 💨 개발.. 공감수 0 댓글수 1 2023. 10. 26.
  • 국비 2차 프로젝트 회고 (1) 9월 21일 ~ 9월 23일 먼저 2차 프로젝트는 기업 프로젝트로 진행되었다. 주제는 1.청소 차량 센서 연계 관제 시스템과 2.통합 관리 시스템이 있었다. 내가 생각하기에 1번 주제는 그 회사에서만 사용하는 기능일 것 같기도 했고 2번 주제가 좀 더 앞으로 취업하는 회사에서 더 많이 쓰일 것 같아 2번을 선택하게 되었다. (CRUD를 전체적으로 사용한다는 점에서 ㅎㅎ..) 이렇게 같은 주제를 선택한 사람들과 팀이 생성되고 처음 회의를 하게 되었다. 통합 관리 시스템에서도 상담관리 / 학습자관리 / LMS 솔루션으로 나뉘었는데 우리는 그 중에서도 학습자 관리 솔루션(대면)으로 결정했다! 9월 24일 ~ 10월 3일 하필이면 2차 프로젝트 기간 중에서 추석 연휴가 있었다. 무려 6일... 나중에서야 생각해.. 공감수 1 댓글수 4 2023. 10. 26.
  • 국비 1차 프로젝트 회고 (2) 💨 PetConnect 동물 병원 및 장묘 업체 찾기 서비스 웹 사이트 개발 💨 기획 의도 1. 한 사이트에서 반려인이 원하는 지역의 동물 병원 및 장묘 업체 조회 가능 → 편의성 확보 2. 업체 정보 확인과 후기 등록 및 확인 → 정보 제공 3. 반려동물 관련 자유로운 소통 가능 → 커뮤니티 기능 💨 개발 환경 운영체제) Window11 IDE) Eclipse sts 4.18.0 데이터베이스) MariaDB 협업도구) Discord, GitHub, Notion 서버측 도구 및 기술) java 17.0.7, Apache Tomcat, Gradle, Spring boot 2.5.4, Spring Security, Spring Data JPA(Hibernate) 클라이언트측 도구 및 기술) HTML, CSS.. 공감수 0 댓글수 0 2023. 10. 26.
  • 국비 1차 프로젝트 회고 (1) 1차 프로젝트 회고를 작성하기 전에 몇 번 글을 작성하고 싶었는데 생각보다 시간이 너무 금방 지나갔고 프로젝트를 시작하게 되면서 바빠져서 바로 1차 프로젝트 회고를 작성하게 되었다. 8월 23일 ~ 8월 말 팀원이 정해진 후 여러가지 주제를 말하던 중 하나를 선택했는데 DB를 설계하는 와중에 DB가 우리가 생각했던 것보다 너무 커진 것을 느끼게 되었다... 이건 프로젝트 기간 안에 끝내지 못할 것 같다는 생각이 들어서 같이 DB를 설계하는 팀원분과 다른 주제를 몇 개 찾아서 다음날 팀원분들에게 주제를 엎자고 했다. 사실 와이어 프레임과 플로우 차트 등 어느정도 진행된 상태라 말할까 말까 고민을 많이 했었다. ㅠㅠ 다행히도 다른 팀원 분들도 긍정적으로 받아들여주셔서 주제 변경 완료! 9월 초 DB 및 와이.. 공감수 0 댓글수 0 2023. 9. 25.
  • DI와 IoC 웹을 위한 스프링 프레임워크 모듈 Java SE 위에는 Java EE 또는 Spring을 얹을 수 있다. Java SE는 가장 대중적인 자바 플랫폼으로 java.lang.*, java.util.* 등과 같이 대부분의 패키지가 포함된 것을 말한다. Java EE는 Java SE 플랫폼을 기반으로 그 위에 탑재되고 JSP, Servlet, JDBC 등 웹 프로그래밍에 필요한 기능을 다수 포함한다. Spring은 엔터프라이즈급 애플리케이션을 개발하기 위한 모든 기능을 종합적으로 제공하는 경량화된 솔루션을 말한다. 앞으로 배울 내용을 간략히 하면 아래와 같다. 느슨한 결합력과 인터페이스 -> DI -> MVC AOP -> 트랜잭션 Servlet Filter -> 인증과 권한 느슨한 결합력과 인터페이스 만약 코드.. 공감수 0 댓글수 0 2023. 9. 25.
  • [Oracle] 시퀀스(Sequence) 시퀀스 자동으로 순차적으로 증가하는 순번을 반환하는 데이터베이스 객체를 말한다. 시퀀스는 게시판 번호와 같이 번호를 순차적으로 할당할 때 필요하다. 시퀀스 생성하기 CREATE SEQUENCE [시퀀스명] INCREMENT BY [증감숫자] START WITH [시작숫자] MINVALUE [최솟값] MAXVALUE [최대값]; CREATE SEQUENCE SEQ_NO INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 100; 시퀀스 번호 확인하기 SELECT SEQ_NO.NEXTVAL FROM DUAL; 위의 코드를 한번 더 실행시키면 아래와 같이 시퀀스 값이 1이 늘어나는 것을 확인할 수 있다. 현재 시퀀스 번호 확인하기 SELECT SEQ_NO.CURRVAL FRO.. 공감수 0 댓글수 0 2023. 9. 3.
  • Admin 페이지를 위한 Service 클래스 및 Controller 관리자 페이지를 위한 Service 생성하기 1. publicNoticeAll(ids) 게시글 일괄 공개 요청하기 public class NoticeService { public int removeNoticeAll(int[] ids) { return 0; } } 넘겨받은 배열로 삭제하고 몇 개를 삭제했는지 반환한다. 2. removeNoticeAll(ids) 게시글 일괄 삭제 요청하기 public class NoticeService { public int pubNoticeAll(int[] ids) { return 0; } } 3. insertNotice(notice) 공지 등록 요청하기 public class NoticeService { public int insertNotice(Notice notice.. 공감수 0 댓글수 0 2023. 8. 19.
  • 댓글 수 포함하기 및 index 페이지 추가하기 아래의 사진과 같이 게시글 목록에서 댓글 수를 포함하려고 한다. 1. 댓글 수 포함하기 먼저 COMMENT 테이블과 MEMBER 테이블의 구성을 살펴보면 아래와 같다. 댓글 수를 알기 위해서는 NOTICE 테이블만으로 알 수 없어 COMMENT 테이블과 NOTICE 테이블을 JOIN을 해야 한다. SELECT * FROM NOTICE N INNER JOIN "COMMENT" C ON N.ID = C.NOTICE_ID ORDER BY N.REGDATE DESC; INNER JOIN을 할 때는 자식 테이블이 기준이 되어서 자식 테이블이 필요로 하는 부모 테이블의 컬럼을 가져오도록 한다. 여기서 자식 테이블은 COMMENT 테이블이다. 위에서 보았다싶이 COMMENT 테이블에는 3개의 컬럼이 있으므로 이를 기.. 공감수 0 댓글수 0 2023. 8. 17.
  • 페이지 처리하기 및 detail을 Service를 이용하여 구현하기 1. 페이징 처리하기 검색을 적용한 후에 문제가 생긴 페이징 부분을 해결해보도록 하자. 현재 주소창을 보면 list?p=2를 통해서 2page로 넘어간 것을 볼 수 있다. 현재 총 11개의 데이터가 있는데 10개씩 끊으면 1번 게시물이 2page에 보여야하지만 보이지 않는다. 그 이유는 주소창을 보면 f(field)와 q(query) 파라미터가 전달되지 않았기 때문이다. 이는 키는 있지만 값이 전달되지 않은 것인데 서버 쪽에서는 값이 가지 않았기 때문에 null이 아닌 빈 문자열로 받는다. 따라서 아래와 같이 빈 문자열에 대한 처리를 해주도록 한다. String field = "title"; if(field_ != null && !field_.equals("")) { field = field_; } St.. 공감수 0 댓글수 0 2023. 8. 15.
  • NoticeService 클래스 작성하기 이전글에서 NoticeService 클래스의 메소드에 필요한 SQL문을 작성했었다. https://myblog1128.tistory.com/110 Service 클래스와 메소드 생성하기위한 SQL문 작성 공지 목록 조회 1. getNoticeList() 사용자는 공지사항의 링크를 클릭하는 것과 같이 페이지 요청을 통해 공지를 볼 수 있다. 공지사항의 목록을 default로 정해진 갯수만큼 보여준다. 2. getNoticeList(int pa myblog1128.tistory.com 이제 메소드의 JDBC 코드와 같이 나머지 부분을 작성해보도록 하자. 아래의 코드에서 SQL 부분을 보면 field를 ?로 값을 준다면 'field'의 형식과 같이 문자열로 들어가기 때문에 setXXX() 메소드를 사용하지 않.. 공감수 0 댓글수 0 2023. 8. 14.
  • [Oracle] ROWNUM과 사용할 시 주의할 점 ROWNUM은 오라클 내부적으로 생성되는 가상 컬럼으로 자료의 일부를 잘라내서 이용할 때 사용한다. 즉, ROWNUM을 통해 조회된 컬럼이 몇 번째 컬럼인지 알 수 있다. 위의 사진과 같이 ID와 별개로 순서를 알 수 있는 것이 ROWNUM이다. 1. 먼저 ROWNUM은 아래와 같이 *(모든)과 같이 사용할 수 없다. SELECT ROWNUM, * FROM MEMBER; 왜냐하면 모든이라는 것은 전부 출력한다는 의미인데 이미 전부를 출력했는데 여기서 다른 것이 포함될 수 없기 때문이라고 할 수 있다. 이 부분은 아래와 같이 명시적으로 정의해준다면 사용할 수 있다. SELECT ROWNUM, MEMBER.* FROM MEMBER; 2. 1부터 시작하는 ROWNUM이 아니라면 서브쿼리를 사용하자. 이게 무슨.. 공감수 0 댓글수 0 2023. 8. 8.
  • Service 클래스와 메소드 생성하기위한 SQL문 작성 공지 목록 조회 1. getNoticeList() 사용자는 공지사항의 링크를 클릭하는 것과 같이 페이지 요청을 통해 공지를 볼 수 있다. 공지사항의 목록을 default로 정해진 갯수만큼 보여준다. 2. getNoticeList(int page) 페이지 요청을 통해 이전 이후의 페이지들도 볼 수 있다. 특정 페이지의 번호를 인자값으로 받아서 보여준다. 3. getNoticeList(String field, String query, int page) 공지를 검색하는 요청을 할 수 있다. 검색할 때 키워드의 분류와 검색 단어뿐만 아니라 검색했을 때 여러 개의 검색이 되었을 떼 페이지 또한 여러 개가 된다. 따라서 검색된 결과물에서 페이지를 클릭할 수 있어야 한다. 4. getNoticeCount() 5. g.. 공감수 0 댓글수 0 2023. 8. 3.
  • 기업형으로 만든다는 것은? 기업형으로 레이어를 나누는 이유 기업형으로 만든다는 것은 업무를 분담해서 프로그램을 만드는 것이라고 할 수 있다. DBMS에 접속해서 쿼리를 만들고, 입출력, 업무 처리 등을 하는 Controller와 View만으로 프로그램을 만들 수 있다. 하지만 업무가 커진다면 Controller(Servlet)에서 업무 서비스를 분리하는 것이 더 낫다. 업무 서비스를 분리함으로써 경험이 더 많은 사람이 관리하게 되면서 실수를 줄일 수 있고 유지보수도 더 편리해진다. 여기서 또 업무 서비스에서 데이터 서비스를 책임지는 DAO(데이터 서비스)를 분리해서 만들 수 있다. DAO를 만들게 되면 업무 서비스에서는 SQL 쿼리문 없이 JAVA만을 사용하고 DBMS에는 관여하지 않게 된다. 이렇게 데이터를 조작하는 역할을 DA.. 공감수 0 댓글수 0 2023. 8. 2.
  • JSTL의 function 이용하기 JSTL의 함수 사용하기 JSTL에서 funtion을 이용하기 위해서 아래의 taglib를 추가해주도록 한다. 이는 나 와 같이 사용한 것과 다르게 아래와 같이 ${fn : ...}을 이용해서 바로 사용할 수 있다. ${fn:toUpperCase(fileName)} toUpperCase는 말 그대로 대문자로 변환해주는 것으로 아래와 같이 파일명이 대문자로 변환된다. 이를 만약 데이터베이스에서 일일히 파일명을 바꾼다면 시간도 많이 걸리고 효율이 떨어져 불편할 것이다. 이 불편한 점을 개선할 수 있는 방법이 JSTL의 function이다. 대문자로 변환해주는 것뿐만 아니라 또 다른 다양한 기능들이 있다. 그 중에 하나인 endsWith을 설명해보고자 한다. ${fn:toUpperCase(fileName)} .. 공감수 0 댓글수 0 2023. 7. 31.
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.