본문 바로가기

SSR/Servlet & JSP9

서블릿 예외 페이지 스프링이 아닌 서블릿 컨테이너는 예외를 어떤 방식으로 처리할까? Exception(예외) 서블릿에서 로직을 처리하다 실제 우리가 접하는 Exception이 발생했을 때 WAS까지 예외가 전달되면서 처리 response.sendError(HTTP 상태 코드, 오류 메시지) Exception java의 main()를 실행하는 경우 main이라는 이름의 스레드가 실행됩니다. 실행 도중에 예외를 catch하지 못하고 처음 실행한 main() 메서드를 넘어서 예외가 던져지면, 예외 정보를 남기고 해당 스레드는 종료된다. 웹 애플리케이션 사용자 요청 별로 별도의 스레드가 할당이 되고, 해당 스레드가 서블릿 컨테이너 안에서 서블릿의 실제 코드를 실행한다. 웹 애플리케이션에서 예외가 발생했는데, try-catch로 예.. 2022. 1. 13.
서블릿 3.0 파일 업로드 서블릿 3.0에는 InputStream이나 외부 라이브러리를 사용하지 않고 웹 브라우저가 업로드한 파일을 읽어올 수 있는 기능이 추가되었습니다. HttpServletRequest의 getPart() 메서드를 이용해서 업로드 데이터에 접근합니다. 서블릿이 multipart 데이터를 처리할 수 있도록 설정합니다. Part 인터페이스는 miltipart/form-data POST 요청으로 수신받은 from 아이템이나 하나의 Part를 나타냅니다. @MultipartConfig 어노테이션을 사용하거나 web.xml에서 태그를 사용합니다. 어노테이션 사용방법 @MultipartConfig( fileSizeThreshold = 1024*1024, maxFileSize = 1024*1024*5, maxRequestS.. 2020. 5. 30.
Filter 필터를 사용하면 JSP/서블릿 등을 실행하기 이전에 요청이 올바른지 혹은 자원에 접근할 수 있는 권한을 가졌는지의 여부를 미리 처리할 수 있습니다. 또한 JSP/서블릿이 생성한 응답 데이터를 변경하거나 취소할 수 있는 기능 또한 구현이 가능합니다. 필터란? 필터를 간단히 이야기하면 HTTP 요청과 응답을 변경할 수 있는 재사용 가능한 클래스입니다. 필터는 클라이언트와 자원(jsp, servlet)의 사이에 위치하고 있으며 request정보를 알맞게 변경할 수 있으며 response(최종 자원의 요청 결과)를 알맞게 변경할 수 있습니다. 클라이언트와 자원 사이에 여러 개의 필터가 존재할 수 있으며 여러 개 생성된 필터들을 필터 체인(chain)을 형성하게 됩니다. 필터는 정보를 변경할 뿐만 아니라 흐름도 .. 2020. 5. 24.
DBCP를 이용해서 커넥션 풀 사용하기 커넥션 풀이란 데이터베이스와 연결된 커넥션을 미리 만들어서 풀(pool) 속에 저장해 두고 필요할 경우 커넥션을 풀(pool)에서 가져와 쓰고 다시 풀(pool)에 반환하는 기법입니다. 커넥션 풀은 풀 속에 미리 커넥션이 생성되어있기 때문에 커넥션을 생성하는 데 드는 연결 시간을 줄일 수 있습니다. 커넥션을 계속해서 재사용하기 때문에 생성되는 커넥션 수가 일정하게 유지됩니다. 우리가 MySQL을 이용해 커넥션을 얻는다고 한다면 아래 코드와 같이 연결하게 된다. try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException ex) { ex.printStackTrace(); } Connection con = null; Stateme.. 2020. 5. 20.
JSP SCOPE Servlet과 JSP를 개발하다 보면 변수를 많이 다루게 됩니다. 어떤 변수는 웹 애플리케이션에서 공유하고 싶은 변수가 있을 수도 있고, 어떤 변수는 사용자 별로 유지하고 싶은 변수가 있을 수 있습니다. 또 어떤 변수는 포워딩 되는 동안 유지하고 싶은 변수가 있습니다. 이렇게 변수를 어떤 범위 내에서 사용하기 위해서는 스코프(scope)라는 것에 대해서 알아야 합니다. Application 웹 어플리케이션이 시작되고 종료될 때까지 변수가 유지되는 경우 사용 애플리케이션이 소멸될 때까지 존재합니다. Session 세션객체가 새성 돼서 소멸될 때까지입니다. 여러 개의 요청이 들어와도 남아있습니다. 상태 유지를 위해서 사용됩니다. 웹 브라우저 별로 변수가 관리되는 경우 사용 Request 클라이언트로부터 요.. 2020. 5. 13.
HttpServletRequest/Response 서블릿을 공부하다 보면 요청, 응답이라는 용어가 많이 등장합니다. 클라이언트가 서버에게 보낸 요청을 추상화한 객체 HttpServletRequset와 서버가 클라이언트에게 응답하기 위한 정보를 추상화한 객체 HttpServletResponse에 대해서 공부합니다. 요청 / 응답 웹 브라우저에 URL을 입력하고 Enter을 입력하면 웹 브라우저는 도메인과 포트 번호를 이용해 서버에 접속합니다. 그다음 path정보, 클라이언트의 다양한 정보를 포함한 요청 정보를 서버에게 전송합니다. WAS는 웹 브라우저로부터 Servlet요청을 받게 되면 Requset , Response라는 객체를 생성합니다. Requset 객체에는 요청할 때 가지고 들어온 다양한 정보들을 담습니다. 또 WAS는 요청을 보낸 클라이언트에게.. 2020. 5. 9.
JSTL JSTL(JSP STANDARD TAG LIBRARY) JSP 개발을 단순화하기 위한 태그 library 태그를 이용한 제어구조 JSTL 은 크게 5가지의 태그 라이브러리를 제공해줍니다. CORE 제어의 행위를 담당하는 태그 라이브러리입니다, Formation 값을출력할때 화폐단위나 날짜를 포맷팅 하는 방식이 필요할 때 사용하는 태그 라이 러리 Functions 데이터를 el을이용해서 데이터 값을 추출할 때 가끔은 문자열을 쪼개서 사용하거나 소문자를 대문자로 바꾸거나 문자열 조작이 필요로 할 때 사용하는 함수들을 묶어놓는 것입니다. SQL, XML기능또한 있지만 사용을 권하지 않습니다. 그 이유는 MVC방법론이 나오기 전에 VIEW에서 비즈니스 로직을 전부 처리하기도 했을 때 사용했던 방식입니다. 사용하.. 2020. 4. 28.
View page 은닉하기. MVC2 패턴 VIEW PAGE 은닉 MVC2 model2 패턴에서 jsp파일에서 실행할 시 NullPointException이 발생합니다. 그 이유는 컨트롤러와 뷰를 분리했기 때문에 뷰에 해당되는 jsp파일에서 실행 시 첫 화면에 받아올 수 있는 비즈니스 로직이 구현되지 않았기 때문입니다. 또한 동적인페이지와, 설정, 라이브러리 등을 사용자가 직접 요청할 수 없도록 VIEW에 해당되는 페이지를 숨길 수 있도록 WAS에서 제공하는 파일이 있는데 바로 WEB-INF입니다. WEB-INF는 외부에 서비스되지않는 파일을 둘 수 있으며, 라이브러리나 설정파일이나 코드 파일을 둘 수 있습니다. 따라서 클라이언트가 요청할 수 있는 동적인 페이지나, 설정 파일을 분리시켜 사용해야 하며 그때 상대 경로로 지정한 코드들.. 2020. 4. 28.
JSP MVC model 1 MVC 패턴 MVC 패턴은 여러 가지 디자인 패턴 중에 하나입니다. 패턴은 어떻게 프로그램을 개발할 것인지의 개발 방법을 공식화한 패턴입니다. 패턴 중 MVC패턴은 사용자와 동적인 페이지상에서 상호작용을 하는 애플리케이션을 개발할 때 사용되는 방식입니다. 예를 들어 사용자가 웹페이지의 게시판에 글을 올리는 상황처럼 직접적으로 소통하는 부분들이 있는 곳에서 보편적으로 사용되는 패턴입니다. Model - 어플리케이션이 "무엇"을 할 것인지 비즈니스 영역의 로직을 처리합니다 JSP에서는 실질적으로 출력될 데이터입니다. *비즈니스 로직이란 : 업무에 필요한 데이터 처리를 수행하는 응용프로그램의 일부입니다. 예를 들어 사용자가 회원가입을 한다면 프로그래머는 아이디의 중복검사에 대해 서버와 소통하면서 데이터중 중복.. 2020. 4. 27.