백엔드/서블릿&JSP
-
JSP 데이터 저장소백엔드/서블릿&JSP 2021. 1. 14. 12:56
서블릿과 마찬가지로 jsp도 데이터를 다른 리소스로 보낼 경우가 생긴다. 사실 jsp만으로 코드를 짜는 일은 많지 않아서 서블릿과 엄격히 분리하는건 괜한 일 같긴하다. 하지만 어떤건 서블릿과 공유되고 어떤건 공유되지 않는지 알아야 사용을 수월하게 할 수 있다고 생각한다. jsp에서 데이터를 저장할 수 있는 객체는 총 4개가 존재한다. 이름 용도 + 데이터 사용 범위 라이프 사이클 pageContext 해당 jsp 페이지 관련 흐름 제어 및 내장 객체 관리하는 객체 해당 jsp 페이지 내에서만 데이터 사용 가능 해당 페이지를 벗어나면 데이터 사용 불가 request 클라이언트의 요청을 객체화 한 것 request를 전달받은 페이지에서 데이터 사용 가능 페이지를 벗어나도 requst가 전달된 페이지라면 데이..
-
JSP의 내장객체, 암시적 객체(implicit object) - application, pageContext, page백엔드/서블릿&JSP 2021. 1. 14. 10:51
JSP는 총 9개의 내장 객체, 암시적 객체를 가진다. 암시적 객체란 개발자가 따로 명시하지 않아도 이미 JSP 자체에서 자동으로 제공하는 객체를 의미한다. 암시적 객체는 아래와 같이 총 9개가 존재한다. 이름 관련 API 설명 Request javax.servlet.http.HttpServletRequest jsp에서 클라이언트의 요청을 객체화 한 것 Response javax.servlet.http.HttpServletResonse jsp에서 클라이언트의 요청에 대한 회신을 객체화 한 것 Config javax.servlet.jsp.jspwriter 초기화 단계를 위해 입력한 정보를 저장하는 객체 Application javax.servlet.ServletContext 어플리케이션(프로젝트) 단위의 ..
-
서블릿 데이터 저장소 - request, session, ServletContext백엔드/서블릿&JSP 2021. 1. 14. 00:26
서블릿을 이용하다보면 서블릿과 서블릿 사이 혹은 다른 리소스로 보내야할 때가 있다. 그럴때 이용할 수 있는 서블릿에서 제공하는 내장 객체가 있다. request, session, servletContext가 바로 그것이다. 2021/01/06 - [백엔드/서블릿&JSP] - javax.servlet 패키지 javax.servlet 패키지 import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; im.. sgcompu..
-
서블릿 필터(filter)에 대해서백엔드/서블릿&JSP 2021. 1. 13. 15:45
2021/01/06 - [백엔드/서블릿&JSP] - javax.servlet 패키지 javax.servlet 패키지 import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; im.. sgcomputer.tistory.com 위와 같이 이미 servlet 패키지를 설명하면서 서블릿 필터에 대해서 이미 한번 포스팅한 적이 있다. 서블릿의 필터란 서블릿으로 전달되는 클라이언트의 request 혹은 서블릿에서 클라이언트로 ..
-
서블릿에서 한글 문자 인코딩하기백엔드/서블릿&JSP 2021. 1. 13. 12:32
문자 인코딩이란? 컴퓨터는 숫자 0,1로 모든 것을 인식한다. 그러나 사람은 0,1로 컴퓨터와 소통을 하기에는 제한적인 부분이 많다. 이에 사람들은 문자 코드란 것을 만들었다. 문자에 대응하는 숫자를 만들어 사람은 문자를 입력하되 컴퓨터는 숫자로 인식하도록 한 것이다. 하지만 이러한 문자 코드들은 나라마다 문자가 다른만큼 호환이 되지 않는 등의 문제가 있었다. 이에 따라 웹 상에선 이러한 문자들을 온전히 표현하기 위해 인코딩이란 것을 한다. 특히 한글의 경우 영어와는 문자 코드 자체가 다르고 복잡성때문에 이러한 인코딩을 하지 않으면 웹 상에서 제대로 표현되지 않는다. 인코딩 테스트입니다 어떻게 나올까요? 위와 같은 코드가 있다고 해보자. 어떠한 인코딩없이 그냥 바로 실행하면 아래와 같은 결과물이 나온다...
-
서블릿 기초 형태백엔드/서블릿&JSP 2021. 1. 13. 11:09
2020/10/30 - [백엔드/서블릿&JSP] - 서블릿(Servlet)이란? 서블릿(Servlet)이란? 서블릿이란? 자바를 기반으로 하는 웹페이지를 동적으로 만들어줄 수 있는 일종의 프로그램을 말한다. 사실 좁게 보면 서블릿이란 위와 같은 기능을 하는 자바의 클래스를 뜻한다. 넓게보면 위 sgcomputer.tistory.com 위와 같이 이전에 서블릿에 관한 글을 썼다. 간단하게 요약하면 서블릿을 만들기 위해서 HttpServlet 추상 클래스 상속 받아야 한다. 그리고 해당 추상 클래스는 서블릿 구동에 필요한 모든 것(init(), destroy(), service())이 이미 구현되있다. 그래서 아래와 같이 이클립스를 통해 서블릿을 생성하면 아래와 같은 기본 폼이 제공된다. 그리고 이걸 바로 ..
-
forward와 sendRedirect 차이백엔드/서블릿&JSP 2021. 1. 11. 21:15
RequestDispatcher와 forward란? 클라이언트로부터 요청을 받고 이를 다른 리소스(서블릿, html, jsp)로 넘겨주는 역할을 하는 인터페이스. RequestDispatcher는 javax.servlet 패키지에 포함된 인터페이스로 위 정의와 같은 역할을 한다. 그리고 RequestDispatcher 인터페이스는 두 가지 메서드를 가지고 있다. 그 중 하나가 forward()다. forward()는 위에서 말한 RequestDispatcher 인터페이스의 역할을 수행하는 메서드다. forward()은 사용자 요청에 의해 컨테이너에서 생성된 request와 response를 다른 리소스(서블릿, jsp, html)로 넘겨주는 역할을 한다. 사용법은 아래 코드와 같다. @WebServlet..
-
세션과 쿠키(Session과 Cookie)백엔드/서블릿&JSP 2021. 1. 7. 18:37
Http의 Stateless 우리가 흔히 웹 서비스를 통해 통신할 때 Http 프로토콜을 이용하게 된다. 이때 Http 프로토콜의 큰 특징 중 하나는 상태유지없음(Stateless)라는 것이다. 간단히 말해서 클라이언트가 요청(reqeust)를 보내고 이에 대해 서버가 응답(response)을 하면 통신 종료. 즉 클라이언트가 서버에 많은 요청을 보내도 서버는 매번 새로운 요청으로 인식한다. Stateless의 한계 인터넷 초창기 대부분의 웹 서비스는 이미 만들어진 정보를 제공하는 경우가 대부분이었다. 이때는 굳이 세션, 쿠키 같은 개념이 존재할 필요가 많지 않았다. 서버는 만들어진 자료만 넘겨주면되지, 굳이 클라이언트의 상태를 기억할 필요가 없기 때문이다. 하지만 사용자 요구가 많아지고, 웹 서비스의 ..