본문 바로가기

✨ Back-end/Servlet36

[Servlet] 리스너(Listener) 이벤트 핸들러 사용법 리스너(이벤트 핸들러)란? 어떠한 일 즉, 이벤트가 발생하기를 기다리다가 실제 그 이벤트가 발생했을 때 수행되는 메소드를 가지고 있는 자바 객체 (이벤트 핸들러) 종류 1. ServletContext 2. HttpSession 3. HttpServletRequest 생성 삭제 ServletContext 서버 시작 시 서버 종료 시 HttpSession 클라이언트 접속 시 클라이언트 접속 종료 시 HttpServletRequest 클라이언트 서비스 요청 시 클라이언트 서비스 응답 시 그렇다면 리스너는 어떻게 등록할 수 있을까? 1. Filter (필터) 2. @WebListener (어노테이션) Filter 리스너의 기능을 활용하려면 이벤트가 발생했을 때 실행되기 원하는 내용을 해당 이벤트 핸들러 객체를 .. 2023. 8. 13.
[Servlet] 서블릿 전송방식 (Redirect와 Dispatcher) 서블렛을 사용하여 클라이언트의 요청에 응답하며 다양한 기능을 수행할 수 있다. 서블릿에서 redirect와 dispatcher는 서로 다른 두 가지 전송 방식을 나타내며 각각 다른 상황에서 사용된다. Redirect 클라이언트의 요청을 다른 URL로 전송하여 처리한다. 이는 일반적으로 다른 페이지로 이동하거나 완전히 다른 리소스로 이동할 때 사용된다. 클라이언트의 브라우저가 새로운 URL로 요청을 다시 보내고, 새로운 페이지나 리소스가 로드된다. HttpServletResponse 객체를 사용하여 수행된다. 그렇기 때문에 response 객체를 사용한다. 클라이언트에게 새로운 URL로 이동하도록 요청하는 것이기 때문에, 이 요청은 클라이언트에게 응답으로 보내진다. response.sendRedirect(.. 2023. 8. 11.
[Servlet] HttpServlet, GenericServlet, Servlet 각각의 정의 Servlet 인터페이스란? 서블릿 프로그램을 개발할 때 반드시 구현해야 하는 메소드를 선언하고 있는 인터페이스 init( ), service( ), destory( ), getServletConfig( ), getServletInfo( ) 등 5개의 메소드를 선언하는데, 이는 서블릿 프로그램 실행의 생명주기와 연관된 메소드이다. GenericServlet 클래스란? Servlet 인터페이스를 상속하여 클라이언트-서버 환경에서 서버단의 애플리케이션으로서 필요한 기능을 구현한 추상 클래스 service( ) 메소드를 제외한 모든 메소드를 재정의하여 적절한 기능으로 구현하였다. GenericServlet 클래스를 상속하면 애플리케이션의 프로토콜에 따라 메소드 재정의 구문을 적용해야한다. HttpServlet.. 2023. 8. 8.
[Servlet] 서블릿을 이용한 mvc1패턴과 mvc2패턴 MVC 패턴이란? Model-View-Controller의 약자로 애플리케이션을 세 가지 역할로 구분한 개발 방법론 모델(Model) : 비즈니스 영역의 로직을 처리 뷰(View) : 비즈니스 영역에 대한 프레젠테이션 (즉, 사용자가 보게 될 결과 화면)을 담당 컨트롤러(Controller) : 사용자의 입력 처리와 흐름 제어를 담당 MVC1 패턴 (MVC1 Pattern) 즉, Controller 영역에 View 영역을 같이 구현하는 방식이며, 사용자의 요청을 JSP가 전부 처리한다. 요청 받은 JSP는 JavaBean Service Class를 사용하여 웹브라우저 사용자가 요청한 작업을 처리하고 그 결과를 출력 Model1 구조의 장단점 장점 단점 구조가 단순하며 직관적이기 때문에 배우기 쉽다 출력을.. 2023. 8. 8.
[Servlet] 서블릿 컨테이너 정의 및 역할, HTTP 요청 처리 순서 서블릿 컨테이너란? 서블릿을 담고 관리해주는거. 구현되 있는 서블릿 클래스의 규칙에 맞게 서블릿을 관리하며 클라이언트의 요청을 받으면 HttpServletRequest와 HttpServletResponse 객체를 생성하여 post, get 여부에 따라 동적인 페이지를 생성해 응답한다. Tomcat (서블릿 컨테이너) 공식적으로 인정된 Servlet / JSP Container 중 가장 인기 있는 Servlet Container 중 하나는 Tomcat이다. https://tomcat.apache.org/ Apache Tomcat® - Welcome! The Apache Tomcat® software is an open source implementation of the Jakarta Servlet, Jak.. 2023. 8. 8.
서블릿(Servlet)과 CGI ( Common Gateway Interface ) 차이 서블릿이란? 자바 프로그래밍을 사용한 웹 어플리케이션 서버에서 실행되는 동적 컨텐츠를 생성해내는 자바 기반의 웹 컴포넌트이며 servlet container에 의해 관리된다. 바이트 코드로 컴파일된 플랫폼 독립적인 자바 클래스로 서블릿 컨테이너에 의해 동적으로 로드되고 실행된다. 서블릿의 주요 특징 클라이언트의 Request에 대해 동적으로 작동하는 웹 어플리케이션 기존의 정적 웹 프로그램의 문제점을 보완해 동적인 여러 기능을 제공 JAVA의 스레드를 이용해 동작 MVC패턴에서 컨트롤러로 이용 컨테이너에서 실행 보안 기능을 적용하기 쉬움 CGI란? 대화식 웹 페이지를 실행할 수 있도록 웹 서버에서 외부 프로그램을 처리하는 인터페이스 웹 서버와 외부 프로그램간의 데이터를 주고받는 방법에 대한 규격 웹 서버.. 2023. 8. 8.
[Servlet] 세션(Session)과 쿠키(Cookie) HTTP의 단점을 보안하기 위해서도 사용하며, 웹상에서 클라이언트의 상태를 유지하기 위한 방법으로 Session과 Cookie를 사용한다. Cookie란? ( 서버 -> 클라이언트 ) 서버가 클라이언트에 저장하는 정보로서 클라이언트 쪽에 필요한 정보를 저장해놓고 필요할 때 추출하는 것을 지원하는 기술 Servlet Container가 사용자 웹 브라우저에 key/value로 구성된 한 쌍의 텍스트 파일을 저장하는 방법 사용자 정보가 네트워크를 통해 서버와 클라이언트 사이에서 지속적으로 유지되기 때문에 네트워크의 부하를 초래 브라우저가 종료되는 순간에 같이 없어지지만, 만기일자를 설정함으로써 쿠키를 지속적으로 유지, 중단 CookieTest1 HTML 삽입 미리보기할 수 없는 소스 CookieTest2 H.. 2023. 8. 8.
Servlet - 서블릿(실행 코드 방식)과 JSP(스크립트 방식) 실행 코드 방식 - 서블릿 (Servlet) 스크립트 방식 - JSP (JavaServer pages) HTML 문서 안에 Java 코드 포함 Java 코드 안에 HTML 코드 포함 JSP 특징 - 자바기반 스크립트 언어 : 자바의 기능을 그대로 사용 가능 - HTTP에 대한 클라이언트의 요청 처리/ 응답 - 웹 어플리케이션에서 결과 화면을 생성할 때 주로 사용 JSP를 사용하는 이유 - 자바 언어에 기반하기 때문에 플랫폼에 독립적 (리눅스, 윈도우 등 운영체제에 상관없이 동) - 스프링이나 스트러츠와 같은 프레임워크와 완벽하게 연동 스크립트의 3요소 동적으로 출력 결과를 생성하기 위해 사용 스크립트 릿 표현식 선언부 표현식(Expression) 값을 출력 스크립트 릿(Scriptlet) 자바 코드를 실.. 2023. 8. 8.
HTTP 프로토콜의 특징 HTTP란? TCP / IP를 기반으로 한 지점에서 다른 지점으로 요청과 응답을 전송하는 프로토콜 Hyper Text Transfer Protocol로, TCP / IP 4계층에서 애플리케이션 계층에 해당하는 프로토콜로써, 전송계층에서 TCP를 사용하여 웹 브라우저와 웹 서버 간에 통신하는 프로토콜이다. HTTP는 비연결형과 무상태로 동작하는 프로토콜이라서 이전 연결 때의 상태정보를 서버가 유지해주지 않는다. 그러므로 상태정보를 일정 시간동안 지속해서 유지해주는 기술이 필요하다. 특징 상태가 없는(stateless) 프로토콜. 즉, 데이터를 주고 받기 위한 각각의 데이터 요청이 서로 독립적으로 관리 비 연결성 ( Connectionless ) 클라이언트 - 서버 구조 무상태 ( Stateless ) HT.. 2023. 8. 8.
[Servlet / 오류] Server Tomcat v9.0 Server at localhost failed to start. 개발을 하다보면 에러를 해결해야 할 떄가 굉장히 많다. 보통 오타가 나는 경우인데, 이번에도 그렇다.. 서블릿 컨트롤러의 경로가 똑같다... 이런 어처구니 없는 실수때문에 서버를 날리고 다시 잡아보기도하고 별짓을 다했다. 콘솔창을 잘보자. 이와 같이 서블릿 경로를 바꿔주니 정상적으로 오류가 해결되었다. 2023. 3. 6.
[Servlet / JSP / SQL / Template / Session] 회원 관리 폼 만들기 (9) - 게시물 수정 (UPDATE) 이번에는 CRUD의 마지막인 수정(UPDATE)를 해보려고한다. 먼저 글쓰기를 눌러 글을 아무렇게나 등록해보았다. 앞에서 했던대로 내 아이디로 들어간 작성자 이름으로 글이 등록됐다 삭제까지 CRD를 모두 구현하였다. board_detail.jsp 먼저 상세보기 게시글에서 수정을 누르면 board_update.bo로 이동하게 만들자. 그리고 이동할때 {board.boardNum} 데이터를 가져가야한다. BoardController.java 서블릿 수정(UPDATE)는 다른 것들과 다르게 서블릿에서 작업이 두번 필요하다. 먼저 첫번째 board_update.bo로 받은 곳을 보자. boardNum을 받아와 알맞는 int로 변환 시켜주었고, 앞에 게시글 상세조회때 만들었던 selectBoardDetail을 사.. 2023. 3. 2.
[Servlet / JSP / SQL / Template / Session] 회원 관리 폼 만들기 (8) - 댓글과 게시물 삭제 (DELECT) 저번 포스팅에서는 댓글 등록까지 알아보았다. 이번엔 댓글 삭제와 게시물 삭제를 해보려고한다. 먼저, board_detail.jsp 이곳에서 댓글 삭제 버튼을 만들어주고, 경로를 지정한다. 이때, hidden으로 받았던 댓글 번호를 가지고가야한다. 경로는 서블릿의 reply_delete.re ReplyController.java 서블릿 hidden으로 가지고 왔던 boardNum을 int 자료형으로 바꿔준다. 이후 바로 mapper로 가자. reply-mapper.mxl 이곳에와서 삭제 쿼리를 사용해준다. boardNum 값이 일치하는 데이터 쿼리만 삭제할 것이다. 매개변수 및 리턴 타입 결정 방법(우선적으로 실행 시 쿼리를 작성) 매개변수 : 쿼리 실행 시 빈 값을 채울 용도 1. 쿼리에서 채워 줄 값이.. 2023. 3. 2.