본문 바로가기
반응형

JSP/성낙현의 JSP 자바 웹 프로그래밍20

(Fin) 로컬 웹 서버에 배포하기 Preface 이번 장을 끝으로 JSP 책을 모두 마쳤다. 아무리 오래 걸려도 한 달 내로 책을 끝낼 계획이었지만, 생각보다 공부할 내용들도 많고 복잡한 내용들도 있어서 기존 계획보다 조금 더 걸렸다. 그래도 JSP를 공부하며 웹 애플리케이션, 웹 서버 등 웹과 관련된 다양한 지식들을 얻을 수 있었고, 간단한 프로젝트들을 진행하며 나만의 프로젝트를 진행하고 싶다는 욕심도 생긴 것 같다. 8월 중순에 있을 정보처리기능사 실기 시험을 대략 한 달 정도 준비할 계획이라 그 전까진 간단한 토이 프로젝트롤 진행해볼 생각이다. 시험을 친 후엔 Spring을 공부하며 더욱 다양한 프로젝트를 진행하지 않을까 싶다. 코테/면접/포트폴리오 등 취업 준비도 해야 하고 node와 aws도 공부하고 싶고... 할 일이 너무 많.. 2023. 7. 6.
네이버 검색 API를 활용한 검색 결과 출력하기 Preface 이번 장에선 네이버의 검색 API를 활용하여 검색 결과를 출력하는 화면을 만들었다. 오픈 API를 활용하는 방법은 이미 유튜브에서 여러 번 접해서 익숙하지만, 자바스크립트와 jQeury Ajax를 사용하는 코드는 아직도 조금씩 헷갈린다. 1. API란? - API(Application Programming Interface): 응용 프로그램 간에 상호 작용하기 위한 규칙과 기능을 제공하는 인터페이스 → 소프트웨어 개발에서 다른 응용 프로그램이나 서비스와 상호 작용할 수 있도록 도와주는 중간 계층 - 오픈 API: 서비스를 제공하는 업체에서 외부 개발자가 자사 서비스의 기능을 간단히 호출해 이용할 수 있도록 공개해둔 API 1) 주로 HTTP 프로토콜로 통신한다. 2) 응답 데이터의 형태는 .. 2023. 7. 6.
SMTP를 활용한 메일 전송하기 Preface 이번 장에선 SMTP를 사용해 메일 전송 폼을 작성해봤다. 코드 자체는 어려운 부분이 없어 금방 작성했지만, 계속해서 아래와 같은 오류가 발생했다. DEBUG: setDebug: JavaMail version 1.4.7 DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle] DEBUG SMTP: useEhlo true, useAuth true DEBUG SMTP: useEhlo true, useAuth true DEBUG SMTP: trying to connect to host "smtp.naver.com", port 465, isSSL false javax.. 2023. 7. 5.
웹소켓으로 채팅 프로그램 만들기 Preface 이번 장에선 웹 소켓을 이용해 간단한 채팅 프로그램을 구현해봤다. "이것이 자바다" 책에서 소켓 클래스를 이용해 채팅 프로그램을 만드는 방식은 생각보다 꽤 복잡했던 것으로 기억하는데, 어노테이션을 사용해 코드를 작성하니 길이도 짧아지고 가독성도 좋아진 것 같다. 1. 소켓이란? - 소켓(Socket): 서버와 클라이언트가 양방향 통신을 할 수 있게 해주는 소프트웨어 → IP 주소와 포트 번호로 이루어진다. - 자바에선 소켓 기능을 클래스로 만들어 지원한다. 1) 서버에서 서버용 소켓(ServerSocket)을 생성한 후, 클라이언트의 접속을 기다린다. 2) 클라이언트가 소켓을 생성하여 서버로 연결을 요청한다. 3) 서버가 접속을 허가(accept)한다. 4) 서버와 클라이언트가 각각 통신을.. 2023. 6. 30.
JSP, Oracle을 사용한 자료실형 게시판(MVC 패턴) Preface 이번 장에선 MVC 패턴을 이용해 비밀번호로 사용자를 검증하는 자료실형 게시판을 만들었다. 첨부파일을 업로드할 수 있는 점을 제외하면 전체적인 기능과 코드는 이전에 제작한 회원제 게시판과 비슷하다. 다만, 서블릿을 이용해 각각의 기능을 분리하여 코드를 작성하다보니 파일도 많아지고 원하는 기능을 추가하기도 복잡해진 것 같다. 글을 업로드한 후 코드를 다시 한 번 훑어보며 부족한 부분을 수정할 생각이다. MVC 패턴을 사용한 코드 작성을 간략히 정리하자면 1) DTO를 통해 사용할 변수를 선언 2) DAO에서 DB 연결 및 사용할 메서드를 정의 3) 서블릿, 즉 자바 클래스(*.Controller)에서 메서드를 사용하여 작업 처리 4) 뷰(jsp 파일)를 통해 화면에 내용 출력 순인 것 같다... 2023. 6. 29.
서블릿(Servlet) Preface 이번 장에선 서블릿에 대해 공부했다. 서블릿을 사용해 코드를 작성하니 확실히 코드 자체가 간결해지긴 했지만, 여러 파일을 연결하는 작업이 생각보다 귀찮고 까다롭다. JSP의 개념 부분은 이번 장이 마지막인 것 같다. 책 전체에 걸쳐 꽤나 복잡한 작업들이 많이 있었지만, 개념 자체가 어려운 것은 아니라 여러 번 코드를 작성하다보면 자연스럽게 손에 익을 듯하다. 1. 서블릿이란? - 서블릿(Servlet): JSP가 나오기 전, 자바로 웹 애플리케이션을 개발할 수 있도록 만든 기술 → 서버 단에서 클라이언트의 요청을 받아 처리한 후 응답하는 역할 - 서블릿의 특징 1) 클라이언트의 요청에 대해 동적으로 작동하는 웹 애플리케이션 컴포넌트이다. 2) MVC 모델에서 컨트롤러 역할을 한다. 3) 모.. 2023. 6. 26.
파일 업로드 및 다운로드 Preface 이번 장에선 DB를 통해 파일을 업로드하고 웹 상에서 업로드한 파일을 다운로드하는 방법을 공부했다. 대부분의 내용은 쉽게 이해하고 넘어갈 수 있었지만, 파일 다운로드 파트의 IOStream과 User-Agent, CharacterSet 설정 부분이 다소 복잡했다. 뒷장의 MVC 패턴 게시판을 제작하며 코드를 한 번 더 작성해보면 익숙해지지 않을까 싶다. - 라이브러리 다운로드: http://servlets.com/cos/ Servlets.com | com.oreilly.servlet servlets.com 1. 파일 업로드 - 파일 업로드용 작성 폼을 제작할 때 주의할 사항 1) method의 속성을 반드시 post로 지정해야 한다. 2) enctype의 속성을 multipart/form-.. 2023. 6. 23.
JSP 표준 태그 라이브러리(JSTL) Preface 이번 장에선JSP의 라이브러리인 JSTL을 공부했다. 기본적인 HTML 태그 형태에 EL을 추가한 느낌이라 특별히 어려운 부분은 없었다. 액션 태그 부분에서도 언급했지만, JSP의 특성상 스크립틀릿을 사용하면 코드가 지저분해지는 탓인지 JSP는 다른 언어에 비해 가독성을 높이기 위한 부가적인 기능이 많이 있는 것 같다. JSP를 제대로 사용하려면 적어도 Core 태그 하위의 태그들 정도는 확실히 익히고 있어야 하지 않을까 싶다. - 라이브러리 다운로드: https://mvnrepository.com/artifact/javax.servlet/jstl/1.2 1. JSTL이란? - JSTL(JSP Standard Tag Library): JSP에서 자주 사용하는 조건문, 반복문 등을 처리해주는.. 2023. 6. 21.
표현 언어(EL: Expression Language) Preface 이번 장에선 표현 언어에 대해 공부했다. 딱히 어려운 부분은 없었는데, 아직까진 내장 객체를 이용하던 이전 방식과의 차이점 및 EL만의 장점을 잘 모르겠다. 뒷장을 공부하며 점차 EL의 효용성을 느낄 수 있다고 하니 기본적인 문법을 잘 이해하고 넘아가자. 1. 표현 언어란? - 표현 언어(Expression Language): 변수의 값을 출력할 때 사용하는 스크립트 언어 1) 4가지 영역에 저장된 값을 출력할 때 사용한다. 2) 사용법이 매우 간결하다. 3) 예외와 형변환에 관대하다. - 표현 언어의 기능 1) JSP 내장 객체의 영역에 담긴 속성을 사용할 수 있다. 2) 산술, 비교, 논리 연산이 가능하다. 3) 자바 클래스에 정의된 메서드를 호출할 수 있다. 4) 표현 언어만의 객체를.. 2023. 6. 19.
JSP, Oracle을 사용한 회원제 게시판(페이징 O) Preface 이번 장에선 지난 장에서 제작한 회원제 게시판에 페이징 기능을 추가했다. 딱히 복잡하거나 어려운 부분은 없어 간단한 쿼리문과 실행 예시만 업로드한다. 전체 코드는 깃허브 리파지토리에 저장되어 있다. 1. 페이징을 위한 설정 - 페이징(paging): 목록이 길 때 페이지별로 나눠서 보여주는 기능 - 페이징을 사용하지 않을 때 발생할 수 있는 문제점 1) 가독성 저하 2) 페이지 로딩 속도 저하 3) DB 과부하 - 페이징 처리를 위한 설정값 1) 한 페이지에 출력할 게시물의 개수 2) 한 화면(블록)에 출력할 페이지 번호의 개수 - rownum: 오라클에서 생성된 모든 테이블에서 사용할 수 있는 가상의 컬럼으로, SELECT 쿼리문으로 추출하는 데이터에 순차적으로 부여되는 순번 → 물리적으.. 2023. 6. 19.